[{"id":121761,"date":"2026-03-04T16:35:33","date_gmt":"2026-03-04T16:35:33","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121761"},"modified":"2026-03-05T22:37:16","modified_gmt":"2026-03-05T22:37:16","slug":"breadcrumb-block-filters","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/breadcrumb-block-filters\/","title":{"rendered":"Breadcrumb block filters"},"content":{"rendered":"<p class=\"wp-block-paragraph\">WordPress 7.0 introduces a new <code>Breadcrumbs<\/code> <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> that can be placed once \u2014 such as in a theme\u2019s <span tabindex='0' class='glossary-item-container'>header<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Header<\/span> <span class='glossary-item-description'>The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor\u2019s opinion about your content and you\/ your organization\u2019s brand. It may also look different on different screen sizes.<\/span><\/span><\/span> \u2014 and automatically reflects the site\u2019s navigation hierarchy.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"98\" data-attachment-id=\"121901\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/breadcrumb-block-filters\/screenshot-2026-03-04-at-3-05-05-pm\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-scaled.png\" data-orig-size=\"2560,245\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-04 at 3.05.05\u202fPM\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-300x29.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-1024x98.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-1024x98.png\" alt=\"\" class=\"wp-image-121901\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-1024x98.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-300x29.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-763x73.png 763w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-1536x147.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.05.05-PM-2048x196.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Breadcrumbs block in a\u00a0header template part\u00a0using Twenty Twenty-Five theme, here showing the trail for a child page<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two filters provide developers with control over the breadcrumb trail output.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">block_core_breadcrumbs_items<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This <span tabindex='0' class='glossary-item-container'>filter<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Filter<\/span> <span class='glossary-item-description'>Filters are one of the two types of Hooks <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Hooks\">https:\/\/codex.wordpress.org\/Plugin_API\/Hooks<\/a>. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.<\/span><\/span><\/span> allows developers to modify, add, or remove items from the final breadcrumb trail just before rendering. Each item is an array with three properties:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>label<\/code> (string) \u2014 the breadcrumb text.<\/li>\n\n\n\n<li>an optional <code>url<\/code> (string) \u2014 the breadcrumb link <span tabindex='0' class='glossary-item-container'>URL<span class='glossary-item-hidden-content'><span class='glossary-item-header'>URL<\/span> <span class='glossary-item-description'>A specific web address of a website or web page on the Internet, such as a website\u2019s URL www.wordpress.org<\/span><\/span><\/span>.<\/li>\n\n\n\n<li>an optional <code>allow_html<\/code> (bool) \u2014 whether to allow <span tabindex='0' class='glossary-item-container'>HTML<span class='glossary-item-hidden-content'><span class='glossary-item-header'>HTML<\/span> <span class='glossary-item-description'>HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.<\/span><\/span><\/span> in the label. When <code>true<\/code>, the label will be sanitized with <code>wp_kses_post()<\/code>, allowing only safe HTML tags. When <code>false<\/code> or omitted, all HTML will be escaped with <code>esc_html()<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Example: Prepend a custom breadcrumb item<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">  add_filter( 'block_core_breadcrumbs_items', function ( $breadcrumb_items ) {\n        array_unshift( $breadcrumb_items, array(\n                'label' =&gt; __( 'Shop', 'myplugin' ),\n                'url'   =&gt; home_url( '\/shop\/' ),\n        ) );\n\n        return $breadcrumb_items;\n  } );<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">block_core_breadcrumbs_post_type_settings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When a post type has multiple taxonomies or when a post is assigned to multiple terms within a <span tabindex='0' class='glossary-item-container'>taxonomy<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Taxonomy<\/span> <span class='glossary-item-description'>A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. <a href=\"https:\/\/codex.wordpress.org\/Taxonomies#Default_Taxonomies\">https:\/\/codex.wordpress.org\/Taxonomies#Default_Taxonomies<\/a>.<\/span><\/span><\/span>, there could be numerous ways to construct the breadcrumbs trail. For example in a post that has both categories and tags a user might want to show in the breadcrumbs trail the categories (default), the tags and\/or select a specific <span tabindex='0' class='glossary-item-container'>tag<span class='glossary-item-hidden-content'><span class='glossary-item-header'>tag<\/span> <span class='glossary-item-description'>A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)<\/span><\/span><\/span>.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"390\" data-attachment-id=\"121909\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/breadcrumb-block-filters\/screenshot-2026-03-04-at-3-31-00-pm\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-1.png\" data-orig-size=\"952,390\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-04 at 3.31.00\u202fPM\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-300x123.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-1.png\" data-id=\"121909\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-1.png\" alt=\"\" class=\"wp-image-121909\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-1.png 952w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-300x123.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.31.00-PM-766x314.png 766w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\"><\/a><figcaption class=\"wp-element-caption\">categories<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"390\" data-attachment-id=\"121910\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/breadcrumb-block-filters\/screenshot-2026-03-04-at-3-30-53-pm\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-1.png\" data-orig-size=\"952,390\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-04 at 3.30.53\u202fPM\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-300x123.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-1.png\" data-id=\"121910\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-1.png\" alt=\"\" class=\"wp-image-121910\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-1.png 952w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-300x123.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.53-PM-766x314.png 766w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\"><\/a><figcaption class=\"wp-element-caption\">tags<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"390\" data-attachment-id=\"121912\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/breadcrumb-block-filters\/screenshot-2026-03-04-at-3-30-45-pm\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-1.png\" data-orig-size=\"952,390\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-04 at 3.30.45\u202fPM\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-300x123.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-1.png\" data-id=\"121912\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-1.png\" alt=\"\" class=\"wp-image-121912\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-1.png 952w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-300x123.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-04-at-3.30.45-PM-766x314.png 766w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\"><\/a><figcaption class=\"wp-element-caption\">specific tag<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This filter controls which taxonomy and terms appear in the Breadcrumbs block trail for posts that use taxonomy-based breadcrumbs. It applies to non-hierarchical post types (e.g., posts, products) or hierarchical post types when the block\u2019s \u201cPrefer taxonomy terms\u201d setting is enabled (under advanced settings). It does not affect hierarchical ancestor-based trails (e.g., parent\/child pages).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The filter receives three parameters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>$settings<\/code> (array) \u2014 an empty array by default. Callbacks should populate the array and return it with the following optional keys:\n<ul class=\"wp-block-list\">\n<li><code>taxonomy<\/code> (string) \u2014 taxonomy slug to use for breadcrumbs.<\/li>\n\n\n\n<li><code>term<\/code> (string) \u2014 term slug to prefer when the post has multiple terms in the selected taxonomy.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>$post_type<\/code> (string) \u2014 the post type slug.<\/li>\n\n\n\n<li><code>$post_id<\/code> (int) \u2014 the post ID, enabling per-post customization.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Fallback behavior<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the preferred taxonomy doesn\u2019t exist or has no terms assigned, fall back to the first available taxonomy with terms assigned.<\/li>\n\n\n\n<li>If the preferred term doesn\u2019t exist or isn\u2019t assigned to the post, fall back to the first term<\/li>\n\n\n\n<li>If the post has only one term, that term is used regardless of setting<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Example 1: Set a preferred taxonomy and term per post type<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_filter( 'block_core_breadcrumbs_post_type_settings', function( $settings, $post_type ) {\n\tif ( $post_type === 'post' ) {\n\t\t$settings['taxonomy'] = 'category';\n\t\t$settings['term'] = 'news';\n\t}\n\tif ( $post_type === 'product' ) {\n\t\t$settings['taxonomy'] = 'product_tag';\n\t}\n\treturn $settings;\n}, 10, 2 );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example 2: Choose a specific term per post<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_filter( 'block_core_breadcrumbs_post_type_settings', function ( $settings, $post_type, $post_id ) {\n\tif ( $post_type !== 'post' ) {\n\t\treturn $settings;\n\t}\n\t\n\t$terms = get_the_terms( $post_id, 'category' );\n\n\tif ( $terms ) {\n\t\t$settings['taxonomy'] = 'category';\n\t\t$settings['term']     = end( $terms )-&gt;slug;\n\t}\n\n\treturn $settings;\n}, 10, 3 );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">See <span tabindex='0' class='glossary-item-container'>Gutenberg<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Gutenberg<\/span> <span class='glossary-item-description'>The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc. <a href=\"https:\/\/wordpress.org\/gutenberg\/\">https:\/\/wordpress.org\/gutenberg\/<\/a><\/span><\/span><\/span> pull requests: <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74169\">74169<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73283\">73283<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74170\">74170<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/karolmanijak\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>karolmanijak<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/ntsekouras\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ntsekouras<\/a> for the implementation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/karolmanijak\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>karolmanijak<\/a> for technical review.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/mcsf\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mcsf<\/a> for copy review.<\/p>\n\n\n<a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F04%2Fbreadcrumb-block-filters%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>WordPress 7.0 introduces a new Breadcrumbs blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single [&hellip;]<\/p>\n","protected":false},"author":17988527,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[5676,1443],"class_list":["post-121761","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-0","tag-dev-notes","mentions-karolmanijak","mentions-mcsf","mentions-ntsekouras","author-ntsekouras"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vFT","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/17988527"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121761"}],"version-history":[{"count":25,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121761\/revisions"}],"predecessor-version":[{"id":121943,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121761\/revisions\/121943"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":17988527,"name":"Nik Tsekouras","url":"http:\/\/nikos-tsekouras.com\/en\/","description":"","link":"https:\/\/profiles.wordpress.org\/ntsekouras\/","slug":"ntsekouras","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/028ce05e0837e534b23aac17966d05820d6a0dc71a3f01bacf18a777e9e0a456?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/028ce05e0837e534b23aac17966d05820d6a0dc71a3f01bacf18a777e9e0a456?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/028ce05e0837e534b23aac17966d05820d6a0dc71a3f01bacf18a777e9e0a456?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/17988527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"replies":[[{"id":48467,"parent":0,"author":14222020,"author_name":"Hudson Atwell","author_url":"https:\/\/gbti.network","date":"2026-03-04T17:53:44","content":{"rendered":"<p>\ud83d\udc4f nice, ty.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/breadcrumb-block-filters\/#comment-48467","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/14222020"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121761"}]}}]],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":1443,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/","name":"dev-notes","slug":"dev-notes","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/1443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121869,"date":"2026-03-04T14:34:18","date_gmt":"2026-03-04T14:34:18","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121869"},"modified":"2026-03-04T17:54:31","modified_gmt":"2026-03-04T17:54:31","slug":"customisable-navigation-overlays-in-wordpress-7-0","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/customisable-navigation-overlays-in-wordpress-7-0\/","title":{"rendered":"Customisable Navigation Overlays in WordPress 7.0"},"content":{"rendered":"<p class=\"wp-block-paragraph\">WordPress 7.0 introduces Customisable Navigation Overlays, giving site owners full control over their mobile navigation menus using the <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> editor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Previously, when a visitor tapped a hamburger menu icon on a mobile device, WordPress displayed a fixed default overlay with no support for customisation. The design, layout, and content were locked. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Customisable Navigation Overlays remove this restriction entirely \u2014 any overlay can now be built from blocks and patterns in the Site Editor. This includes a dedicated\u00a0<strong>Navigation Overlay Close<\/strong>\u00a0block for placing and styling a close button anywhere within the overlay.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How overlays work<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Navigation overlays are implemented as template parts using a new\u00a0<code>navigation-overlay<\/code>\u00a0template part area, managed principally through the Navigation block\u2019s overlay controls in the Site Editor. Because they are template parts, they can also be found and edited via the\u00a0<strong>Patterns<\/strong>\u00a0section in the Site Editor <span tabindex='0' class='glossary-item-container'>sidebar<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Sidebar<\/span> <span class='glossary-item-description'>A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.<\/span><\/span><\/span>. Each overlay is assigned to a Navigation block \u2014 while the same overlay can be referenced by more than one, a one-to-one relationship is the most common pattern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What goes inside an overlay is entirely up to the author. As a standard block canvas, it can contain any block \u2014 navigation, social icons, a search field, a site logo, calls to action\u2026or any combination! A Navigation block is the typical inclusion but is not a requirement. Because overlays only function correctly when rendered by a Navigation block, overlay template parts are intentionally excluded from the general block inserter \u2014 this prevents them from being inserted accidentally into other parts of a template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The feature is opt-in: by default, the Navigation block continues to use the standard overlay behaviour from previous versions of WordPress. A custom overlay can be activated in three ways:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Creating a new overlay<\/strong>\u00a0\u2014 via the\u00a0<strong>Overlays<\/strong>\u00a0section in the Navigation block\u2019s sidebar controls in the Site Editor<\/li>\n\n\n\n<li><strong>Selecting an existing overlay<\/strong>\u00a0\u2014 from the same controls, choosing from any overlays already created or bundled with the active theme<\/li>\n\n\n\n<li><strong>Theme pre-assignment<\/strong>\u00a0\u2014 a theme can reference a bundled overlay directly in the Navigation block markup (covered in the developer section below)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">For theme developers: bundling overlays with your theme<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Themes can ship pre-built navigation overlays so they are available as soon as the theme is activated. The recommended approach is to provide both a default overlay template part and a set of overlay patterns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Template parts vs patterns<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding the distinction helps decide how to structure an overlay offering:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A\u00a0<strong>template part<\/strong>\u00a0is the overlay itself \u2014 the component that gets rendered when a Navigation block uses an overlay. Shipping a template part means a ready-to-use overlay is available from the moment the theme is activated.<\/li>\n\n\n\n<li><strong>Patterns<\/strong>\u00a0are design options that appear in the\u00a0<strong>Design<\/strong>\u00a0tab when editing a navigation overlay in the Site Editor. Selecting a pattern replaces the current overlay content with the pattern\u2019s block markup, letting users switch between distinct designs.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A patterns-only approach is also valid \u2014 useful when a theme wants to offer design options without pre-applying an overlay automatically. In this case, users create a new overlay via the Navigation block\u2019s controls and pick from the theme\u2019s patterns as a starting point.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Updating your Theme<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. Register the template part in\u00a0<code>theme.json<\/code><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Registering the template part in\u00a0<code>theme.json<\/code>\u00a0is required. Without it, the template part is assigned the\u00a0<code>uncategorized<\/code>\u00a0area and will not be recognised by the Navigation block as an overlay.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add an entry to the\u00a0<code>templateParts<\/code>\u00a0array, setting\u00a0<code>area<\/code>\u00a0to\u00a0<code>navigation-overlay<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n{\n    \"templateParts\": [\n        {\n            \"area\": \"navigation-overlay\",\n            \"name\": \"my-custom-overlay\",\n            \"title\": \"My Custom Overlay\"\n        }\n    ]\n}\n\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">2. Create the template part file<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Create the corresponding <span tabindex='0' class='glossary-item-container'>HTML<span class='glossary-item-hidden-content'><span class='glossary-item-header'>HTML<\/span> <span class='glossary-item-description'>HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.<\/span><\/span><\/span> file in the theme\u2019s\u00a0<code>parts\/<\/code>\u00a0directory. The filename should match the\u00a0<code>name<\/code>\u00a0value from\u00a0<code>theme.json<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is strongly recommended to include the Navigation Overlay Close block within the overlay. If it is omitted, WordPress will automatically insert a fallback close button on the frontend for <span tabindex='0' class='glossary-item-container'>accessibility<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Accessibility<\/span> <span class='glossary-item-description'>Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both \u201cdirect access\u201d (i.e. unassisted) and \u201cindirect access\u201d meaning compatibility with a person\u2019s assistive technology (for example, computer screen readers). (https:\/\/en.wikipedia.org\/wiki\/Accessibility)<\/span><\/span><\/span> and usability reasons \u2014 but that button may not match the overlay\u2019s design or be positioned as expected. Including it explicitly gives full control over its appearance and placement.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!-- parts\/my-custom-overlay.html --&gt;\n&lt;!-- wp:group {\"layout\":{\"type\":\"flex\",\"orientation\":\"vertical\"}} --&gt;\n&lt;div class=\"wp-block-group\"&gt;\n    &lt;!-- wp:navigation-overlay-close \/--&gt;\n    &lt;!-- wp:navigation {\"layout\":{\"type\":\"flex\",\"orientation\":\"vertical\"}} \/--&gt;\n&lt;\/div&gt;\n&lt;!-- \/wp:group --&gt;\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">3. Register overlay patterns<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Overlay patterns are registered using\u00a0<code>register_block_pattern()<\/code>. Setting\u00a0<code>blockTypes<\/code>\u00a0to\u00a0<code>core\/template-part\/navigation-overlay<\/code>\u00a0scopes the pattern so it only appears when editing a navigation overlay template part \u2014 not in the general inserter.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nregister_block_pattern(\n    'my-theme\/navigation-overlay-default',\n    array(\n        'title'      =&gt; __( 'Default Overlay', 'my-theme' ),\n        'categories' =&gt; array( 'navigation' ),\n        'blockTypes' =&gt; array( 'core\/template-part\/navigation-overlay' ),\n        'content'    =&gt; '&lt;!-- wp:group {\"layout\":{\"type\":\"flex\",\"orientation\":\"vertical\"}} --&gt;\n&lt;div class=\"wp-block-group\"&gt;\n    &lt;!-- wp:navigation-overlay-close \/--&gt;\n    &lt;!-- wp:navigation {\"layout\":{\"type\":\"flex\",\"orientation\":\"vertical\"}} \/--&gt;\n&lt;\/div&gt;\n&lt;!-- \/wp:group --&gt;',\n    )\n);\n\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">4. Pre-configuring the Navigation block (optional)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A theme can optionally pre-configure a Navigation block to reference a specific overlay by setting the\u00a0<code>overlay<\/code>\u00a0attribute in the block markup. The value should be the template part slug only \u2014 without a theme prefix:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!-- wp:navigation {\"overlay\":\"my-custom-overlay\"} \/--&gt;\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Using the slug only \u2014 without a theme prefix \u2014 is important for future compatibility: WordPress plans to allow template parts to persist across theme switches, and a theme-prefixed identifier would break that. This follows the same convention as\u00a0<code>header<\/code>\u00a0and\u00a0<code>footer<\/code>\u00a0template parts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The\u00a0<code>overlay<\/code>\u00a0attribute is entirely optional \u2014 users can select or change the overlay at any time using the Navigation block\u2019s sidebar controls.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Known limitations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Template parts and theme switching<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Navigation overlay template parts are currently tied to the active theme. Custom overlays will not be preserved if the active theme is switched. This is a known limitation tracked in\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/72452\" target=\"_blank\">gutenberg#72452<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Overlays are full-screen only<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In this initial release, navigation overlays are always rendered full-screen. Non-full-screen overlay styles (such as a sidebar drawer) are not yet supported. This requires implementing overlays as a true\u00a0<code>&lt;dialog&gt;<\/code>\u00a0element \u2014 including support for clicking outside to close \u2014 which is planned for a future release.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Not a generic popup or dialog<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Navigation Overlays are intentionally scoped to the Navigation block and are not designed as a general-purpose popup or dialog implementation. For broader use cases \u2014 such as modal dialogs triggered by arbitrary content \u2014 a dedicated Dialog block is in development and tracked in\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/61297\" target=\"_blank\">gutenberg#61297<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Questions and feedback<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Until now, the mobile navigation overlay has been one of the few remaining areas of a block theme that couldn\u2019t be designed in the Site Editor. Navigation Overlays change that. An overlay can contain anything blocks can express \u2014 a simple menu with a styled close button, a full-screen layout with the site logo and a call to action, or a content-rich experience that turns the mobile menu into a destination in its own right. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is a lot of creative space here, and seeing what the community builds with it will be exciting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questions are welcome in the comments below.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Further reading<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/73084\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub tracking issue #73084<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/test\/2026\/01\/27\/call-for-testing-customizable-navigation-mobile-overlays\/\" target=\"_blank\" rel=\"noreferrer noopener\">Call for Testing: Customizable Navigation Overlays<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<p class=\"wp-block-paragraph\">Props <a href=\"https:\/\/profiles.wordpress.org\/onemaggie\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>onemaggie<\/a> for implementation contributions and technical review, <a href=\"https:\/\/profiles.wordpress.org\/mikachan\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mikachan<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/jeryj\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jeryj<\/a> <a href=\"https:\/\/profiles.wordpress.org\/scruffian\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>scruffian<\/a> for proofreading, and <a href=\"https:\/\/profiles.wordpress.org\/mmcalister\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mmcalister<\/a>, whose\u00a0<a href=\"https:\/\/wordpress.org\/plugins\/ollie-menu-designer\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ollie Menu Designer<\/a>\u00a0<span tabindex='0' class='glossary-item-container'>plugin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Plugin<\/span> <span class='glossary-item-description'>A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https:\/\/wordpress.org\/plugins\/ or can be cost-based plugin from a third-party<\/span><\/span><\/span> helped validate community demand for this functionality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/navigation\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>navigation<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F04%2Fcustomisable-navigation-overlays-in-wordpress-7-0%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>WordPress 7.0 introduces Customisable Navigation Overlays, giving site owners full control over their mobile navigation menus using the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may [&hellip;]<\/p>\n","protected":false},"author":11518672,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[5676,1443,169],"class_list":["post-121869","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-0","tag-dev-notes","tag-navigation","mentions-jeryj","mentions-mikachan","mentions-mmcalister","mentions-onemaggie","mentions-scruffian","author-get_dave"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vHD","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11518672"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121869"}],"version-history":[{"count":11,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121869\/revisions"}],"predecessor-version":[{"id":121925,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121869\/revisions\/121925"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":11518672,"name":"David Smith","url":"https:\/\/www.aheadcreative.co.uk","description":"Software Engineer at Automattic and YouTuber at https:\/\/www.youtube.com\/daveonwp. \r\n\r\nLong time WordPress developer. Generally I appear as `@getdave` or `@get_dave`.","link":"https:\/\/profiles.wordpress.org\/get_dave\/","slug":"get_dave","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/944ddfc8d4b2f5bad1918020a033eeb4c59f850565d2b7f286efa210fde70db2?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/944ddfc8d4b2f5bad1918020a033eeb4c59f850565d2b7f286efa210fde70db2?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/944ddfc8d4b2f5bad1918020a033eeb4c59f850565d2b7f286efa210fde70db2?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11518672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":1443,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/","name":"dev-notes","slug":"dev-notes","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/1443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":169,"link":"https:\/\/make.wordpress.org\/core\/tag\/navigation\/","name":"navigation","slug":"navigation","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121600,"date":"2026-03-04T10:24:32","date_gmt":"2026-03-04T10:24:32","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121600"},"modified":"2026-03-04T10:25:33","modified_gmt":"2026-03-04T10:25:33","slug":"changes-to-the-interactivity-api-in-wordpress-7-0","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/changes-to-the-interactivity-api-in-wordpress-7-0\/","title":{"rendered":"Changes to the Interactivity API in WordPress 7.0"},"content":{"rendered":"<h3 class=\"wp-block-heading\">New <code>watch()<\/code> function<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress 7.0 introduces a <code>watch()<\/code> function in the <code>@wordpress\/interactivity<\/code> package. It subscribes to changes in any reactive value accessed inside a callback, re-running the callback whenever those values change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Currently, the Interactivity <span tabindex='0' class='glossary-item-container'>API<span class='glossary-item-hidden-content'><span class='glossary-item-header'>API<\/span> <span class='glossary-item-description'>An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span> provides <code>data-wp-watch<\/code> as a directive tied to a DOM element\u2019s lifecycle for reacting to state changes. However, there is no programmatic API to observe those changes independently of the DOM, for example, to run side effects at the store level, set up logging, or synchronize state between stores. The <code>watch()<\/code> function fills this gap.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nimport { store, watch } from '@wordpress\/interactivity';\n\nconst { state } = store( 'myPlugin', {\n    state: {\n        counter: 0,\n    },\n} );\n\n\/\/ Runs immediately and re-runs whenever `state.counter` changes.\nwatch( () =&gt; {\n    console.log( 'Counter is ' + state.counter );\n} );\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The function returns an <code>unwatch<\/code> callback that stops the watcher:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nconst unwatch = watch( () =&gt; {\n    console.log( 'Counter is ' + state.counter );\n} );\n\n\/\/ Later, to stop watching:\nunwatch();\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The callback can also return a cleanup function. This cleanup runs before each re-execution and when the watcher is disposed of via <code>unwatch()<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nconst unwatch = watch( () =&gt; {\n    const handler = () =&gt; { \/* ... *\/ };\n    document.addEventListener( 'click', handler );\n\n    return () =&gt; {\n        document.removeEventListener( 'click', handler );\n    };\n} );\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">See <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75563\">#75563<\/a> for more details.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/luisherranz\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>luisherranz<\/a> for the implementation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deprecated <code>state.navigation<\/code> properties in <code>core\/router<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>state.navigation.hasStarted<\/code> and <code>state.navigation.hasFinished<\/code> properties in the <code>core\/router<\/code> store were internal implementation details used for the loading bar animation. These were never intended to be part of the public API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Starting in WordPress 7.0, accessing <code>state.navigation<\/code> from the <code>core\/router<\/code> store is deprecated and will trigger a console warning in development mode (<code>SCRIPT_DEBUG<\/code>). Direct access will stop working in a future version of WordPress. An official mechanism for tracking navigation state will be introduced in WordPress 7.1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">See <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/70882\">#70882<\/a> for more details.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/yashjawale\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>yashjawale<\/a> for the implementation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>state.url<\/code> from <code>core\/router<\/code> is now populated on the server<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Previously, <code>state.url<\/code> in the <code>core\/router<\/code> store was initialized on the client by setting it to <code>window.location.href<\/code>. This meant the value was <code>undefined<\/code> until the <code>@wordpress\/interactivity-router<\/code> module finished loading asynchronously, requiring developers to guard against that initial <code>undefined<\/code> state and <span tabindex='0' class='glossary-item-container'>filter<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Filter<\/span> <span class='glossary-item-description'>Filters are one of the two types of Hooks <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Hooks\">https:\/\/codex.wordpress.org\/Plugin_API\/Hooks<\/a>. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.<\/span><\/span><\/span> out the subsequent initialization to avoid reacting to it as an actual navigation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Starting in WordPress 7.0, this value is populated on the server during directive processing, meaning its value doesn\u2019t change until the first client-side navigation occurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This makes it possible to combine <code>watch()<\/code> and <code>state.url<\/code> to reliably track client-side navigations, for example, to send analytics on each virtual page view:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nimport { store, watch } from '@wordpress\/interactivity';\n\nconst { state } = store( 'core\/router' );\n\nwatch( () =&gt; {\n    \/\/ This runs on every client-side navigation.\n    sendAnalyticsPageView( state.url );\n} );\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">See <a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/pull\/10944\">#10944<\/a> for more details.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/luisherranz\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>luisherranz<\/a> for the implementation.<\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes-7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/interactivity-api\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>interactivity-api<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F04%2Fchanges-to-the-interactivity-api-in-wordpress-7-0%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>New watch() function WordPress 7.0 introduces a watch() function in the @wordpress\/interactivity package. It subscribes to changes in any reactive value accessed inside a callback, re-running the callback whenever those values change. Currently, the Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and [&hellip;]<\/p>\n","protected":false},"author":14623809,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AAAHxczc5RDJGOIRCJwBCLoBFAMBCgIEAwEEIAcAqgEMAgQDAgUAAwQFAQMBBgQGBAMDBAMBBAMFBgIGBAMCBAIIAwEGAgYEAgQGBAMABAMABAIEAwAEAgQDAAgGAgQDBgUAAggKAgQCDhQDAQQCBAMABQEOBAMBCgIEBg4DCBgDAAUAAgQIAwEECAsAAwAEAwIKBAMGBgMDBQACCAYCBAMABAYFAAwFAAYCBAMBBQACBAIFAAYCBgMABAMFBgMEBIwBAwcOBgIGBAMBBgIEAwAEAgQDAwQIBAMABAMHBAMFBQADAAwCBAMABAMBBAMCBAMDBgIEAwYEAwIFAAIIAwIGAwCSAgaoAQQCCgIIBQACBggeAwEOAwAEAwIEAgQDAwQCBgMAChYCIgIECAoCGJICCAIGAgQCCAIGAwAQAwEKBAMCBgMBBAMBCAIKAgQCBgQIAwYEAgQDAAQCCAMBIAMBCgIMAgQCDAMBDAIGCggCDAISAgUAAgQCBAIMAwEMAgYEBgMCCgIGAgQDAAQeBBYCBAIMAggCIJICBqgBBAIEAwEEDA4CBgISAgQDAQ4CDAMABAIIAwcIBAImAgQCBAIGAgQCDAMDCAMFCggMAg4CBgIWvgMEAwAIBAMAhAMqhAQCBAIIBAMABBAEAwEEAwK6AQIEAggEAwIQAhACCAQCDAIIAgQCDAIJAAMBBgMCBAMCDAQDAAQCBgMABQACBAMBBQADAAQDACAIAggCFgIGAgwKAwAOAiIDAgwDBAoCGAQKAgQDAQYCCAMCBgIEAgwCCgQIAggCBAMBBAIIAgoDAgYCBQACBrABBQACFAMBBAYDBgQDAC4DEQQDAwQDBKIDBgS4AQcACQCiAgMAFgIMAhACFgIEAhCkAwgMAwAKAgYQBg4GAgQCBBAEAwEFAQKqAQgGDgIGAwEEAiwCCgIGEAMACgIKAgQDAAQSEAMCDAYCDgIMDgMABAYECgIEAwAEEgIEAgoCBQACCAIEAh4EBgMBEAMBBAIWCAIEAwAeAwEYAiYCggEKBgMABAgQAggCCA4GAwEEFAIaAh4CBAIcAwAMAgQCBQADAQQDAAUAAwAGAgwDAAgDAAQCBAIGAwAYAwEGAwAGCgIEAgQCEAIGAggDAAQQAgoCCgwEAgoCBAIUAgYCEAIKAwEKAhoCBgIMAwEWAhACJAwIAwEGAgQDARACngECIgIEAgwCDAIIAwEGAhICDAIOAhACDgIItgEDAAgCBAMBDAIEAgoCBgIKBgQCCAUCDgQDARAGBQACBAMABgMGBAIEAgwCBAIGAwQEAgUAAwEKAgQDBAQCEgMBBAqKAQMHDgYCCAQMAgQDBgUACAMHBAIGAiQDABIIAhACFAIYFgoECgIGAwAOAgQDAgYCHAUAAggCGAMABgQMAhQDAA4CBAIGAgQDARACCAYIAiQCCAIKAggCBAIEBwACBgIGBAYDAQQCCgIIAhQCEAIGAwAEIAIGAgwCCgIGAgwCGgIEAgwEBhYDAAQCBgKSAgYCBAIEDAMBBQADAgS6BAELIgIBAgoCQkoAsgEBAgoCQkoAogwBAgoCQkoAmgQBAgoBBEoAHAECCgJCSgCwCQECCgEESgAcAQIKAkJKAIoDAQIKAkJKAJYCAQIKAkJKALIBAQIKAkJKALYKAQIKAkJKAIwDAQMMAkJMAIwFAQIKAkJKAL4CAQIKAkJKAJoCAQIKAkJKAKgIAQIKAkJKAIgCAQIKAkJKAIYJAQIKAkJKAI4DAQIKAkJKAK4FAQIKAkJKAIAOAQIKAkJKAIoDAQIKAkJKzmu+bPABtAEBAQgASPiLAga0iwIFAEJIngEBAQgCQkgArgcBAQgCmAcI4gdIAKQMAQEIAQRIABoBAQgCQkgAqgIBAQgBBEgAGgEBCAJCSACGBQEBCAEESAAaAQEIAkJIAIgDAQEIAkJIAKoBAQEIAkJIAK4CAQEIAqYEjgEqAuIGSACiCAEBCAJCSACeCwEBCAKAAsICSACIAwEBCAJCSACoAQEBCAJCSAC2AgEBCAK2BPgESACgCgEBCAKGA6IC6gVIALoFAQEIAQRIABoBAQgCkAIi9AJIALoDAQEIAkJI5kCEA6AFujPQ3AIWBAwGAwAqsAEOBAIGBAYDAAQGCAMBFgMBBgQKBAIEBg4DABIMCgYLAAIHAAIHAAIIBgIGAwMFAAYaDhoHAQgSHBQFAQIaAggGCgIGHgYCBBACBQEIBgIKEAIGAg4QCQECBQACBhAIBgQDAAQKBAMBkAEEAwEEAhAIBwAECAYCBgQDAgYIBgIGAgQDAwoDAggEDgcAnOYCAtrmAgIFAQYCBAIIBgMCBAIEAwIIAgoCBAiUAq4BEgwUIKrlAublAhACBgIIAgYDAgYIiAEMtgIKCAYSFBYMChoGCwAEBgoFABAqLhIQLAgCBDIIAwAWBoABBg4KsgKuAQcAAwCS2AIC0NgCgtkCAszYAgYEHggKBQIILgcAsNcC6NcCFAQDAAoFASAQnAQGCga0BwYCDAQUBgIKAwC6AQYCDAQDABAUDBAKFAgOCAQCCAISAwAGCAcBBAoGAiIsHgQ0Bg4FAAwCHAwGDA4CCBQyFgYJAAK2AQQGFAQGCAMECAIuBAMDBAMBBAMABAIGAwIGAwOiA4gCuAIqEh6YBBYUCAYUBgMABAi6AYICEgYiCAwIEB4ECgwHABQGDAsAMCCaAwgCDBwWCAIdACAGHgIUCgQGDAIWAggYAhoECQANABIGAhAeHBI8BDC2AQwGBLgCCi4QEhC+AQQKGAYMGAYMCAQOBhQKBwACCAQDAwcAFAgDAAcACgMADAYEIAIGlAEEAwEEAiQOBgIECQAKAwAEAgY0tAEaCBIGAwE4GgIKDhgkAwASGCYgBgoaCBYyCCgWDDgQBhYEDpICCAYQBAIIAgQC+poBov0C3t8ChusCNP7VApZcjO0B3t8ChusCNP7VApZciJwC\/C7e3wKG6wI0\/tUClly6nAICyo8BCIyQAfZ0zgGOAagVrGABAQgCQkj8UpRZBDwIAiLoAbABdAgCAOpt+wSmAYICFgQMBgMAKrABDgQCBgQGAwAEBggDARYDAQYECgQCBAYOAwASDAoGCwACBwACBwACCAYCBgMDBQAGGg4aBwEIEhwUBQECGgIIBgoCBh4GAgQQAgUBCAYCChACBgIOEAkBAgUAAgYQCAYEAwAECgQDAZABBAMBBAIQCAcABAgGAgYEAwIGCAYCBgIEAwMKAwIIBA4HAAEABAIFAQYCBAIIBgMCBAIEAwIIAgoCBAiUAq4BEgwUIAAEEAIGAggCBgMCBgiIAQy2AgoIBhIUFgwKGgYLAAQGCgUAECouEhAsCAIEMggDABYGgAEGDgqyAq4BBwADAAEABAEAOAYEHggKBQIILgcAAAgUBAMACgUBIBCcBAYKBrQHBgIMBBQGAgoDALoBBgIMBAMAEBQMEAoUCA4IBAIIAhIDAAYIBwEECgYCIiweBDQGDgUADAIcDAYMDgIIFDIWBgkAArYBBAYUBAYIAwQIAi4EAwMEAwEEAwAEAgYDAgYDA6IDiAK4AioSHpgEFhQIBhQGAwAECLoBggISBiIIDAgQHgQKDAcAFAYMCwAwIJoDCAIMHBYIAh0AIAYeAhQKBAYMAhYCCBgCGgQJAA0AEgYCEB4cEjwEMLYBDAYEuAIKLhASEL4BBAoYBgwYBgwIBA4GFAoHAAIIBAMDBwAUCAMABwAKAwAMBgQgAgaUAQQDAQQCJA4GAgQJAAoDAAQCBjS0ARoIEgYDATgaAgoOGCQDABIYJiAGChoIFjIIKBYMOBAGFgQOkgIIBhAEAggCBAKo4gGKBp4FNLAB2PsBiJwCCQMMAwPUjwEIAJYbzgGKdvZUkgMBBJhZADwIAjTebskEKAMnAAQAhAAnAAQAhNgKJwAoBicAKA8nAAcAKAMnAQQAKAAnAIcAKAMnAQQAKAAnAIcAKAMnAQQAKAAnAIcAKAMnACgGJwCHACgDJwEEACgAJwCHACgDJwAoBicAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoBCcBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAqAGHACgCJwEoACcAxACEAKgBBAAoAIcAKAInAQQAKAAnAIcAKAInAQQAhAEoACcAhwAoAicAKAYnAIcAKAInAQQAKAAnAIcAKAInACgGJwCHACgCJwEEACgAJwCHACgCJwAoBicAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBACEAygAJwCHACgCJwEEACgAJwCHACgCJwEEAIQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAhAAoACcAhwAoAicBBACEASgAJwCHACgCJwAoBicAhwAoAicBBACEASgAJwCHACgCJwEEACgAJwCoA8TdBKgAxAUhAcQFqADEBagBxAXHACgCJwEEACgAJwDE0JkBqIgBc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzbHVnZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlQ2hhbmdlcyB0byB0aGUgSW50ZXJhY3Rpdml0eSBBUEkgaW4gV29yZFByZXNzIDYuOWRvY3VtZW50Y29udGVudDwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5TdGFuZGFyZGl6ZWQgQVBJIHRvIHNldCB1bmlxdWUgSURzIGluIGRpcmVjdGl2ZXM8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkhUTUwgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUgb24gYSBzaW5nbGUgZWxlbWVudCwgeWV0IG11bHRpcGxlIHBsdWdpbnMgbWF5IG5lZWQgdG8gYWRkIGRpcmVjdGl2ZXMgb2YgdGhlIHNhbWUgdHlwZSB0byB0aGUgc2FtZSBlbGVtZW50LiBUbyBhZGRyZXNzIHRoaXMsIFdvcmRQcmVzcyA2LjkgaW50cm9kdWNlcyBhIHN0YW5kYXJkaXplZCB3YXkgdG8gYXNzaWduIHVuaXF1ZSBJRHMgdG8gSW50ZXJhY3Rpdml0eSBBUEkgZGlyZWN0aXZlcywgYWxsb3dpbmcgYW4gZWxlbWVudCB0byBoYXZlIG11bHRpcGxlIGRpcmVjdGl2ZXMgb2YgdGhlIHNhbWUgdHlwZSwgYXMgbG9uZyBhcyBlYWNoIGRpcmVjdGl2ZSBoYXMgYSBkaWZmZXJlbnQgSUQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VG8gYXNzaWduIGEgdW5pcXVlIElEIHRvIGEgZGlyZWN0aXZlLCBhcHBlbmQgYSB0cmlwbGUtZGFzaCAoPGNvZGU+LS0tPC9jb2RlPikgZm9sbG93ZWQgYnkgdGhlIElELCBhcyBzaG93biBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnN5bnRheGhpZ2hsaWdodGVyL2NvZGUgeyJsYW5ndWFnZSI6InhtbCJ9IC0tPgo8cHJlIGNsYXNzPSJ3cC1ibG9jay1zeW50YXhoaWdobGlnaHRlci1jb2RlIj4mbHQ7ZGl2CiAgICBkYXRhLXdwLXdhdGNoLS0tbXktdW5pcXVlLWlkPSJjYWxsYmFja3MuZmlyc3RXYXRjaCIKICAgIGRhdGEtd3Atd2F0Y2gtLS1hbm90aGVyLWlkPSJjYWxsYmFja3Muc2Vjb25kV2F0Y2giCiZndDsmbHQ7L2RpdiZndDs8L3ByZT4KPCEtLSAvd3A6c3ludGF4aGlnaGxpZ2h0ZXIvY29kZSAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGUgdHJpcGxlLWRhc2ggc3ludGF4IHVuYW1iaWd1b3VzbHkgZGlmZmVyZW50aWF0ZXMgdW5pcXVlIElEcyBmcm9tIHN1ZmZpeGVzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgPGNvZGU+Y2xpY2s8L2NvZGU+IGlzIHRoZSBzdWZmaXgsIHdoaWxlIDxjb2RlPnBsdWdpbi1hPC9jb2RlPiBhbmQgPGNvZGU+cGx1Z2luLWI8L2NvZGU+IGFyZSB0aGUgdW5pcXVlIElEcy4gVGhlIG9yZGVyIGlzIGFsc28gaW1wb3J0YW50OiB0aGUgdW5pcXVlIElEIG11c3QgYWx3YXlzIGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6c3ludGF4aGlnaGxpZ2h0ZXIvY29kZSB7Imxhbmd1YWdlIjoieG1sIn0gLS0+CjxwcmUgY2xhc3M9IndwLWJsb2NrLXN5bnRheGhpZ2hsaWdodGVyLWNvZGUiPiZsdDtidXR0b24KICAgIGRhdGEtd3Atb24tLWNsaWNrLS0tcGx1Z2luLWE9InBsdWdpbi1hOjphY3Rpb25zLnNvbWVBY3Rpb24iCiAgICBkYXRhLXdwLW9uLS1jbGljay0tLXBsdWdpbi1iPSJwbHVnaW4tYjo6YWN0aW9ucy5zb21lQWN0aW9uIgomZ3Q7CiAgQnV0dG9uIGV4YW1wbGUKJmx0Oy9idXR0b24mZ3Q7PC9wcmU+CjwhLS0gL3dwOnN5bnRheGhpZ2hsaWdodGVyL2NvZGUgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzIxNjEiPiM3MjE2MTwvYT4gZm9yIG1vcmUgZGV0YWlscy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Qcm9wcyB0byBAbHVpc2hlcnJhbnogYW5kIEBzYW50b3NndWlsbGFtb3QgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5EZXByZWNhdGVkIDxjb2RlPmRhdGEtd3AtaWdub3JlPC9jb2RlPiBkaXJlY3RpdmU8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSA8Y29kZT5kYXRhLXdwLWlnbm9yZTwvY29kZT4gZGlyZWN0aXZlIHdhcyBkZXNpZ25lZCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBvZiBhIHNwZWNpZmljIHBhcnQgb2YgYW4gaW50ZXJhY3RpdmUgcmVnaW9uLiBIb3dldmVyLCBpdHMgaW1wbGVtZW50YXRpb24gYnJva2UgY29udGV4dCBpbmhlcml0YW5jZSBhbmQgY2F1c2VkIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgY2xpZW50LXNpZGUgbmF2aWdhdGlvbiBmZWF0dXJlIG9mIHRoZSA8Y29kZT5Ad29yZHByZXNzL2ludGVyYWN0aXZpdHktcm91dGVyPC9jb2RlPiBtb2R1bGUsIHdpdGhvdXQgYWRkcmVzc2luZyBhIHJlYWwgdXNlIGNhc2UuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U2luY2UgV29yZFByZXNzIDYuOSwgdGhpcyBkaXJlY3RpdmUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHN1YnNlcXVlbnQgdmVyc2lvbnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPiM3MDk0NTwvYT48L2E+IGZvciBtb3JlIGRldGFpbHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+UHJvcHMgdG8gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhaGlsMTYxNyI+QFNhaGlsMTYxNzwvYT4gZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5OZXcgPGNvZGU+QXN5bmNBY3Rpb248L2NvZGU+IGFuZCA8Y29kZT5UeXBlWWllbGQ8L2NvZGU+IHR5cGUgaGVscGVyczwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V29yZFByZXNzIDYuOSBpbnRyb2R1Y2VzIHR3byBuZXcgVHlwZVNjcmlwdCBoZWxwZXIgdHlwZXMsIDxjb2RlPkFzeW5jQWN0aW9uJmx0O1JldHVyblR5cGUmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+VHlwZVlpZWxkJmx0O1QmZ3Q7PC9jb2RlPiwgdG8gdGhlIEludGVyYWN0aXZpdHkgQVBJLiBUaGVzZSB0eXBlcyBoZWxwIGRldmVsb3BlcnMgYWRkcmVzcyBwb3RlbnRpYWwgVHlwZVNjcmlwdCBpc3N1ZXMgd2hlbiB3b3JraW5nIHdpdGggYXN5bmNocm9ub3VzIGFjdGlvbnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PHN0cm9uZz48Y29kZT5Bc3luY0FjdGlvbiZsdDtSZXR1cm5UeXBlJmd0OzwvY29kZT48L3N0cm9uZz48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGlzIGhlbHBlciBsZXRzIGRldmVsb3BlcnMgZXhwbGljaXRseSB0eXBlIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4gYXN5bmNocm9ub3VzIGFjdGlvbiAoZ2VuZXJhdG9yKS4gQnkgdXNpbmcgPGNvZGU+YW55PC9jb2RlPiBmb3IgeWllbGRlZCB2YWx1ZXMsIGl0IGJyZWFrcyBjaXJjdWxhciB0eXBlIGRlcGVuZGVuY2llcyB3aGVuIDxjb2RlPnN0YXRlPC9jb2RlPiBpcyB1c2VkIHdpdGhpbiA8Y29kZT55aWVsZDwvY29kZT4gZXhwcmVzc2lvbnMgb3IgaW4gdGhlIGZpbmFsIHJldHVybiB2YWx1ZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPjxjb2RlPlR5cGVZaWVsZCZsdDtUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9Jmd0OyBQcm9taXNlJmx0O2FueSZndDs8L2NvZGU+PC9zdHJvbmc+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhpcyBoZWxwZXIgbGV0cyBkZXZlbG9wZXJzIGV4cGxpY2l0bHkgdHlwZSB0aGUgdmFsdWUgdGhhdCBhIDxjb2RlPnlpZWxkPC9jb2RlPiBleHByZXNzaW9uIHJlc29sdmVzIHRvIGJ5IHByb3ZpZGluZyB0aGUgdHlwZSBvZiB0aGUgYXN5bmMgZnVuY3Rpb24gb3Igb3BlcmF0aW9uIGJlaW5nIHlpZWxkZWQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLndvcmRwcmVzcy5vcmcvYmxvY2stZWRpdG9yL3JlZmVyZW5jZS1ndWlkZXMvaW50ZXJhY3Rpdml0eS1hcGkvY29yZS1jb25jZXB0cy91c2luZy10eXBlc2NyaXB0LyN0eXBpbmctYXN5bmNocm9ub3VzLWFjdGlvbnMiPlR5cGluZyBhc3luY2hyb25vdXMgYWN0aW9uczwvYT4gc2VjdGlvbiBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9ibG9jay1lZGl0b3IvcmVmZXJlbmNlLWd1aWRlcy9pbnRlcmFjdGl2aXR5LWFwaS9jb3JlLWNvbmNlcHRzL3VzaW5nLXR5cGVzY3JpcCI+SW50ZXJhY3Rpdml0eSBBUEkgcmVmZXJlbmNlICZndDsgQ29yZSBDb25jZXB0cyAmZ3Q7IFVzaW5nIFR5cGVTY3JpcHQ8L2E+IGd1aWRlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNlZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcwNDIyIj4jNzA0MjI8L2E+IGZvciBtb3JlIGRldGFpbHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+UHJvcHMgdG8gQGx1aXNoZXJyYW56IGZvciB0aGUgaW1wbGVtZW50YXRpb24uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YWFkdmFuY2VkX3Nlb19kZXNjcmlwdGlvbmpldHBhY2tfc2VvX2h0bWxfdGl0bGVqZXRwYWNrX3Nlb19ub2luZGV4amV0cGFja19wb3N0X3dhc19ldmVyX3B1Ymxpc2hlZF9qZXRwYWNrX25ld3NsZXR0ZXJfYWNjZXNzX2pldHBhY2tfZG9udF9lbWFpbF9wb3N0X3RvX3N1YnNfamV0cGFja19uZXdzbGV0dGVyX3RpZXJfaWRfamV0cGFja19tZW1iZXJzaGlwc19jb250YWluc19wYXl3YWxsZWRfY29udGVudF9qZXRwYWNrX21lbWJlcnNoaXBzX2NvbnRhaW5zX3BhaWRfY29udGVudGZvb3Rub3Rlc2pldHBhY2tfcHVibGljaXplX21lc3NhZ2VqZXRwYWNrX3B1YmxpY2l6ZV9mZWF0dXJlX2VuYWJsZWRqZXRwYWNrX3NvY2lhbF9wb3N0X2FscmVhZHlfc2hhcmVkamV0cGFja19zb2NpYWxfb3B0aW9uc2RvY3VtZW50Y2F0ZWdvcmllc2RvY3VtZW50dGFnc2RvY3VtZW50YmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50U3RhbmRhcmRpemVkIEFQSSB0byBzZXQgdW5pcXVlIElEcyBpbiBkaXJlY3RpdmVzbGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEhUTUwgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUgb24gYSBzaW5nbGUgZWxlbWVudCwgeWV0IG11bHRpcGxlIHBsdWdpbnMgbWF5IG5lZWQgdG8gYWRkIGRpcmVjdGl2ZXMgb2YgdGhlIHNhbWUgdHlwZSB0byB0aGUgc2FtZSBlbGVtZW50LiBUbyBhZGRyZXNzIHRoaXMsIFdvcmRQcmVzcyA2LjkgaW50cm9kdWNlcyBhIHN0YW5kYXJkaXplZCB3YXkgdG8gYXNzaWduIHVuaXF1ZSBJRHMgdG8gSW50ZXJhY3Rpdml0eSBBUEkgZGlyZWN0aXZlcywgYWxsb3dpbmcgYW4gZWxlbWVudCB0byBoYXZlIG11bHRpcGxlIGRpcmVjdGl2ZXMgb2YgdGhlIHNhbWUgdHlwZSwgYXMgbG9uZyBhcyBlYWNoIGRpcmVjdGl2ZSBoYXMgYSBkaWZmZXJlbnQgSUQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VG8gYXNzaWduIGEgdW5pcXVlIElEIHRvIGEgZGlyZWN0aXZlLCBhcHBlbmQgYSB0cmlwbGUtZGFzaCAoPGNvZGU+LS0tPC9jb2RlPikgZm9sbG93ZWQgYnkgdGhlIElELCBhcyBzaG93biBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50bGFuZ3VhZ2VsaW5lTnVtYmVyc2ZpcnN0TGluZU51bWJlcndyYXBMaW5lc21ha2VVUkxzQ2xpY2thYmxlcXVpY2tDb2RlaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgdHJpcGxlLWRhc2ggc3ludGF4IHVuYW1iaWd1b3VzbHkgZGlmZmVyZW50aWF0ZXMgdW5pcXVlIElEcyBmcm9tIHN1ZmZpeGVzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgPGNvZGU+Y2xpY2s8L2NvZGU+IGlzIHRoZSBzdWZmaXgsIHdoaWxlIDxjb2RlPnBsdWdpbi1hPC9jb2RlPiBhbmQgPGNvZGU+cGx1Z2luLWI8L2NvZGU+IGFyZSB0aGUgdW5pcXVlIElEcy4gVGhlIG9yZGVyIGlzIGFsc28gaW1wb3J0YW50OiB0aGUgdW5pcXVlIElEIG11c3QgYWx3YXlzIGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRsYW5ndWFnZWxpbmVOdW1iZXJzZmlyc3RMaW5lTnVtYmVyd3JhcExpbmVzbWFrZVVSTHNDbGlja2FibGVxdWlja0NvZGVpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFNlZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcyMTYxIj4jNzIxNjE8L2E+IGZvciBtb3JlIGRldGFpbHMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50UHJvcHMgdG8gQGx1aXNoZXJyYW56IGFuZCBAc2FudG9zZ3VpbGxhbW90IGZvciB0aGUgaW1wbGVtZW50YXRpb24uZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50RGVwcmVjYXRlZCA8Y29kZT5kYXRhLXdwLWlnbm9yZTwvY29kZT4gZGlyZWN0aXZlbGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSA8Y29kZT5kYXRhLXdwLWlnbm9yZTwvY29kZT4gZGlyZWN0aXZlIHdhcyBkZXNpZ25lZCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBvZiBhIHNwZWNpZmljIHBhcnQgb2YgYW4gaW50ZXJhY3RpdmUgcmVnaW9uLiBIb3dldmVyLCBpdHMgaW1wbGVtZW50YXRpb24gYnJva2UgY29udGV4dCBpbmhlcml0YW5jZSBhbmQgY2F1c2VkIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgY2xpZW50LXNpZGUgbmF2aWdhdGlvbiBmZWF0dXJlIG9mIHRoZSA8Y29kZT5Ad29yZHByZXNzL2ludGVyYWN0aXZpdHktcm91dGVyPC9jb2RlPiBtb2R1bGUsIHdpdGhvdXQgYWRkcmVzc2luZyBhIHJlYWwgdXNlIGNhc2UuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50U2luY2UgV29yZFByZXNzIDYuOSwgdGhpcyBkaXJlY3RpdmUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHN1YnNlcXVlbnQgdmVyc2lvbnMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50X191bnN0YWJsZUJsb2NrU291cmNlbmFtZWF0dHJpYnV0ZXNjb250ZW50U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPjwvYT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcwOTQ1Ij4jNzA5NDU8L2E+IGZvciBtb3JlIGRldGFpbHMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50UHJvcHMgdG8gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhaGlsMTYxNyI+QFNhaGlsMTYxNzwvYT4gZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnROZXcgPGNvZGU+QXN5bmNBY3Rpb248L2NvZGU+IGFuZCA8Y29kZT5UeXBlWWllbGQ8L2NvZGU+IHR5cGUgaGVscGVyc2xldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRXb3JkUHJlc3MgNi45IGludHJvZHVjZXMgdHdvIG5ldyBUeXBlU2NyaXB0IGhlbHBlciB0eXBlcywgPGNvZGU+QXN5bmNBY3Rpb24mbHQ7UmV0dXJuVHlwZSZndDs8L2NvZGU+IGFuZCA8Y29kZT5UeXBlWWllbGQmbHQ7VCZndDs8L2NvZGU+LCB0byB0aGUgSW50ZXJhY3Rpdml0eSBBUEkuIFRoZXNlIHR5cGVzIGhlbHAgZGV2ZWxvcGVycyBhZGRyZXNzIHBvdGVudGlhbCBUeXBlU2NyaXB0IGlzc3VlcyB3aGVuIHdvcmtpbmcgd2l0aCBhc3luY2hyb25vdXMgYWN0aW9ucy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjxjb2RlPkFzeW5jQWN0aW9uJmx0O1JldHVyblR5cGUmZ3Q7PC9jb2RlPjwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFRoaXMgaGVscGVyIGxldHMgZGV2ZWxvcGVycyBleHBsaWNpdGx5IHR5cGUgdGhlIHJldHVybiB2YWx1ZSBvZiBhbiBhc3luY2hyb25vdXMgYWN0aW9uIChnZW5lcmF0b3IpLiBCeSB1c2luZyA8Y29kZT5hbnk8L2NvZGU+IGZvciB5aWVsZGVkIHZhbHVlcywgaXQgYnJlYWtzIGNpcmN1bGFyIHR5cGUgZGVwZW5kZW5jaWVzIHdoZW4gPGNvZGU+c3RhdGU8L2NvZGU+IGlzIHVzZWQgd2l0aGluIDxjb2RlPnlpZWxkPC9jb2RlPiBleHByZXNzaW9ucyBvciBpbiB0aGUgZmluYWwgcmV0dXJuIHZhbHVlLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+PGNvZGU+VHlwZVlpZWxkJmx0O1QgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0mZ3Q7IFByb21pc2UmbHQ7YW55Jmd0OzwvY29kZT48L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGlzIGhlbHBlciBsZXRzIGRldmVsb3BlcnMgZXhwbGljaXRseSB0eXBlIHRoZSB2YWx1ZSB0aGF0IGEgPGNvZGU+eWllbGQ8L2NvZGU+IGV4cHJlc3Npb24gcmVzb2x2ZXMgdG8gYnkgcHJvdmlkaW5nIHRoZSB0eXBlIG9mIHRoZSBhc3luYyBmdW5jdGlvbiBvciBvcGVyYXRpb24gYmVpbmcgeWllbGRlZC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRGb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgZXhhbXBsZXMsIHNlZSB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9ibG9jay1lZGl0b3IvcmVmZXJlbmNlLWd1aWRlcy9pbnRlcmFjdGl2aXR5LWFwaS9jb3JlLWNvbmNlcHRzL3VzaW5nLXR5cGVzY3JpcHQvI3R5cGluZy1hc3luY2hyb25vdXMtYWN0aW9ucyI+VHlwaW5nIGFzeW5jaHJvbm91cyBhY3Rpb25zPC9hPiBzZWN0aW9uIGluIHRoZSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci53b3JkcHJlc3Mub3JnL2Jsb2NrLWVkaXRvci9yZWZlcmVuY2UtZ3VpZGVzL2ludGVyYWN0aXZpdHktYXBpL2NvcmUtY29uY2VwdHMvdXNpbmctdHlwZXNjcmlwIj5JbnRlcmFjdGl2aXR5IEFQSSByZWZlcmVuY2UgJmd0OyBDb3JlIENvbmNlcHRzICZndDsgVXNpbmcgVHlwZVNjcmlwdDwvYT4gZ3VpZGUuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA0MjIiPiM3MDQyMjwvYT4gZm9yIG1vcmUgZGV0YWlscy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRQcm9wcyB0byBAbHVpc2hlcnJhbnogZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3M3LjBOZXcgPGNvZGU+d2F0Y2goKTwvY29kZT4gZnVuY3Rpb25sZXZlbGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFdvcmRQcmVzcyA3LjAgaW50cm9kdWNlcyBhIDxjb2RlPndhdGNoKCk8L2NvZGU+IGZ1bmN0aW9uIGluIHRoZSA8Y29kZT5Ad29yZHByZXNzL2ludGVyYWN0aXZpdHk8L2NvZGU+IHBhY2thZ2UuIEl0IHN1YnNjcmliZXMgdG8gY2hhbmdlcyBpbiBhbnkgcmVhY3RpdmUgdmFsdWUgYWNjZXNzZWQgaW5zaWRlIGEgY2FsbGJhY2ssIHJlLXJ1bm5pbmcgdGhlIGNhbGxiYWNrIHdoZW5ldmVyIHRob3NlIHZhbHVlcyBjaGFuZ2UuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q3VycmVudGx5LCB0aGUgSW50ZXJhY3Rpdml0eSBBUEkgcHJvdmlkZXMgPGNvZGU+ZGF0YS13cC13YXRjaDwvY29kZT4gYXMgYSBkaXJlY3RpdmUgdGllZCB0byBhIERPTSBlbGVtZW50J3MgbGlmZWN5Y2xlIGZvciByZWFjdGluZyB0byBzdGF0ZSBjaGFuZ2VzLiBIb3dldmVyLCB0aGVyZSBpcyBubyBwcm9ncmFtbWF0aWMgQVBJIHRvIG9ic2VydmUgdGhvc2UgY2hhbmdlcyBpbmRlcGVuZGVudGx5IG9mIHRoZSBET00g4oCUIGZvciBleGFtcGxlLCB0byBydW4gc2lkZSBlZmZlY3RzIGF0IHRoZSBzdG9yZSBsZXZlbCwgc2V0IHVwIGxvZ2dpbmcsIG9yIHN5bmNocm9uaXplIHN0YXRlIGJldHdlZW4gc3RvcmVzLiBUaGUgPGNvZGU+d2F0Y2goKTwvY29kZT4gZnVuY3Rpb24gZmlsbHMgdGhpcyBnYXAuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50bGFuZ3VhZ2VsaW5lTnVtYmVyc2ZpcnN0TGluZU51bWJlcndyYXBMaW5lc21ha2VVUkxzQ2xpY2thYmxlcXVpY2tDb2RlaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgZnVuY3Rpb24gcmV0dXJucyBhbiA8Y29kZT51bndhdGNoPC9jb2RlPiBjYWxsYmFjayB0aGF0IHN0b3BzIHRoZSB3YXRjaGVyOmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGxhbmd1YWdlbGluZU51bWJlcnNmaXJzdExpbmVOdW1iZXJ3cmFwTGluZXNtYWtlVVJMc0NsaWNrYWJsZXF1aWNrQ29kZWlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIGNhbGxiYWNrIGNhbiBhbHNvIHJldHVybiBhIGNsZWFudXAgZnVuY3Rpb24uIFRoaXMgY2xlYW51cCBydW5zIGJlZm9yZSBlYWNoIHJlLWV4ZWN1dGlvbiBhbmQgd2hlbiB0aGUgd2F0Y2hlciBpcyBkaXNwb3NlZCBvZiB2aWEgPGNvZGU+dW53YXRjaCgpPC9jb2RlPjpkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRsYW5ndWFnZWxpbmVOdW1iZXJzZmlyc3RMaW5lTnVtYmVyd3JhcExpbmVzbWFrZVVSTHNDbGlja2FibGVxdWlja0NvZGVpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFNlZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1NTYzIj4jNzU1NjM8L2E+IGZvciBtb3JlIGRldGFpbHMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UHJvcHMgdG8gQGx1aXNoZXJyYW56IGZvciB0aGUgaW1wbGVtZW50YXRpb24uZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RGVwcmVjYXRlZCA8Y29kZT5zdGF0ZS5uYXZpZ2F0aW9uPC9jb2RlPiBwcm9wZXJ0aWVzIGluIDxjb2RlPmNvcmUvcm91dGVyPC9jb2RlPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgPGNvZGU+c3RhdGUubmF2aWdhdGlvbi5oYXNTdGFydGVkPC9jb2RlPiBhbmQgPGNvZGU+c3RhdGUubmF2aWdhdGlvbi5oYXNGaW5pc2hlZDwvY29kZT4gcHJvcGVydGllcyBpbiB0aGUgPGNvZGU+Y29yZS9yb3V0ZXI8L2NvZGU+IHN0b3JlIHdlcmUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyB1c2VkIGZvciBsb2FkaW5nIGJhciBhbmltYXRpb25zLiBUaGVzZSB3ZXJlIG5ldmVyIGludGVuZGVkIHRvIGJlIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50U3RhcnRpbmcgaW4gV29yZFByZXNzIDcuMCwgYWNjZXNzaW5nIDxjb2RlPnN0YXRlLm5hdmlnYXRpb248L2NvZGU+IGZyb20gdGhlIDxjb2RlPmNvcmUvcm91dGVyPC9jb2RlPiBzdG9yZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHRyaWdnZXIgYSBjb25zb2xlIHdhcm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZSAoPGNvZGU+U0NSSVBUX0RFQlVHPC9jb2RlPikuIERpcmVjdCBhY2Nlc3Mgd2lsbCBzdG9wIHdvcmtpbmcgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBXb3JkUHJlc3MuIEFuIG9mZmljaWFsIG1lY2hhbmlzbSBmb3IgdHJhY2tpbmcgbmF2aWdhdGlvbiBzdGF0ZSB3aWxsIGJlIGludHJvZHVjZWQgaW4gV29yZFByZXNzIDcuMS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTZWUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83MDg4MiI+IzcwODgyPC9hPiBmb3IgbW9yZSBkZXRhaWxzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFByb3BzIHRvIEB5YXNoamF3YWxlIGZvciB0aGUgaW1wbGVtZW50YXRpb24uZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PGNvZGU+c3RhdGUudXJsPC9jb2RlPiBmcm9tIDxjb2RlPmNvcmUvcm91dGVyPC9jb2RlPiBpcyBub3cgcG9wdWxhdGVkIG9uIHRoZSBzZXJ2ZXJsZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UHJldmlvdXNseSwgPGNvZGU+c3RhdGUudXJsPC9jb2RlPiBpbiB0aGUgPGNvZGU+Y29yZS9yb3V0ZXI8L2NvZGU+IHN0b3JlIHdhcyBpbml0aWFsaXplZCBvbiB0aGUgY2xpZW50IGJ5IHNldHRpbmcgaXQgdG8gPGNvZGU+d2luZG93LmxvY2F0aW9uLmhyZWY8L2NvZGU+LiBTdGFydGluZyBpbiBXb3JkUHJlc3MgNy4wLCB0aGlzIHZhbHVlIGlzIHBvcHVsYXRlZCBvbiB0aGUgc2VydmVyIGR1cmluZyBkaXJlY3RpdmUgcHJvY2Vzc2luZywgbWVhbmluZyBpdHMgdmFsdWUgZG9lc24ndCBjaGFuZ2UgdW50aWwgdGhlIGZpcnN0IGNsaWVudC1zaWRlIG5hdmlnYXRpb24gb2NjdXJzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gY29tYmluZSA8Y29kZT53YXRjaCgpPC9jb2RlPiBhbmQgPGNvZGU+c3RhdGUudXJsPC9jb2RlPiB0byByZWxpYWJseSB0cmFjayBjbGllbnQtc2lkZSBuYXZpZ2F0aW9ucyDigJQgZm9yIGV4YW1wbGUsIHRvIHNlbmQgYW5hbHl0aWNzIHdpdGggdmlydHVhbCBwYWdlIHZpZXdzOmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGxhbmd1YWdlbGluZU51bWJlcnNmaXJzdExpbmVOdW1iZXJ3cmFwTGluZXNtYWtlVVJMc0NsaWNrYWJsZXF1aWNrQ29kZWlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDk0NCI+d29yZHByZXNzLWRldmVsb3AjMTA5NDQ8L2E+IGZvciBtb3JlIGRldGFpbHMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UHJvcHMgdG8gQGx1aXNoZXJyYW56IGZvciB0aGUgaW1wbGVtZW50YXRpb24uZHJvcENhcGlubmVyQmxvY2tzTnc8Y2Q+d2FjaCgpPC9jb2RlPmZvbldyZFByczcuMCBpcm9kdWNlcyA8Y2RlPmF0Y2goKTwvY29kZT5mbmNvbiBpbiB0aDxjb2RlPkB3b3JkcHJlc3MvaW50ZXJjaXZpeTwvY29kZT4gcGFja2FnZS4gSXQgc3Vic2NvIGNhbmdlc2luIGFueSByZWFjaXZ2bHVjY3NzZWRpc2lkZWNhbGxiYWNrLCByZS1ydW5udGggY2FsYmFjayB3aHZlcmhvc3ZhZWNoZy48L3A+CjwhLS0vd3A6cGFyYWdyYXBoLS0+Cgo8IS0tIHdwOnByYWdyYXBoLS0+CjxwPkN1cm50bHksIHRoZSBJbnRlcmFpdHkgQVBJIHByb3ZpZDxjZGU+ZGFhLXdwLXdhdGM8L2NvZD5hICBkaXJjdGl2ZWlkRE9NICdsZmVjeWNsZWYgYWN0ZyB0Y2huZ2VzLkh3ZXZlcix0aHJlaW5wb2dybW1hY28gb2JzZXIgdGhvZWNoZXNpZHBuZGx5ZnRET00g4oCUIGZvciBleGEsdG8gdW4gc2lkIGVmZmVhdHRvcmx2ZWxldHVwIGdnaSxvcnN5bm9uenN0dGUgYmV0d2VlbiB0b3Jlcy5UaGU8Y28+d2F0Y2goKTwvY29kPiBmdWNpb25maWxscyB0aGlzIGdhcHN5bnR4aGlnaGxpZ2h0ZS9jb2RlIHsibG51Z2UiOiJqc2NyaXQifXJlY2w9IndwLWJsb2NrLXN5dHhoZ2hsaWdodHItY29kZSI+aW1wb3J0e3NyZSx3dGNofSBmcm9tICdAd29ycHNzL2ludGVyYWl0eSc7Cgpjb25zdHsgc3R0IH0gPSBzdG9yZSggJ215UGx1Z2knLHsKICAgIHN0dGU6ewogICAgICAgIGNvdW5lOiAwLAogICAgfSwKfSApOwoKLy8gUnVucyBtbWl0ZWx5IGFuZCByZS1ydW4gd2VuZXZlcmBzdGF0ZS51bnRyYCBoYW5ncy4Kd2F0Y2goICg9PiB7CiAgICBjbnNvZS5nKCAnQ291bnRyaXMnICsgc2F0LmNvdW50ZXIpOwp9KTs8L3ByZT4KPCEtLS93cDp5bnRheGlnaGxpZ2h0ZXIvY2RlIC0tPgoKPCEtLSBwOnBhcmFncmFwaC0tPgo8cD5UaGUgZnVuY3RvcmV1cm5zIGFuIDxjb2RlPnVud2F0YzwvY29kPmNhYmFjayB0aGF0IHN0cHN0aCB3dGNocjpqc2NyaXB0Y29uc3Vud2NoID0gKCAoKSA+IHsKICAgIG9ub2xlbG9nKCAnQ291bnRlIGkgJyArIHNlLm91bnRlciApO30pOwoKLy9MYXRlcix0b3NvIGc6CnVudygpY2FsYmNrYyBzb3VybiBjbGVhcG5jdG9uVGlzY2xudXJ1bnMgZnJlYXJlLWV0bndodGh3YWNycG9lZCBmdjxjb2Q+YygpPC9jZD46anNjcmlwdGNvbnMgbndhY2ggPSB3YWNoKCAoKSA9PiB7CiAgICBjc3QgaGFuZGxlciA9ICgpID0+IHsgLyogLi4uICovIH07bWV0LmRkRXZlTHRuZXIoICdsY2snLCBoYWRsZXIgKTsKcmVyICgpID4gewogICAgICAgIGRvY21lLnJlbXZlRXZldExpdG5lciggJ2xjaycsIGhhZGxlciApIH07fSApNTUzNTUzc3RlLm52YXRpbnBvcHJzIGluIGNvZGU+Y29yZXJvdXRlcjwvY29kZT48L3N0ZS5udmF0aW4uaGFzU3RhdGRhbjxjbz5hdC52aWdhLmhGbnNoZWQ8L29kZT5vcGVyaWVzIGggPG9kPmNvL3J1dGVyPC9jb2RlPnN0cmUgZW5lcm5hbGRpbHNmcm9hZGdiciBhbm1zLlRzIGUgdmUgbm5icHRvZiB0aHB1YmxpIEFQSXRhcnRnaW4gNzBhY2Nlc2luZzxjb2U+c3RhdGUubmF2Z2F0aW9uPC9jb2RlPiBmb20gdGggPG9kZT5jb3JlL3JvdXI8L2NvZGU+c3RvcmUgdHJpZ2dyYSBjb25zb2xlIHdhbmluZyBpbiBkdmVsb3BlbnQgbWQgKDxjb2U+U0NSSVBUX0RFQlVHPC9jb2RlPikuRHJlY3RhY2NlcyB3aWxsIHN0b3Agd29ya2luZyBpbiBhIGZ0dXJlIHZlcmlvbiBvZiBXb3JkUHJzcy4gQW4gb2ZmaWNpYWwgbWNoYWlzbSBmb3IgcmFja2luZ25haWdhdGlvbiB0YXRlIHdsbCBiZSBpbnRyZHVjZWQgaSBXb3JkUHJlcyA3MS44ODI4ODJAeWp3ZWF0ZS51cmxmcm9tY29yL3JvdXRyaXMgbm93IG9wdWxhdGRvbiB0IHN2ZXJ2YS5saXRoZSBjb3Ivcm91ZXJzcndzIG5pYWxpemRvbnRjaWJ0dHdpZG93LmxvYS5oZi4gU2F0aWluV29kUGVzNy4wLGhpYXUgaW9wdWFkb24gc3JkdWlnZGlyZXYgcGNlcyxtaW5ndHNkb24nYWduc2NpbnRudmlvIGNjdXMubWFrc2lvc2JvY29tYmluPGNvZGU+d2NoKCk8L2NvZGU+bmRzdGF0LnVydG8gbGFibHl0YWNrIGNpbnQtaWRlbmF2aWdhaW5z4oCUZnJ4YW1sLHRzbmRhbHl0aXN3dGh2aXR1YWxldndzOnN5bnR4aGlnaGxpZ2h0ZS9jb2RlIHsibG51Z2UiOiJqc2NyaXQifWNsc3M9IndwLWJsY2stc3l0eGhpZ2hsaWdodGVyLWNvIj5pb3J0eyB0b3Isd2FjfW9tICdAJzsKCnMgeyBhdCB9ID0gdG9yZSggJ29lZXInKTsKCnd0KCgpID17Ci8vIFRpcyB1biBvbiB5IGx0cyBndC4KICAgIGRBbmx5c1BhVml3KHR1cmwgKTsKfSApO3Jlc3ludHhoaWxpZ2h0ZXIvY29kZXdvcmRwcnNzLWR2ZWxvcDE5NHdvcmRwcmVzcy1kZXZlbG9wMTk0Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7ZG9jdW1lbnRNZXRhc2F2ZWRBdGRvY3VtZW50TWV0YXNhdmVkQnk+Pj4+Pj4mZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsuLCBmLCBmIHRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHVzZWQgZm9yIHRoZWNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFN0YXJ0aW5nIGluIFdvcmRQcmVzcyA3LjAsIHRoaXMgdmFsdWUgaXMgcG9wdWxhdGVkIG9uIHRoZSBzZXJ2ZXIgZHVyaW5nIGRpcmVjdGl2ZSBwcm9jZXNzaW5nLCBtZWFuaW5nIGl0cyB2YWx1ZSBkb2Vzbid0IGNoYW5nZSB1bnRpbCB0aGUgZmlyc3QgY2xpZW50LXNpZGUgbmF2aWdhdGlvbiBvY2N1cnMuZHJvcENhcGlubmVyQmxvY2tzIGNsaWVudC1zaWRlIG5hdmlnYXRpb25zIOKAlG9yIGV4YW1wbGUsIHRvIHNlbmQgYW5hbHl0aWNzIHdpdGggdmlydHVhbCBwYWdlIHZpZXdzLiBGLCBmb24gZWFjaGd1BQcIBAgECAYIBS4DCAc9CkEBBQECQQECEEMANQYBAkECQgBBBEIBQQEDAgMCQQMCQQECQQUDAQMCQQICAQRBAQMBAwIBAgMCQQACQQACAQJBAAIBAkEABAMBAkEGQgABBAUBAgEHCkEBAgECQQBCAQcCQQEFAQIDB0EIDEEAQgABAgRBAQIERQBBAAJBAgUCQQYDQQNCAAEEAwECQQACA0IABkIAAwECQQFCAAECAUIAAwEDQQACQQUDQQQCJkEHBwMBAwJBAQMBAkEAAgECQQMCBAJBAAJBBwJBBUIAQQAGAQJBAAJBAQJBAgJBAwMBAkEGAkECQgABBEECA0EAiQEDNAIBBQEEQgABAwQPQQEHQQACQQICAQJBAwIBA0EABQsBEQECBAUBDIkBBAEDAQIBBAEDQQAIQQEFAkECA0EBAkEBBAEFAQIBAwIEQQYCAQJBAAIBBEEBEEEBBQEGAQIBBkEBBgEDBQQBBgEJAUIAAQIBAgEGQQEGAQMCA0ECBQEDAQJBAAIPAgsBAgEGAQQBEIkBAzQCAQJBAQIGBwEDAQkBAkEBBwEGQQACAQRBBwQCARMBAgECAQMBAgEGQQMEQQUFBAYBBwEDAQu\/AQJBAAQCQQCiARWCAgECAQQCQQACCAJBAQJBAj0BAgEEAkECCAEIAQQCAQYBBAECAQYBRABBAQNBAgJBAgYCQQACAQNBAEIAAQJBAUIAQQACQQAQBAEEAQsBAwEGBUEABwERQQIGQQQFAQwCBQECQQEDAQRBAgMBAgEGAQUCBAEEAQJBAQIBBAEFQQIDAUIAAQM4QgABCkEBAgNBBgJBABdBEQJBAwJBBLEBAwI8QwBEAJEBQQALAQYBCAELAQIBCLIBBAZBAAUBAwgDBwMBAgECCAJBAUIBATUEAwcBA0EBAgEWAQUBAwhBAAUBBQECQQACCQhBAgYDAQcBBgdBAAIDAgUBAkEAAgkBAgEFAUIAAQQBAgEPAgNBAQhBAQIBCwQBAkEAD0EBDAETASEFA0EAAgQIAQQBBAcDQQECCgENAQ8BAgEOQQAGAQIBQgBBAQJBAEIAQQADAQZBAARBAAIBAgEDQQAMQQEDQQADBQECAQIBCAEDAQRBAAIIAQUBBQYCAQUBAgEKAQMBCAEFQQEFAQ0BAwEGQQELAQgBEgYEQQEDAQJBAQgBLwERAQIBBgEGAQRBAQMBCQEGAQcBCAEHAQQ7QQAEAQJBAQYBAgEFAQMBBQMCAQRCAgcCQQEIA0IAAQJBAANBBgIBAgEGAQIBA0EEAgFCAEEBBQECQQQCAQlBAQIFJUEHBwMBBAIGAQJBBkIABEEHAgEDARJBAAkEAQgBCgEMCwUCBQEDQQAHAQJBAgMBDkIAAQQBDEEAAwIGAQpBAAcBAgEDAQJBAQgBBAMEARIBBAEFAQQBAgECQwABAwEDAgNBAQIBBQEEAQoBCAEDQQACEAEDAQYBBQEDAQYBDQECAQYCAwtBAAIBAwGJAQMBAgECBkEBQgBBAgKUAggHCAYIDggOCAsIBkgBBggEGBYTHxogGy8qCRkhIhYICggECAYIBw8ECgcwBQsIBw8ECgeIBgcLCAcPBAoHhAIHCwgHDwQKBwgLDwkRCQsIBw8ECgevBAcLCAcPBAoHCAsPCREJCwgHDwQKB5wBBwsIBw8ECgeCAQcLCAcPBAoHMAULCAcPBAoHkgUHCwgHDwQKB50BBwsIBw8VBAoHnAIHCwgHDwQKB5YBBwsIBw8ECgeEAQULCAcPBAoHiwQHCwgHDwQKBzsHCwgHDwQKB5oEBwsIBw8ECgeeAQcLCAcPBAoHrgIHCwgHDwQKB7cGBwsIBw8ECgecAQcLCAcPBAoHLQcLCAcECkcACwECIQUIBwQKB68DBwsIBwQKB6wDBJoCBwsIBwQKBwgLDwkRCQsIBwQKB40BBwsIBwQKBwgLDwkRCQsIBwQKB5sCBwsIBwQKBwgLDwkRCQsIBwQKB5wBBwsIBwQKBy0HCwgHBAoHjwEFCwgHBAoHkwInFQE5BwsIBwQKB6cFBwsIBwQKB4ABHAcLCAcECgcsBwsIBwQKB5MBBQsIBwQKB5sCrQIHCwgHBAoHowGRAQEHCwgHBAoHCAsPCREJCwgHBAoHiAERHAcLCAcECgctBwtBAAIBAwsBAgEEAQUHQwANAQIIFgEDGgMFCwIBQgAEAQQRAgMIQwACAQIBCg0OBwkBEA4CBQkFQQEEBUEABEEAB0EAAwIBAgUBBkIAQQFDAAEHBAFCAEEBQgBBAA0BAwYFAgMBAwJDAAECAwIBAgsGQwANBAEDDgQLCUEACgNCAA0BAgcOQQADAQMMAQkMBAEUAggDDgEaAgEPAgYHQwAEC0EACAMCCQECBQIIBA0EBQwNCxABAhQFAQIMQgEDAgcEA0UAAQcCAwwCBgIJAUYAAkEBBkICQQACRAABAwIBQgEFAQIBBEEAQgFBAAIDQQAEQQAFAQIHBAEDBwgBCBEBD0IABUEABgFHAAECAQQBDgIEBQMBBgEHBkMAAgECAQIDAQNBAAIBBQkPAgMBAwhBAAIDAQIBBAJBAAZEAANBAEIAAwILAgNBAAUBA0EAA0EABAECQQMCQQRFAEQAAQNBAEQAAwsPBQIMCAYFAQwJRQABBRcBRAAaCA0RAwgHAggGCgcIAwJDAAJBAQcEAwUBBwYBBAIDQQMEAwQCQQECAQUBAkECQgAGAQIBAwFCAkEABAJBAAIDQQADQQACQQAEAUIAQQEDQgFBBAIBAkEAAwIDQQQGBwsCBEMAAQQBBQFDAAYBAkEBA0ECAgVBAEIABEEAAwQLCUEACgMCCQUBD0MAAgMBAkEABQQBAwIFB0EAAwVBAAQCBAMCBAJBBAYDAgNCAAELAgQDDAYEBUEBEUEBRAQMBwwHQQREBAFDAAEoAggHBAoHrQIHCxgCHgQBEQFDAEEBBAIUAQQAAAEAAAABCAANAQIAiAMBAQCuAUIBAQBBAAIAQQACAEEAAgBBAABBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAABBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAAZBlAEDQXwB2BMAfQF3EzIwMjYtMDItMjNUMjE6MjE6MzB3MWNoYW5nZXMtdG8tdGhlLWludGVyYWN0aXZpdHktYXBpLWluLXdvcmRwcmVzcy02LTl3BWRyYWZ0fYGR+Q19AHcEb3BlbncAeXcAdwhzdGFuZGFyZHcAdwB5eXcAeX0AeXl3AHcAeHl2AhhpbWFnZV9nZW5lcmF0b3Jfc2V0dGluZ3N2BAh0ZW1wbGF0ZXcHaGlnaHdheRBkZWZhdWx0X2ltYWdlX2lkfQAEZm9udHcAB2VuYWJsZWR5B3ZlcnNpb259AnUBfZcSdQR9q1h9oxZ9uFl9tUp3JDc3MjUzMDJhLTEyZTItNGNmZi1hZTg3LTdmNGZjZTA1NmVjZHh3UjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+U3RhbmRhcmRpemVkIEFQSSB0byBzZXQgdW5pcXVlIElEcyBpbiBkaXJlY3RpdmVzPC9oMz53DGNvcmUvaGVhZGluZ30DdyQ0ZWQwMGY1MS1lZDc0LTQyODQtYTUzZC01MGJlN2YzOTY1MTB4d48DPHA+SFRNTCBkb2VzIG5vdCBhbGxvdyBtdWx0aXBsZSBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZSBvbiBhIHNpbmdsZSBlbGVtZW50LCB5ZXQgbXVsdGlwbGUgcGx1Z2lucyBtYXkgbmVlZCB0byBhZGQgZGlyZWN0aXZlcyBvZiB0aGUgc2FtZSB0eXBlIHRvIHRoZSBzYW1lIGVsZW1lbnQuIFRvIGFkZHJlc3MgdGhpcywgV29yZFByZXNzIDYuOSBpbnRyb2R1Y2VzIGEgc3RhbmRhcmRpemVkIHdheSB0byBhc3NpZ24gdW5pcXVlIElEcyB0byBJbnRlcmFjdGl2aXR5IEFQSSBkaXJlY3RpdmVzLCBhbGxvd2luZyBhbiBlbGVtZW50IHRvIGhhdmUgbXVsdGlwbGUgZGlyZWN0aXZlcyBvZiB0aGUgc2FtZSB0eXBlLCBhcyBsb25nIGFzIGVhY2ggZGlyZWN0aXZlIGhhcyBhIGRpZmZlcmVudCBJRC48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDQ0ZWE0YzBkLTg4ZmUtNDc2Mi04ZTE1LWE2ZDEzY2I2ODFmNHh3iwE8cD5UbyBhc3NpZ24gYSB1bmlxdWUgSUQgdG8gYSBkaXJlY3RpdmUsIGFwcGVuZCBhIHRyaXBsZS1kYXNoICg8Y29kZT4tLS08L2NvZGU+KSBmb2xsb3dlZCBieSB0aGUgSUQsIGFzIHNob3duIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZS48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDIyZDFkNzQ5LTcyOGQtNDc3Zi1hMGMyLWYxNTQ5NzdjNjFiMnh3ugE8cHJlIGNsYXNzPSJ3cC1ibG9jay1zeW50YXhoaWdobGlnaHRlci1jb2RlIj4mbHQ7ZGl2CiAgICBkYXRhLXdwLXdhdGNoLS0tbXktdW5pcXVlLWlkPSJjYWxsYmFja3MuZmlyc3RXYXRjaCIKICAgIGRhdGEtd3Atd2F0Y2gtLS1hbm90aGVyLWlkPSJjYWxsYmFja3Muc2Vjb25kV2F0Y2giCiZndDsmbHQ7L2RpdiZndDs8L3ByZT53FnN5bnRheGhpZ2hsaWdodGVyL2NvZGV3ezxkaXYKICAgIGRhdGEtd3Atd2F0Y2gtLS1teS11bmlxdWUtaWQ9ImNhbGxiYWNrcy5maXJzdFdhdGNoIgogICAgZGF0YS13cC13YXRjaC0tLWFub3RoZXItaWQ9ImNhbGxiYWNrcy5zZWNvbmRXYXRjaCIKPjwvZGl2PncDeG1seHcBMXh5eHckOTYwYWZkMjEtNGJhYi00NzVjLThiNzEtNzFjYjkyZDk0MWRieHe2AjxwPlRoZSB0cmlwbGUtZGFzaCBzeW50YXggdW5hbWJpZ3VvdXNseSBkaWZmZXJlbnRpYXRlcyB1bmlxdWUgSURzIGZyb20gc3VmZml4ZXMuIEluIHRoZSBleGFtcGxlIGJlbG93LCA8Y29kZT5jbGljazwvY29kZT4gaXMgdGhlIHN1ZmZpeCwgd2hpbGUgPGNvZGU+cGx1Z2luLWE8L2NvZGU+IGFuZCA8Y29kZT5wbHVnaW4tYjwvY29kZT4gYXJlIHRoZSB1bmlxdWUgSURzLiBUaGUgb3JkZXIgaXMgYWxzbyBpbXBvcnRhbnQ6IHRoZSB1bmlxdWUgSUQgbXVzdCBhbHdheXMgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lLjwvcD53DmNvcmUvcGFyYWdyYXBoeXckMzI5ZGFlMDYtYjY0Ny00NjJmLTljNGUtOWNkMmY1NWNmZmJmeHfjATxwcmUgY2xhc3M9IndwLWJsb2NrLXN5bnRheGhpZ2hsaWdodGVyLWNvZGUiPiZsdDtidXR0b24KICAgIGRhdGEtd3Atb24tLWNsaWNrLS0tcGx1Z2luLWE9InBsdWdpbi1hOjphY3Rpb25zLnNvbWVBY3Rpb24iCiAgICBkYXRhLXdwLW9uLS1jbGljay0tLXBsdWdpbi1iPSJwbHVnaW4tYjo6YWN0aW9ucy5zb21lQWN0aW9uIgomZ3Q7CiAgQnV0dG9uIGV4YW1wbGUKJmx0Oy9idXR0b24mZ3Q7PC9wcmU+dxZzeW50YXhoaWdobGlnaHRlci9jb2Rld6QBPGJ1dHRvbgogICAgZGF0YS13cC1vbi0tY2xpY2stLS1wbHVnaW4tYT0icGx1Z2luLWE6OmFjdGlvbnMuc29tZUFjdGlvbiIKICAgIGRhdGEtd3Atb24tLWNsaWNrLS0tcGx1Z2luLWI9InBsdWdpbi1iOjphY3Rpb25zLnNvbWVBY3Rpb24iCj4KICBCdXR0b24gZXhhbXBsZQo8L2J1dHRvbj53A3htbHh3ATF4eXh3JDczYTllMzk4LTgzZmEtNGM1Mi04NTI4LTUwYTJlNmYzNmNjOHh3YzxwPlNlZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcyMTYxIj4jNzIxNjE8L2E+IGZvciBtb3JlIGRldGFpbHMuPC9wPncOY29yZS9wYXJhZ3JhcGh5dyQ1OTBjMDE2ZC1kODcxLTQxMDYtYjhhMi0xZDI4ZThlYjlmZDZ4d0k8cD5Qcm9wcyB0byBAbHVpc2hlcnJhbnogYW5kIEBzYW50b3NndWlsbGFtb3QgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi48L3A+dw5jb3JlL3BhcmFncmFwaHl3JGNkNzMxMzFhLWFkNjItNDBhZS1iYWM4LWMxYzM3YjJhYzE5ZXh3UjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+RGVwcmVjYXRlZCA8Y29kZT5kYXRhLXdwLWlnbm9yZTwvY29kZT4gZGlyZWN0aXZlPC9oMz53DGNvcmUvaGVhZGluZ30DdyRkZWUzZGVjNi1lODI1LTRkNDgtYjY4Yy1iNzU4NzNlYzkwMTJ4d9kCPHA+VGhlIDxjb2RlPmRhdGEtd3AtaWdub3JlPC9jb2RlPiBkaXJlY3RpdmUgd2FzIGRlc2lnbmVkIHRvIHByZXZlbnQgaHlkcmF0aW9uIG9mIGEgc3BlY2lmaWMgcGFydCBvZiBhbiBpbnRlcmFjdGl2ZSByZWdpb24uIEhvd2V2ZXIsIGl0cyBpbXBsZW1lbnRhdGlvbiBicm9rZSBjb250ZXh0IGluaGVyaXRhbmNlIGFuZCBjYXVzZWQgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBjbGllbnQtc2lkZSBuYXZpZ2F0aW9uIGZlYXR1cmUgb2YgdGhlIDxjb2RlPkB3b3JkcHJlc3MvaW50ZXJhY3Rpdml0eS1yb3V0ZXI8L2NvZGU+IG1vZHVsZSwgd2l0aG91dCBhZGRyZXNzaW5nIGEgcmVhbCB1c2UgY2FzZS48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDczZDUxMzAzLTFjZTYtNDQ3ZS05NWVkLTVmMWU4ZDA3NjFkOHh3ZDxwPlNpbmNlIFdvcmRQcmVzcyA2LjksIHRoaXMgZGlyZWN0aXZlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBzdWJzZXF1ZW50IHZlcnNpb25zLjwvcD53DmNvcmUvcGFyYWdyYXBoeXckMGVmMGFiNWUtM2RiNC00MDdhLThmOWMtNzdjZTZlODIzMGVmeXejATxwPlNlZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcwOTQ1Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcwOTQ1Ij4jNzA5NDU8L2E+PC9hPiBmb3IgbW9yZSBkZXRhaWxzLjwvcD52BQlibG9ja05hbWV3DmNvcmUvcGFyYWdyYXBoBWF0dHJzdgALaW5uZXJCbG9ja3N1AAlpbm5lckhUTUx3pQEKPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPiM3MDk0NTwvYT48L2E+IGZvciBtb3JlIGRldGFpbHMuPC9wPgoMaW5uZXJDb250ZW50dQF3pQEKPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA5NDUiPiM3MDk0NTwvYT48L2E+IGZvciBtb3JlIGRldGFpbHMuPC9wPgp3DmNvcmUvcGFyYWdyYXBoeXckODc0ZDI3MGYtNzcwZC00NGRmLTgwODctY2I1YmY5ZmVjYTdleHddPHA+UHJvcHMgdG8gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhaGlsMTYxNyI+QFNhaGlsMTYxNzwvYT4gZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDJiY2E3YzczLWE0Y2EtNDdmMC05YjNiLWYxN2U5ODljNDQxNXh3ZjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+TmV3IDxjb2RlPkFzeW5jQWN0aW9uPC9jb2RlPiBhbmQgPGNvZGU+VHlwZVlpZWxkPC9jb2RlPiB0eXBlIGhlbHBlcnM8L2gzPncMY29yZS9oZWFkaW5nfQN3JDFkZGU4NDFlLWQ1NGItNDJhMC04NDczLWVmYzk1MGJjYzA3YXh3kgI8cD5Xb3JkUHJlc3MgNi45IGludHJvZHVjZXMgdHdvIG5ldyBUeXBlU2NyaXB0IGhlbHBlciB0eXBlcywgPGNvZGU+QXN5bmNBY3Rpb24mbHQ7UmV0dXJuVHlwZSZndDs8L2NvZGU+IGFuZCA8Y29kZT5UeXBlWWllbGQmbHQ7VCZndDs8L2NvZGU+LCB0byB0aGUgSW50ZXJhY3Rpdml0eSBBUEkuIFRoZXNlIHR5cGVzIGhlbHAgZGV2ZWxvcGVycyBhZGRyZXNzIHBvdGVudGlhbCBUeXBlU2NyaXB0IGlzc3VlcyB3aGVuIHdvcmtpbmcgd2l0aCBhc3luY2hyb25vdXMgYWN0aW9ucy48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDNlNTk5NWQxLWI1NDgtNDBhZi1iYzhjLWJmNzIzZTRlYmEzMnh3QjxwPjxzdHJvbmc+PGNvZGU+QXN5bmNBY3Rpb24mbHQ7UmV0dXJuVHlwZSZndDs8L2NvZGU+PC9zdHJvbmc+PC9wPncOY29yZS9wYXJhZ3JhcGh5dyQ1NGNhZGJjZC1hNjM0LTRmODctOTI1Mi0xNTYxYjM1ZTk4ZWN4d6ECPHA+VGhpcyBoZWxwZXIgbGV0cyBkZXZlbG9wZXJzIGV4cGxpY2l0bHkgdHlwZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuIGFzeW5jaHJvbm91cyBhY3Rpb24gKGdlbmVyYXRvcikuIEJ5IHVzaW5nIDxjb2RlPmFueTwvY29kZT4gZm9yIHlpZWxkZWQgdmFsdWVzLCBpdCBicmVha3MgY2lyY3VsYXIgdHlwZSBkZXBlbmRlbmNpZXMgd2hlbiA8Y29kZT5zdGF0ZTwvY29kZT4gaXMgdXNlZCB3aXRoaW4gPGNvZGU+eWllbGQ8L2NvZGU+IGV4cHJlc3Npb25zIG9yIGluIHRoZSBmaW5hbCByZXR1cm4gdmFsdWUuPC9wPncOY29yZS9wYXJhZ3JhcGh5dyQ3MWM1OGI1Yi1iNGM4LTQwNmQtOWNlYi1jNzQxOGU1YzA1YzV4d2U8cD48c3Ryb25nPjxjb2RlPlR5cGVZaWVsZCZsdDtUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9Jmd0OyBQcm9taXNlJmx0O2FueSZndDs8L2NvZGU+PC9zdHJvbmc+PC9wPncOY29yZS9wYXJhZ3JhcGh5dyRhOTAxZTI1Zi1lNWU1LTRkZGYtOWE2Mi00N2IwZDgwMzI1OTl4d7UBPHA+VGhpcyBoZWxwZXIgbGV0cyBkZXZlbG9wZXJzIGV4cGxpY2l0bHkgdHlwZSB0aGUgdmFsdWUgdGhhdCBhIDxjb2RlPnlpZWxkPC9jb2RlPiBleHByZXNzaW9uIHJlc29sdmVzIHRvIGJ5IHByb3ZpZGluZyB0aGUgdHlwZSBvZiB0aGUgYXN5bmMgZnVuY3Rpb24gb3Igb3BlcmF0aW9uIGJlaW5nIHlpZWxkZWQuPC9wPncOY29yZS9wYXJhZ3JhcGh5dyQ5ZWY0ZTZiZC0zNDQ0LTQ0MDMtOThmYi1hNWJlNmJiNTFlMzJ4d74DPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLndvcmRwcmVzcy5vcmcvYmxvY2stZWRpdG9yL3JlZmVyZW5jZS1ndWlkZXMvaW50ZXJhY3Rpdml0eS1hcGkvY29yZS1jb25jZXB0cy91c2luZy10eXBlc2NyaXB0LyN0eXBpbmctYXN5bmNocm9ub3VzLWFjdGlvbnMiPlR5cGluZyBhc3luY2hyb25vdXMgYWN0aW9uczwvYT4gc2VjdGlvbiBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9ibG9jay1lZGl0b3IvcmVmZXJlbmNlLWd1aWRlcy9pbnRlcmFjdGl2aXR5LWFwaS9jb3JlLWNvbmNlcHRzL3VzaW5nLXR5cGVzY3JpcCI+SW50ZXJhY3Rpdml0eSBBUEkgcmVmZXJlbmNlICZndDsgQ29yZSBDb25jZXB0cyAmZ3Q7IFVzaW5nIFR5cGVTY3JpcHQ8L2E+IGd1aWRlLjwvcD53DmNvcmUvcGFyYWdyYXBoeXckYWU1ODRmNDgtY2Y0Yi00OWRlLThkYTctODg2MmRlYmUxOGI0eHdjPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzA0MjIiPiM3MDQyMjwvYT4gZm9yIG1vcmUgZGV0YWlscy48L3A+dw5jb3JlL3BhcmFncmFwaHl3JGVlMzFhYjcyLTlhODEtNDg3NS1hYmRmLTQ5YWQ3ZWYxYWM0ZHh3NDxwPlByb3BzIHRvIEBsdWlzaGVycmFueiBmb3IgdGhlIGltcGxlbWVudGF0aW9uLjwvcD53DmNvcmUvcGFyYWdyYXBoeXUFfatYfaMWfbhZfbVKfaxYdQZ9q1h9rFh9oxZ9uFl9tUp9ilt1BX2rWH2sWH2jFn2KW321SnUEfaxYfaMWfYpbfbVKdyRjMzQ3YWY1NS0xNzY4LTQwNDgtYTA0MC0xNDc4NzE1YjgxZGR4dw5jb3JlL3BhcmFncmFwaHl3JGU3ZDc3ZmY0LWNiMjItNGU2YS04OWQ2LWE5MTk3YjY3MzIwN3cMY29yZS9oZWFkaW5nfQN3JDc4MDFkNDQwLTNhMjEtNDI0Yy04MzBmLTYyZWNiYjc4YzM0MXh3DmNvcmUvcGFyYWdyYXBoeXckMTdmOGExYzctYTQ2OC00MjZlLTkzODUtMGFhMjM4NzJjY2I3eHcOY29yZS9wYXJhZ3JhcGh5dyQ5ZWM3YmE1Mi01YjlhLTQ0ZDItYTcyYy03MmE3MDY5OWE0YjN4dxZzeW50YXhoaWdobGlnaHRlci9jb2Rld5YCaW1wb3J0IHsgc3RvcmUsIHdhdGNoIH0gZnJvbSAnQHdvcmRwcmVzcy9pbnRlcmFjdGl2aXR5JzsKCmNvbnN0IHsgc3RhdGUgfSA9IHN0b3JlKCAnbXlQbHVnaW4nLCB7CiAgICBzdGF0ZTogewogICAgICAgIGNvdW50ZXI6IDAsCiAgICB9LAp9ICk7CgovLyBSdW5zIGltbWVkaWF0ZWx5IGFuZCByZS1ydW5zIHdoZW5ldmVyIGBzdGF0ZS5jb3VudGVyYCBjaGFuZ2VzLgp3YXRjaCggKCkgPT4gewogICAgY29uc29sZS5sb2coICdDb3VudGVyIGlzICcgKyBzdGF0ZS5jb3VudGVyICk7Cn0gKTt3BXBsYWlueHcBMXh5eHckZDY3ZTlhOGYtY2Q4ZS00YjI2LWJjMGEtNzZiOTY2ZjAxNzA3eHcOY29yZS9wYXJhZ3JhcGh5dyQ3ZDM1MjRhMS0yYWI3LTRhYzUtYjQ2ZS1lNWYyNDIwNzQyODd4dxZzeW50YXhoaWdobGlnaHRlci9jb2Rld31jb25zdCB1bndhdGNoID0gd2F0Y2goICgpID0+IHsKICAgIGNvbnNvbGUubG9nKCAnQ291bnRlciBpcyAnICsgc3RhdGUuY291bnRlciApOwp9ICk7CgovLyBMYXRlciwgdG8gc3RvcCB3YXRjaGluZzoKdW53YXRjaCgpO3cFcGxhaW54dwExeHl4dyQ4ZWVlNWI5ZS1lOGQwLTQ2YWYtOWExYy1mNzU2MzYxNmZkYmN4dw5jb3JlL3BhcmFncmFwaHl3JDNjOTBmZDk2LTFmZmMtNDJlOC05ZDNmLTU4MzJmNWNiODNjZHh3FnN5bnRheGhpZ2hsaWdodGVyL2NvZGV31AFjb25zdCB1bndhdGNoID0gd2F0Y2goICgpID0+IHsKICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiB7IC8qIC4uLiAqLyB9OwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgaGFuZGxlciApOwoKICAgIHJldHVybiAoKSA9PiB7CiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgaGFuZGxlciApOwogICAgfTsKfSApO3cFcGxhaW54dwExeHl4dyRkYjM0MzhlMi0wNzBkLTQ3MDYtYjhiZS0zZTA4MzExZmExYjl4dw5jb3JlL3BhcmFncmFwaHl3JDQyYmNjYTM5LTY0YWYtNGZhZS05MWVkLWM5NjhlZmM0MjAzZnh3DmNvcmUvcGFyYWdyYXBoeXckZThmOGI1NGMtMGI5Zi00YjYxLTk5NzUtYzdiYTllYzgwMTNkeHcMY29yZS9oZWFkaW5nfQN3JDRhYzE1ZDQ0LTdiM2EtNDZjOC04MTcyLTczYTc1NTY4NjI3YXh3DmNvcmUvcGFyYWdyYXBoeXckMTY4YjFlYmYtZmRkNi00MjhmLTk3NjMtYWFhMzY1YWM3ZGM2eHcOY29yZS9wYXJhZ3JhcGh5dyQwY2Q0NzMwNS05YjJiLTRhMzgtYmE5NC0wMDZjNTZmNWQxMTV4dw5jb3JlL3BhcmFncmFwaHl3JDFiZWIyMTExLTljMjgtNDhlZC05MGM2LWVmNjEyNDJkMGZiZHh3DmNvcmUvcGFyYWdyYXBoeXckMGRjYjQ4YjUtMTg3Zi00NTdiLWEzZWQtNzY0MTI0ZWM4ZmFmeHcMY29yZS9oZWFkaW5nfQN3JDJjMWQ2YTA5LWRmZWMtNGRiZi05ZmIzLWIwNWNmMjlhYjI1ZXh3DmNvcmUvcGFyYWdyYXBoeXckZDk5NmUxMDAtZmJmOC00OWE5LWFmYzctN2FhYWJkYzk2NTZheHcOY29yZS9wYXJhZ3JhcGh5dyQ0MDg1NTYyOC05YWFjLTRkNWItOGYyZS1kODU3MTM4Y2U2ODh4dxZzeW50YXhoaWdobGlnaHRlci9jb2Rld9IBaW1wb3J0IHsgc3RvcmUsIHdhdGNoIH0gZnJvbSAnQHdvcmRwcmVzcy9pbnRlcmFjdGl2aXR5JzsKCmNvbnN0IHsgc3RhdGUgfSA9IHN0b3JlKCAnY29yZS9yb3V0ZXInICk7Cgp3YXRjaCggKCkgPT4gewogICAgLy8gVGhpcyBydW5zIG9uIGV2ZXJ5IGNsaWVudC1zaWRlIG5hdmlnYXRpb24uCiAgICBzZW5kQW5hbHl0aWNzUGFnZVZpZXcoIHN0YXRlLnVybCApOwp9ICk7dwVwbGFpbnh3ATF4eXh3JDBhZWZlZWUyLWJhMjctNGFhZS1iNTY5LTIyYTE4ZDFkNTg0OHh3DmNvcmUvcGFyYWdyYXBoeXckYzdlYzBhZDEtZTMzOC00NTc2LWE3ZTktYTIwM2JkNWFmZDBieHcOY29yZS9wYXJhZ3JhcGh5dwdqc2NyaXB0dwdqc2NyaXB0dwdqc2NyaXB0dwdqc2NyaXB0dxMyMDI2LTAyLTIzVDIxOjIzOjIydxMyMDI2LTAyLTIzVDIxOjIzOjI1e0J5yMYrnNAAe0Hgy3JgoAAAdyRiMDNlNjMzYi01N2ZmLTRlZTMtOGM4NC1mNTA1MjRkZWZmNDZ4dw5jb3JlL3BhcmFncmFwaHkBhabusgjSBAEAMQI+CQEAAQQBAQUPAwI1BQUAAwEDAAEAAgEIAQMBBAACAAEAAgABAAIABAADAQQBAQMBAAECAQICAAICAgABAQIBAQECAQEBCgEGAAMBBQQBAQgJAQABAQEBAQACAQIGAwABBAEBAwYBAAEAAQABAAILAgECAAIDAgACAwUEAQADAAIEAwABAAEAAQAEAAMBAwMEAQQCAgEGAQICAwAHAQEBAgIBAgEAAgADAAICAQAEASYABAACAAcCBAEBAAECAQECAQcABgECAQIABgEBAAUBAgABBQEBAQACAAQAAQABAQIAAgIBAQUACAEDAwIAAQIBAEkCNAEBBAEDAgEBAgQOAQABBgIBAwADAQUBAQIBAAUKARABAQQEAQtJAwECAQEBAwECAgcBAAEEAgABAAECAQABAQEAAQMBBAEBAQICAwEAAgABAAEBAwABAQEDAQABDwEAAQQBBQEBAQUBAAEFAQIFAwEFAQgBAQYBAQUBAAEFAQICAgQEAQIBAQEAAg4CCgEBAQUBAwEPSQI0AQEBCwYBAgEIAQEBAAEGAQUCAQEDAQABAAEAAQAFAQESAQEBAQECAQEBBQEAAwMBAAEAAQABBAQFAQYBAgEKfwEBAAQBAQBiFIIBAAMDAgABAQgBAgACAEAAAwMCAAwHAQMDBQEDAQEBBQUDAQABAgEABAADBQQBAQIBAAIBAQEBAAMBAQADABADAQMBCgECAQUFAAEGARACAAEFAQABAAEABgsCBAEBAQABAgEDAQACAgEBAQUBBAIDAQMBAQEAAQEBAwEEAgABAgEBAwI6AQsAAQACAggBGQAGAAQAAwACAQUBdwICOwMCBANRAAEKAQUBBwEKAQEBB3IDBgABBAECCAIHAgEBAQEIAQUBAgA1AwMGAQIBAAEBARUBBAECCAABBAEEAQEBAAIICAABAAcCAQYBBQcAAwICBAEBAQACCAEBAQQDAQEDAQEBDgICAQABBwEAAQEBCgQAAgABDgEAAQsBEgEgBQICAQQHAQMBAwcCAgACCQEMAQ4BAQENAgUBAQMBAQABAQEAAgECAgEFBgABAQEBAQICCwEAAQIBAAMEAQEBAQEHBQMBAAIHAQQBBAYBAQQBAQEJAQIBBwEEAQABBAEMAQIBBQEAAQoBBwERBgMBAAECAQEBAAEHAS4BEAEBAQUBBQEDAQABAgEIAQUBBgEHAQYBAzsAAQMBAQEAAQUBAQEEAQIBBAMBAQMCAQsBAgAIAgIBAQECAgEABgEBAQEFAQEBAgQAAQEDAQMEAQEBAAIAAQEBCAIAAgQlAAQAAgAHAgEDAgUBAQIAAQABAAEBAgMDAAMAAQEBAgERAQAJAwEHAQkBCwsEAgQBAgIGAQEEAgENAgEBAwELAgICBQEKAQYBAQECAQEDBwEDAwMBEQEDAQQBAwEBAQEDAgECAQICAgEAAQEBBAEDAQkBBwECAQACDwECAQUBBAECAQUBDAEBAQUQAAEBAQJKAgEBAQEGAAIBAwACAawBAAGdGwIAAQACAJEEA6IBAGEArwEAjwMmFQC+BqwBa1AJAFQQ0gYAxAEArgEAGQA3AJYIIBsD+wEBHgMSAwoB\",\"updateId\":918320905}","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[5676,1443,5834,4789],"class_list":["post-121600","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-0","tag-dev-notes","tag-dev-notes-7-0","tag-interactivity-api","mentions-luisherranz","mentions-yashjawale","author-luisherranz"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vDi","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/14623809"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121600"}],"version-history":[{"count":4,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121600\/revisions"}],"predecessor-version":[{"id":121868,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121600\/revisions\/121868"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":14623809,"name":"luisherranz","url":"","description":"Software engineer at Automattic, working on WooCommerce.","link":"https:\/\/profiles.wordpress.org\/luisherranz\/","slug":"luisherranz","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/e8aff593e5564825747f5af8f43a9fb36ed504cef120fd0859e8c16fa049e1d5?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/e8aff593e5564825747f5af8f43a9fb36ed504cef120fd0859e8c16fa049e1d5?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/e8aff593e5564825747f5af8f43a9fb36ed504cef120fd0859e8c16fa049e1d5?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/14623809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":1443,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/","name":"dev-notes","slug":"dev-notes","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/1443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":5834,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-0\/","name":"dev-notes-7-0","slug":"dev-notes-7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":4789,"link":"https:\/\/make.wordpress.org\/core\/tag\/interactivity-api\/","name":"interactivity API","slug":"interactivity-api","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/4789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=4789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121795,"date":"2026-03-04T08:08:55","date_gmt":"2026-03-04T08:08:55","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121795"},"modified":"2026-03-04T08:10:39","modified_gmt":"2026-03-04T08:10:39","slug":"dataviews-dataform-et-al-in-wordpress-7-0","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/","title":{"rendered":"DataViews, DataForm, et al. in WordPress 7.0"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><em>Previous cycle: <a href=\"https:\/\/make.wordpress.org\/core\/2025\/11\/11\/dataviews-dataform-et-al-in-wordpress-6-9\/\">WordPress 6.9<\/a>.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a summary of the changes introduced in the \u201cdataviews space\u201d during the WordPress 7.0 cycle from the <span tabindex='0' class='glossary-item-container'>API<span class='glossary-item-hidden-content'><span class='glossary-item-header'>API<\/span> <span class='glossary-item-description'>An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span> perspective. They have been posted in\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/73076\">the corresponding iteration issue<\/a>\u00a0as well. To follow what\u2019s next, subscribe to the\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/76045\">iteration issue for WordPress 7.1<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The changes listed here include\u00a0<strong>166 contributions<\/strong>\u00a0by\u00a0<strong>35 unique authors<\/strong>\u00a0across the community during the past\u00a0<strong>4.5 months<\/strong>\u00a0(since October 17th, 2025).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#field-api\">Field API<\/a>\n<ul class=\"wp-block-list\">\n<li><code><a href=\"#field-api-format\">format<\/a><\/code>: numbers and dates<\/li>\n\n\n\n<li><code><a href=\"#field-api-getvalueformatted\">getValueFormatted<\/a><\/code>: custom formats<\/li>\n\n\n\n<li><code><a href=\"#field-api-isvalid\">isValid<\/a><\/code>: pattern, minLength, maxLength, min, max<\/li>\n\n\n\n<li><a href=\"#field-api-markwhenoptional\">Edit<\/a>: <code>markWhenOptional<\/code><\/li>\n\n\n\n<li><a href=\"#field-api-controls\">Edit<\/a>: <code>combobox<\/code> and <code>adaptiveSelect<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#dataviews\">DataViews<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#dataviews-activity\">Activity layout<\/a> (new)<\/li>\n\n\n\n<li><a href=\"#dataviews-list\">List layout<\/a>: supports density<\/li>\n\n\n\n<li><code><a href=\"#dataviews-groupby\">groupBy<\/a><\/code>: field, direction, label<\/li>\n\n\n\n<li><code><a href=\"#dataviews-onreset\">onReset<\/a><\/code>: integrate with persistence<\/li>\n\n\n\n<li><a href=\"#dataviews-styles\">Styles<\/a>: background color<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#dataform\">DataForm<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#dataform-details\">Details layout<\/a> (new)<\/li>\n\n\n\n<li><a href=\"#dataform-panel\">Panel layout<\/a>: <code>editVisibility<\/code><\/li>\n\n\n\n<li><a href=\"#dataform-card\">Card layout<\/a>: <code>isCollapsible<\/code><\/li>\n\n\n\n<li><code><a href=\"#dataform-validity\">validity<\/a><\/code>: pattern, minLength, maxLength, min, max<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#dataviews-picker\">DataViewsPicker<\/a>\n<ul class=\"wp-block-list\">\n<li><code><a href=\"#dataviews-picker-groupby\">groupBy<\/a><\/code><\/li>\n\n\n\n<li><a href=\"#dataviews-picker-table\"><code>pickerTable<\/code> layout<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<!--more-->\n\n\n\n<h2 id=\"field-api\" class=\"wp-block-heading\">Field API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference documents:\u00a0<a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#fields-api\" target=\"_blank\" rel=\"noreferrer noopener\">developer docs<\/a>, the\u00a0<a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/dataviews-fieldtypes--docs\" target=\"_blank\" rel=\"noreferrer noopener\">storybook<\/a>.<\/p>\n\n\n\n<h3 id=\"field-api-format\" class=\"wp-block-heading\">format<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#format\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configures display formatting (separators, decimals, date patterns) for numeric and date field types.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const fields = [\n\t{\n\t\tid: 'price',\n\t\tlabel: 'Price',\n\t\ttype: 'number',\n\t\tformat: {\n\t\t\tseparatorThousand: ',',\n\t\t\tseparatorDecimal: '.',\n\t\t\tdecimals: 2,\n\t\t},\n\t},\n\t{\n\t\tid: 'publishDate',\n\t\ttype: 'date',\n\t\tlabel: 'Published',\n\t\tformat: {\n\t\t\tdate: 'F j, Y',\n\t\t\tweekStartsOn: 1,\n\t\t},\n    },\n  ];<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The supported types are: <code>integer<\/code>, <code>number<\/code>, <code>datetime<\/code>, and <code>date<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field type<\/th><th>Format config<\/th><th>Default<\/th><\/tr><\/thead><tbody><tr><td>integer<\/td><td>separatorThousand<\/td><td>Formats with thousand separator (default <code>,<\/code>). Example: <code>1,000<\/code>.<\/td><\/tr><tr><td>number<\/td><td>separatorThousand, separatorDecimal, decimals<\/td><td>Formats with separators and fixed decimals (defaults <code>,<\/code>, <code>.<\/code>, <code>2<\/code> respectively). Example: <code>1,000.00<\/code>.<\/td><\/tr><tr><td>datetime<\/td><td>datetime, weekStartsOn<\/td><td>Formats via <a href=\"https:\/\/www.php.net\/manual\/en\/datetime.format.php\" target=\"_blank\" rel=\"noreferrer noopener\">PHP date string<\/a> (defaults to WP settings).<\/td><\/tr><tr><td>date<\/td><td>date, weekStartsOn<\/td><td>Formats via <a href=\"https:\/\/www.php.net\/manual\/en\/datetime.format.php\" target=\"_blank\" rel=\"noreferrer noopener\">PHP date string<\/a> (defaults to WP settings).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"field-api-getvalueformatted\" class=\"wp-block-heading\">getValueFormatted<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#getvalueformatted\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Optional function that applies the format to produce a display string, so that field authors can override the bundled formats, and provide its own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, provide a custom function to transforms 2048 bytes into \u201c2.0 KB\u201d and 1073741824 into \u201c1.0 GB\u201d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const field = {\n  id: \"filesize\",\n  label: \"File size\",\n  type: \"integer\",\n  getValueFormatted: ( { item, field } ) =&gt; {\n    const bytes = field.getValue( { item } );\n    if (! bytes) {\n      return \"\";\n    }\n\n    const units = [\"B\", \"KB\", \"MB\", \"GB\"];\n    let i = 0;\n    let size = bytes;\n    while (size &gt;= 1024 &amp;&amp; i &lt; units.length - 1) {\n      size \/= 1024;\n      i++;\n    }\n\n    return `${size.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n  },\n};<\/code><\/pre>\n\n\n\n<h3 id=\"field-api-isvalid\" class=\"wp-block-heading\">isValid<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#isvalid\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The declarative validation rules supported by the field types and the Edit controls have been expanded:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>pattern<\/code>: a regex pattern string that the field value must match.<\/li>\n\n\n\n<li><code>minLength<\/code>: minimum string length for the field value.<\/li>\n\n\n\n<li><code>maxLength<\/code>: maximum string length for the field value.<\/li>\n\n\n\n<li><code>min<\/code>: minimum numeric value for the field.<\/li>\n\n\n\n<li><code>max<\/code>: maximum numeric value for the field.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Rule<\/th><th>Supported by<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td>pattern<\/td><td>text, email, telephone, url<\/td><td><code>isValid: { pattern: '^[a-z0-9-]+$' }<\/code><\/td><\/tr><tr><td>minLength<\/td><td>text, email, telephone, url<\/td><td><code>isValid: { minLength: 3 }<\/code><\/td><\/tr><tr><td>maxLength<\/td><td>text, email, telephone, url<\/td><td><code>isValid: { maxLength: 200 }<\/code><\/td><\/tr><tr><td>min<\/td><td>integer, number<\/td><td><code>isValid: { min: 0 }<\/code><\/td><\/tr><tr><td>max<\/td><td>integer, number<\/td><td><code>isValid: { max: 999 }<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const field = {\n\tid: 'itemsAvailable',\n    label: 'Items available',\n    type: 'integer',\n    isValid: {\n\t\trequired: true,\n\t\tmin: 0,\n\t\tmax: 10000,\n\t},\n};<\/code><\/pre>\n\n\n\n<h3 id=\"field-api-markwhenoptional\" class=\"wp-block-heading\">Edit: <code>markWhenOptional<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#edit\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edit controls now support two different ways of reporting validation in the label: either they get a <code>(required)<\/code> suffix or a <code>(optional)<\/code> one. This is controlled via <code>markWhenOptional<\/code> in the Edit implementation.<\/p>\n\n\n\n<h3 id=\"field-api-controls\" class=\"wp-block-heading\">Edit: <code>combobox<\/code> and <code>adaptiveSelect<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#edit\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a new <code>combobox<\/code> control that scales better than the existing <code>select<\/code> control to handle hundreds of elements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Additionally, we\u2019ve also added a <code>adaptiveSelect<\/code> control that renders either <code>select<\/code> or <code>combobox<\/code> depending or the number of elements. This enables field authors to deal with fields whose elements are dynamic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">{\n\tid: 'categories',\n\tlabel: 'Categories'\n\ttype: 'text',\n\tEdit: 'adaptiveSelect',\n\telements: [\n\t\t{ value: 'blog', label: 'Blog' },\n\t\t{ value: 'News', label: 'News' },\n\t\t{ value: 'Tutorial', label: 'Tutorial' },\n\t\t\/\/ ...\n\t]\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>State<\/th><th>Combobox<\/th><th>Select<\/th><\/tr><\/thead><tbody><tr><td>Rest<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"206\" data-attachment-id=\"121797\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-44-11\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png\" data-orig-size=\"592,206\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.44.11\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-300x104.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png\" class=\"wp-image-121797\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png 592w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-300x104.png 300w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"368\" height=\"230\" data-attachment-id=\"121798\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-44-25\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png\" data-orig-size=\"368,230\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.44.25\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-300x188.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png\" class=\"wp-image-121798\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png 368w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-300x188.png 300w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\"><\/td><\/tr><tr><td>Opened<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"404\" data-attachment-id=\"121799\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-43-24\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png\" data-orig-size=\"592,404\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.43.24\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-300x205.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png\" class=\"wp-image-121799\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png 592w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-300x205.png 300w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"258\" data-attachment-id=\"121800\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-44-33\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png\" data-orig-size=\"400,258\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.44.33\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-300x194.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png\" class=\"wp-image-121800\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png 400w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-300x194.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"dataviews\" class=\"wp-block-heading\">DataViews<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference documents: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/dataviews-dataviews--docs\">storybook<\/a>, <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#dataviews\">developer docs<\/a>.<\/p>\n\n\n\n<h3 id=\"dataviews-activity\" class=\"wp-block-heading\">Activity layout (new)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-activity\" target=\"_blank\" rel=\"noreferrer noopener\">Storybook<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a new layout called <code>activity<\/code> that uses an activity-feed-timeline style.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"1024\" data-attachment-id=\"121802\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-03-at-13-42-26\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-1.png\" data-orig-size=\"826,1428\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-03 at 13.42.26\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-174x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-592x1024.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-592x1024.png\" alt=\"\" class=\"wp-image-121802\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-592x1024.png 592w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-174x300.png 174w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-768x1327.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-1.png 826w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\"><\/a><\/figure>\n\n\n\n<h3 id=\"dataviews-list\" class=\"wp-block-heading\">List layout supports <code>density<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#view-object\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ViewList now accepts an optional layout with a density setting (was previously layout-less), which the users can also configure via the view config.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const listLayout = { type: 'list', layout: { density: 'compact' } };<\/code><\/pre>\n\n\n\n<h3 id=\"dataviews-groupby\" class=\"wp-block-heading\">groupBy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#view-object\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<br>Stories: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-table&amp;args=groupBy:!true\" target=\"_blank\" rel=\"noreferrer noopener\">table<\/a>, <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-grid&amp;args=groupBy:!true\" target=\"_blank\" rel=\"noreferrer noopener\">grid<\/a>, <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-list&amp;args=groupBy:!true\" target=\"_blank\" rel=\"noreferrer noopener\">list<\/a>, <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-activity\" target=\"_blank\" rel=\"noreferrer noopener\">activity<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>groupByField<\/code> string in DataViews\u2019 view config was replaced by a <code>groupBy<\/code> object that supports field, direction, and label visibility.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Before (WordPress 6.9)\nconst view = { groupByField: 'status' };\n\n\/\/ After (WordPress 7.0)\nconst view = { groupBy: { field: 'status', direction: 'asc', showLabel: true } };<\/code><\/pre>\n\n\n\n<h3 id=\"dataviews-onreset\" class=\"wp-block-heading\">onReset<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#onreset-void-false\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A new prop that controls the \u201cReset view\u201d button in the view configuration dropdown:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When\u00a0<code>undefined<\/code>\u00a0(not provided): No reset functionality is shown. Use this when view persistence is not supported.<\/li>\n\n\n\n<li>When\u00a0<code>false<\/code>: The \u201cReset view\u201d button is shown but disabled. Use this when view persistence is supported but the current view matches the default (not modified).<\/li>\n\n\n\n<li>When a function: The \u201cReset view\u201d button is shown and enabled. A blue dot indicator appears on the view options button to signal that the view has been modified. The function is called when the user clicks the reset button.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"dataviews-styles\" class=\"wp-block-heading\">Set background color<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#styling\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a new <span tabindex='0' class='glossary-item-container'>CSS<span class='glossary-item-hidden-content'><span class='glossary-item-header'>CSS<\/span> <span class='glossary-item-description'>Cascading Style Sheets.<\/span><\/span><\/span> Custom Property, <code>--wp-dataviews-color-background<\/code>, that can be used to set the background color of DataViews, so it follows the container.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">&lt;div\n\tstyle={{\n\t\t'--wp-dataviews-color-background': backgroundColor,\n\t}}\n&gt;\n\t&lt;DataViews \/&gt;\n&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<h2 id=\"dataform\" class=\"wp-block-heading\">DataForm<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference docs: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/dataviews-dataform--docs\">storybook<\/a>, <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#dataform\">developer docs<\/a>.<\/p>\n\n\n\n<h3 id=\"dataform-details\" class=\"wp-block-heading\">Details layout (new)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataform--layout-details\" target=\"_blank\" rel=\"noreferrer noopener\">Storybook<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A new form layout renders fields inside a native <code>&lt;details&gt;<\/code> element.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const form = {\n\tfields: [ {\n\t\tid: 'metadata',\n\t\tlabel: 'Metadata',\n\t\tchildren: [ 'fileSize', 'dimensions' ],\n\t\tlayout: {\n\t\t\ttype: 'details',\n\t\t\tsummary: 'fieldSummary'\n\t\t},\n\t} ],\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"508\" height=\"604\" data-attachment-id=\"121804\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-03-at-13-44-50\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\" data-orig-size=\"508,604\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-03 at 13.44.50\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-252x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\" alt=\"\" class=\"wp-image-121804\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png 508w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-252x300.png 252w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\"><\/a><\/figure>\n\n\n\n<h3 id=\"dataform-panel\" class=\"wp-block-heading\">Panel layout: <code>editVisibility<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The panel trigger has been refactored and it now also includes an edit icon, whose visibility can be configured to <code>on-hover<\/code> (icon is displayed on hover over the field) or <code>always<\/code> (icon is always visible).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const form = {\n\tfields: [ {\n\t\tid: 'status',\n\t\tlayout: {\n\t\t\ttype: 'panel',\n\t\t\teditVisibility: 'always'\n\t\t}\n\t} ]\n};<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>On hover<\/th><th>Always<\/th><\/tr><\/thead><tbody><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"1064\" data-attachment-id=\"121806\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-49-08\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-1.png\" data-orig-size=\"1022,1064\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.49.08\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-288x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-984x1024.png\" class=\"wp-image-121806\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-288x300.png 288w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-767x799.png 767w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-984x1024.png 984w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"1064\" data-attachment-id=\"121805\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-49-18\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-1.png\" data-orig-size=\"1022,1064\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.49.18\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-288x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-984x1024.png\" class=\"wp-image-121805\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-288x300.png 288w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-767x799.png 767w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-984x1024.png 984w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"dataform-card\" class=\"wp-block-heading\">Card layout: <code>isCollapsible<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cards can optionally prevent collapsing. Default is true.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const form = {\n\tfields: [ {\n\t\tid: 'customer',\n\t\tlayout: {\n\t\t\ttype: 'card',\n\t\t\tisCollapsible: true\n\t\t},\n\t} ]\n};<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Collapsible<\/th><th>Non collapsible<\/th><\/tr><\/thead><tbody><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"956\" data-attachment-id=\"121809\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-52-49\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png\" data-orig-size=\"1022,956\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.52.49\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-300x281.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png\" class=\"wp-image-121809\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-300x281.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-768x718.png 768w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"956\" data-attachment-id=\"121808\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-52-44\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png\" data-orig-size=\"1022,956\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.52.44\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-300x281.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png\" class=\"wp-image-121808\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-300x281.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-768x718.png 768w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"dataform-validity\" class=\"wp-block-heading\">validity<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">All bundled DataForm layouts support the <code>validity<\/code> prop, and so they display error states properly. Additionally, validity has been expanded to support more rules: <code>pattern<\/code>, <code>minLength<\/code>, <code>maxLength<\/code>, <code>min<\/code>, <code>max<\/code>. See the Field API section for more info.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Panel<\/th><th>Card<\/th><th>Details<\/th><\/tr><\/thead><tbody><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"676\" data-attachment-id=\"121813\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-58-14\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png\" data-orig-size=\"500,676\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.58.14\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-222x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png\" class=\"wp-image-121813\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png 500w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-222x300.png 222w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"1176\" height=\"838\" data-attachment-id=\"121812\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-58-33\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1.png\" data-orig-size=\"1176,838\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.58.33\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-300x214.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1024x730.png\" class=\"wp-image-121812\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1.png 1176w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-300x214.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-768x547.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1024x730.png 1024w\" sizes=\"auto, (max-width: 1176px) 100vw, 1176px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"628\" height=\"524\" data-attachment-id=\"121811\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-58-54\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png\" data-orig-size=\"628,524\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.58.54\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-300x250.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png\" class=\"wp-image-121811\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png 628w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-300x250.png 300w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"dataviews-picker\" class=\"wp-block-heading\">DataViewsPicker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference docs: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviewspicker--default\" target=\"_blank\" rel=\"noreferrer noopener\">storybook<\/a>, <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#dataviewspicker\" target=\"_blank\" rel=\"noreferrer noopener\">developer docs<\/a>.<\/p>\n\n\n\n<h3 id=\"dataviews-picker-groupby\" class=\"wp-block-heading\">groupBy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">See related section in DataViews component.<\/p>\n\n\n\n<h3 id=\"dataviews-picker-table\" class=\"wp-block-heading\"><code>pickerTable<\/code> layout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a table layout variant for pickers, complementing the existing pickerGrid. Supports column styles, density, and column moving. The <code>pickerTable<\/code> layout accepts the same layout options as the regular table:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const view = {\n\ttype: 'pickerTable',\n\tlayout: {\n\t\tstyles: {\n\t\t\tname: { width: '50%' },\n\t\t\tstatus: { align: 'end' }\n\t\t},\n\t\tdensity: 'compact',\n\t\tenableMoving: false,\n\t}\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/ntsekouras\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ntsekouras<\/a> for proofreading\/tech review, and to <a href=\"https:\/\/profiles.wordpress.org\/isabel_brison\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>isabel_brison<\/a> <a href=\"https:\/\/profiles.wordpress.org\/andrewserong\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>andrewserong<\/a> <a href=\"https:\/\/profiles.wordpress.org\/talldanwp\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>talldanwp<\/a> for the DataViewsPicker updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes-7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a><\/p>\n<nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F04%2Fdataviews-dataform-et-al-in-wordpress-7-0%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>Previous cycle: WordPress 6.9. This is a summary of the changes introduced in the \u201cdataviews space\u201d during the WordPress 7.0 cycle from the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. perspective. They have been posted [&hellip;]<\/p>\n","protected":false},"author":15155084,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[5676,1443,5834],"class_list":["post-121795","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-0","tag-dev-notes","tag-dev-notes-7-0","mentions-andrewserong","mentions-isabel_brison","mentions-ntsekouras","mentions-talldanwp","author-oandregal"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vGr","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/15155084"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121795"}],"version-history":[{"count":17,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121795\/revisions"}],"predecessor-version":[{"id":121859,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121795\/revisions\/121859"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":15155084,"name":"Andr\u00e9 Maneiro","url":"https:\/\/oandre.gal","description":"I'm a software developer based in Galiza, Spain.\r\n\r\nI've made contributions to several components, such as API docs generation, Block Styles, Global Styles, server-side performance, or DataViews &amp; DataForm. In March 2023, I became a WordPress core committer.","link":"https:\/\/profiles.wordpress.org\/oandregal\/","slug":"oandregal","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/d1206b2538cfce31db7cfe5cf02cc5913c44d6428cf218ea0e357faa23accb0c?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/d1206b2538cfce31db7cfe5cf02cc5913c44d6428cf218ea0e357faa23accb0c?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/d1206b2538cfce31db7cfe5cf02cc5913c44d6428cf218ea0e357faa23accb0c?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/15155084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":1443,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/","name":"dev-notes","slug":"dev-notes","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/1443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":5834,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-0\/","name":"dev-notes-7-0","slug":"dev-notes-7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121846,"date":"2026-03-04T07:16:17","date_gmt":"2026-03-04T07:16:17","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121846"},"modified":"2026-03-04T07:16:19","modified_gmt":"2026-03-04T07:16:19","slug":"dev-chat-agenda-march-04-2026","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dev-chat-agenda-march-04-2026\/","title":{"rendered":"Dev Chat Agenda \u2013 March 4, 2026"},"content":{"rendered":"<p class=\"wp-block-paragraph\">The next WordPress Developers Chat will take place on <a href=\"https:\/\/www.timeanddate.com\/worldclock\/fixedtime.html?iso=20260304T1500\"><abbr class=\"date\" title=\"2026-03-04T15:00:00+00:00\">Wednesday, March 4, 2026, at 15:00 UTC<\/abbr><\/a> in the\u00a0<a href=\"https:\/\/wordpress.slack.com\/messages\/core\/\">core<\/a>\u00a0channel on\u00a0<a href=\"https:\/\/make.wordpress.org\/chat\/\">Make WordPress Slack<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The live meeting will focus on the discussion for upcoming releases, and have an open floor section.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The various curated agenda sections below refer to additional items. If you have\u00a0<span tabindex='0' class='glossary-item-container'>ticket<span class='glossary-item-hidden-content'><span class='glossary-item-header'>ticket<\/span> <span class='glossary-item-description'>Created for both bug reports and feature development on the bug tracker.<\/span><\/span><\/span>\u00a0requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.<\/p>\n\n\n\n<h2 id=\"announcements-1\" class=\"wp-block-heading\">Announcements \ud83d\udce2<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">WordPress 7.0 Updates<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/wordpress.org\/news\/2026\/02\/wordpress-7-0-beta-2\/\">7.0 Beta 2 was released<\/a> on February 26th.<\/li>\n\n\n\n<li><span tabindex='0' class='glossary-item-container'>Beta<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Beta<\/span> <span class='glossary-item-description'>A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process.<\/span><\/span><\/span> 3 is scheduled for March 5th at 14:00 UTC in the <a href=\"https:\/\/make.wordpress.org\/core\/tag\/core\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>core<\/a> <span tabindex='0' class='glossary-item-container'>Slack<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Slack<\/span> <span class='glossary-item-description'>Slack is a Collaborative Group Chat Platform <a href=\"https:\/\/slack.com\/\">https:\/\/slack.com\/<\/a>. The WordPress community has its own Slack Channel at <a href=\"https:\/\/make.wordpress.org\/chat\/\">https:\/\/make.wordpress.org\/chat\/<\/a>.<\/span><\/span><\/span> channel.<\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/01\/27\/bug-scrub-schedule-for-wordpress-7-0\/\">7.0 bug scrubs<\/a> continue twice a week in the <a href=\"https:\/\/make.wordpress.org\/core\/tag\/core\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>core<\/a> Slack channel.<\/li>\n\n\n\n<li>New <span tabindex='0' class='glossary-item-container'>Dev Notes<span class='glossary-item-hidden-content'><span class='glossary-item-header'>dev note<\/span> <span class='glossary-item-description'>Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make\/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin\/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.<\/span><\/span><\/span>:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/24\/iframed-editor-changes-in-wordpress-7-0\/\">Iframed Editor Changes in 7.0<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/\">PHP-only Block Registration<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">General<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/\">What\u2019s new in Gutenberg 22.6<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/\">Developer documentation restored<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 id=\"discussions\" class=\"wp-block-heading\">Discussions \ud83d\udcac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the <span tabindex='0' class='glossary-item-container'>Core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.<\/em><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 id=\"tickets-for-assistance\" class=\"wp-block-heading\">Open floor \u00a0\ud83c\udf99\ufe0f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.<br><br>Please include details of tickets \/ PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.<\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><em>Props to <a href=\"https:\/\/profiles.wordpress.org\/audrasjb\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>audrasjb<\/a> for collaboration and review.<\/em><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/agenda\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>agenda<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-chat\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-chat<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F04%2Fdev-chat-agenda-march-04-2026%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>The next WordPress Developers Chat will take place on in the\u00a0core\u00a0channel on\u00a0Make WordPress Slack. The live meeting will focus on the discussion for upcoming releases, and have an open floor section. The various curated agenda sections below refer to additional items. If you have\u00a0ticketticket Created for both bug reports and feature development on the bug [&hellip;]<\/p>\n","protected":false},"author":16694622,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4194],"tags":[5676,31,2325,92],"class_list":["post-121846","post","type-post","status-publish","format-standard","hentry","category-devchat","tag-7-0","tag-agenda","tag-core","tag-dev-chat","mentions-audrasjb","author-amykamala"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vHg","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/16694622"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121846"}],"version-history":[{"count":5,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121846\/revisions"}],"predecessor-version":[{"id":121855,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121846\/revisions\/121855"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":16694622,"name":"Amy Kamala","url":"https:\/\/kittenkamala.com\/","description":"Hosting Team Rep 2026\r\nRelease Coordinator WordPress 7.0\r\n\r\nWordPress contributions sponsored by Elementor!\r\n\r\nTech nerd + artist. Full stack jr dev with team leadership, project management, a dash of UIUX and some product development mixed in. MFA from UCLA.\r\n\r\nPast contributions: \r\nRelease Coordinator WordPress 6.9\r\nHosting Team Rep 2019-2023\r\nHosting Team admin since 2018 and still going strong &lt;3 \r\nTech Lead Cohort Contributor WordPress 5.6 \r\nWPLA MeetUps organizer 2019-2022 (still an organizer but not currently hosting events)\r\nFacilitated Core meetings and Release Model Working Group 2019-2020\r\nWordCamp LA contributor\/organizer 2020\r\nSpoken at and\/or helped with contributor day tables at a few camps and meetups including: WCEU, WCUS, WC Las Vegas, WC\/WP Santa Clarita, WC\/WP LA\r\nPrevious sponsors include DreamHost, InMotion Hosting, Kanopi Studios","link":"https:\/\/profiles.wordpress.org\/amykamala\/","slug":"amykamala","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/97891a17d737ebead37447e64a530eb0ba3ddabe7e5ea2450bbde2b705dd87fc?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/97891a17d737ebead37447e64a530eb0ba3ddabe7e5ea2450bbde2b705dd87fc?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/97891a17d737ebead37447e64a530eb0ba3ddabe7e5ea2450bbde2b705dd87fc?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/16694622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"replies":[[{"id":48458,"parent":0,"author":20350174,"author_name":"Nimesh","author_url":"","date":"2026-03-04T11:55:36","content":{"rendered":"<p>Can this <span tabindex=\"0\" class=\"glossary-item-container\">ticket<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">ticket<\/span> <span class=\"glossary-item-description\">Created for both bug reports and feature development on the bug tracker.<\/span><\/span><\/span> be discussed?<br \/>\n<a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64738\" rel=\"nofollow ugc\">https:\/\/core.trac.wordpress.org\/ticket\/64738<\/a><br \/>\nThis seems to be a recently introduced <span tabindex=\"0\" class=\"glossary-item-container\">bug<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">bug<\/span> <span class=\"glossary-item-description\">A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.<\/span><\/span><\/span>, and I have raised a PR to address the issue.<\/p>\n<p>[async]<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dev-chat-agenda-march-04-2026\/#comment-48458","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/77925783194e046db9498a0b83c199978d37ea9038b559e0f739d18bb57b26fe?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/77925783194e046db9498a0b83c199978d37ea9038b559e0f739d18bb57b26fe?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/77925783194e046db9498a0b83c199978d37ea9038b559e0f739d18bb57b26fe?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/20350174"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121846"}]}}]],"wp:term":[[{"id":4194,"link":"https:\/\/make.wordpress.org\/core\/category\/devchat\/","name":"Devchat","slug":"devchat","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/4194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=4194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":31,"link":"https:\/\/make.wordpress.org\/core\/tag\/agenda\/","name":"agenda","slug":"agenda","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":2325,"link":"https:\/\/make.wordpress.org\/core\/tag\/core\/","name":"core","slug":"core","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":92,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-chat\/","name":"dev chat","slug":"dev-chat","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121777,"date":"2026-03-03T17:00:48","date_gmt":"2026-03-03T17:00:48","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121777"},"modified":"2026-03-05T22:37:33","modified_gmt":"2026-03-05T22:37:33","slug":"php-only-block-registration","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/","title":{"rendered":"PHP-only block registration"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Developers can now create simple blocks using only <span tabindex='0' class='glossary-item-container'>PHP<span class='glossary-item-hidden-content'><span class='glossary-item-header'>PHP<\/span> <span class='glossary-item-description'>The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span>. This is meant for blocks that only need server-side rendering and aren\u2019t meant to be highly interactive. It isn\u2019t meant to replace the existing client-side paradigm, nor is it meant to ever be as featureful! However, this <span tabindex='0' class='glossary-item-container'>API<span class='glossary-item-hidden-content'><span class='glossary-item-header'>API<\/span> <span class='glossary-item-description'>An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span> could help developers avoid extra complexity and could thus foster <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> adoption, especially in classic themes or server-driven workflows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To use it, call <code>register_block_type<\/code> with the new <code>autoRegister<\/code> flag. Note that a <code>render_callback<\/code> function must also be provided:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">function gutenberg_register_php_only_blocks() {\n    register_block_type(\n        'my-plugin\/example',\n        array(\n            'title'           =&gt; 'My Example Block',\n            'attributes'      =&gt; array(\n                'title'   =&gt; array(\n                    'type'    =&gt; 'string',\n                    'default' =&gt; 'Hello World',\n                ),\n                'count'   =&gt; array(\n                    'type'    =&gt; 'integer',\n                    'default' =&gt; 5,\n                ),\n                'enabled' =&gt; array(\n                    'type'    =&gt; 'boolean',\n                    'default' =&gt; true,\n                ),\n                'size'    =&gt; array(\n                    'type'    =&gt; 'string',\n                    'enum'    =&gt; array( 'small', 'medium', 'large' ),\n                    'default' =&gt; 'medium',\n                ),\n            ),\n            'render_callback' =&gt; function ( $attributes ) {\n                return sprintf(\n                    '<div>%s: %d items (%s)<\/div>',\n                    esc_html( $attributes['title'] ),\n                    $attributes['count'],\n                    $attributes['size']\n                );\n            },\n            'supports'        =&gt; array(\n                'autoRegister' =&gt; true,\n            ),\n        )\n    );\n}\n\nadd_action( 'init', 'gutenberg_register_php_only_blocks' );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">These blocks will automatically appear in the editor without requiring any <span tabindex='0' class='glossary-item-container'>JavaScript<span class='glossary-item-hidden-content'><span class='glossary-item-header'>JavaScript<\/span> <span class='glossary-item-description'>JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user\u2019s browser. <a href=\"https:\/\/www.javascript.com\/\">https:\/\/www.javascript.com\/<\/a>.<\/span><\/span><\/span> registration, and, wherever possible, the editor will automatically generate controls in the Inspector Controls <span tabindex='0' class='glossary-item-container'>sidebar<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Sidebar<\/span> <span class='glossary-item-description'>A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.<\/span><\/span><\/span> to allow users to edit block attributes:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"998\" data-attachment-id=\"121779\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/php-block-autoregister\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister.png\" data-orig-size=\"1818,1772\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"php-block-autoregister\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-300x292.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-1024x998.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-1024x998.png\" alt=\"\" class=\"wp-image-121779\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-1024x998.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-300x292.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-768x749.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister-1536x1497.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/php-block-autoregister.png 1818w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Note that controls will not be generated for attributes with the <code>local<\/code> role or for attributes whose types are not supported.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">See <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64639\">#64639<\/a> for more details.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/priethor\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>priethor<\/a> for the implementation.<br>Props to <a href=\"https:\/\/profiles.wordpress.org\/wildworks\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>wildworks<\/a> for reviewing this <span tabindex='0' class='glossary-item-container'>dev note<span class='glossary-item-hidden-content'><span class='glossary-item-header'>dev note<\/span> <span class='glossary-item-description'>Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make\/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin\/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.<\/span><\/span><\/span>.<\/p>\n\n\n<a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F03%2Fphp-only-block-registration%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>Developers can now create simple blocks using only PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher. This is meant for blocks that only need server-side rendering and aren\u2019t meant to be highly interactive. It isn\u2019t meant to replace the existing client-side paradigm, nor is it meant [&hellip;]<\/p>\n","protected":false},"author":11048819,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[5676,1443],"class_list":["post-121777","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-0","tag-dev-notes","mentions-mcsf","mentions-priethor","mentions-wildworks","author-mcsf"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vG9","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121777"}],"version-history":[{"count":4,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777\/revisions"}],"predecessor-version":[{"id":121944,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777\/revisions\/121944"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":11048819,"name":"Miguel Fonseca","url":"","description":"","link":"https:\/\/profiles.wordpress.org\/mcsf\/","slug":"mcsf","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"replies":[[{"id":48466,"parent":0,"author":240000,"author_name":"Ciprian Popescu","author_url":"https:\/\/getbutterfly.com\/","date":"2026-03-04T16:32:20","content":{"rendered":"<p>I have finished the first <span tabindex=\"0\" class=\"glossary-item-container\">plugin<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Plugin<\/span> <span class=\"glossary-item-description\">A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https:\/\/wordpress.org\/plugins\/ or can be cost-based plugin from a third-party<\/span><\/span><\/span> using <span tabindex=\"0\" class=\"glossary-item-container\">PHP<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">PHP<\/span> <span class=\"glossary-item-description\">The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span>-only blocks (4 of them), and I wrote an article about my experience:<\/p>\n<p><a href=\"https:\/\/getbutterfly.com\/php-only-block-registration-in-wordpress\/\" rel=\"nofollow ugc\">https:\/\/getbutterfly.com\/php-only-block-registration-in-wordpress\/<\/a><\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48466","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/240000"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48465,"parent":48464,"author":11048819,"author_name":"Miguel Fonseca","author_url":"","date":"2026-03-04T16:13:57","content":{"rendered":"<p>There is no save function available in this setup, no. I don\u2019t think we\u2019ll implement anything like it anytime soon (if ever), as it entails solving quite a few different problems, including the problem of performant and reliable server-side <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-attributes\/#value-source\" rel=\"nofollow ugc\">sourcing<\/a> of attributes from <span tabindex=\"0\" class=\"glossary-item-container\">HTML<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">HTML<\/span> <span class=\"glossary-item-description\">HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.<\/span><\/span><\/span>.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48465","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48464"}]}},{"id":48464,"parent":0,"author":18440949,"author_name":"miya","author_url":"","date":"2026-03-04T16:04:49","content":{"rendered":"<p>Great.<br \/>\nIs there a save function available for storing in post_contents instead of render_callback?<br \/>\nDo you have a vision for this?<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48464","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/83f7fb4e6d882833c32d3fc46620f1fb29b0914f26f3811cad982ab5e72b48e1?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/83f7fb4e6d882833c32d3fc46620f1fb29b0914f26f3811cad982ab5e72b48e1?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/83f7fb4e6d882833c32d3fc46620f1fb29b0914f26f3811cad982ab5e72b48e1?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/18440949"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48464"}]}},{"id":48463,"parent":0,"author":1182490,"author_name":"Austin","author_url":"https:\/\/austin.passy.co","date":"2026-03-04T15:35:45","content":{"rendered":"<p>Excellent<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48463","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/3c8800cc963939d2f08c00c93f16aefd6f96991b0295f2ab658f58b45e428fd8?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/3c8800cc963939d2f08c00c93f16aefd6f96991b0295f2ab658f58b45e428fd8?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/3c8800cc963939d2f08c00c93f16aefd6f96991b0295f2ab658f58b45e428fd8?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/1182490"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48462,"parent":48460,"author":11048819,"author_name":"Miguel Fonseca","author_url":"","date":"2026-03-04T14:24:49","content":{"rendered":"<p>I don\u2019t refute that inner blocks are important: that\u2019s why we\u2019ve had them since before 5.0. \ud83d\ude42<\/p>\n<p>What I am trying to understand is:\n<\/p>\n<ul>\n<li>what kind of concrete scenarios of <span tabindex=\"0\" class=\"glossary-item-container\">block<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Block<\/span> <span class=\"glossary-item-description\">Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> nesting people expected to see involving <span tabindex=\"0\" class=\"glossary-item-container\">PHP<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">PHP<\/span> <span class=\"glossary-item-description\">The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span>-only registration;\n<\/li>\n<li>what kind of block-level and document-level semantics are expected, what kind of structure in the database;\n<\/li>\n<li>what kind of relationships between block types are imagined \u2014 for instance, is it a specific parent type P containing instances of a specific child type C, with both types leveraging PHP-only registration? Is it a PHP-generated container type that is expected to contain any kind of block? And so on;\n<\/li>\n<li>what kind of ergonomics are expected on the code side, e.g. what happens in the render callback of a container;\n<\/li>\n<li>what kind of ergonomics are expected on the client side, in particular when we consider that any in-editor changes to PHP-only blocks will require server roundtrips (for server-side rendering), and when we consider that the editor canvas is designed for highly reactive blocks, etc;\n<\/li>\n<li>and finally, the difficult question: why are the scenarios powered by PHP-only registration more compelling than the existing (and much more powerful) methods involving client-side code?\n<\/li>\n<\/ul>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48462","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48460"}]}},{"id":48461,"parent":48460,"author":240000,"author_name":"Ciprian Popescu","author_url":"https:\/\/getbutterfly.com\/","date":"2026-03-04T14:19:23","content":{"rendered":"<p>I disagree. The purpose of these blocks has a different use-case.<br \/>\nIt\u2019s about server-side blocks. Blocks you build for one specific goal.<\/p>\n<p>I have already built 4 of these blocks:<\/p>\n<p>1. A marquee <span tabindex=\"0\" class=\"glossary-item-container\">block<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Block<\/span> <span class=\"glossary-item-description\">Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span>, where you can set the content in the Inspector panel.<br \/>\n2. A Call-to-Action block.<br \/>\n3. An author box, formatted the way I want for my own theme.<br \/>\n4. An Advanced Heding block with 20 different styles (selectable via a dropdown).<\/p>\n<p>All 4 blocks have various options and settings in the right-side Inspector <span tabindex=\"0\" class=\"glossary-item-container\">sidebar<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Sidebar<\/span> <span class=\"glossary-item-description\">A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.<\/span><\/span><\/span>.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48461","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/240000"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48460"}]}},{"id":48460,"parent":48456,"author":14506451,"author_name":"Yakovos Frountas","author_url":"https:\/\/bakemywp.com","date":"2026-03-04T14:12:20","content":{"rendered":"<p><a href=\"https:\/\/profiles.wordpress.org\/mcsf\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mcsf<\/a> Inner <span tabindex=\"0\" class=\"glossary-item-container\">block<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Block<\/span> <span class=\"glossary-item-description\">Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> support is essential. When creating a custom container block with custom properties that requires inner columns, this is currently not possible \u2014 which means block registration via <span tabindex=\"0\" class=\"glossary-item-container\">PHP<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">PHP<\/span> <span class=\"glossary-item-description\">The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span> remains incomplete without it.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48460","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/13f31aeb65a23976f79263b424cffc7835bd25e6d0abdc8679daf01b0b447703?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/13f31aeb65a23976f79263b424cffc7835bd25e6d0abdc8679daf01b0b447703?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/13f31aeb65a23976f79263b424cffc7835bd25e6d0abdc8679daf01b0b447703?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/14506451"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48456"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48460"}]}},{"id":48457,"parent":0,"author":10347942,"author_name":"souri","author_url":"https:\/\/wp-entwickler.at\/","date":"2026-03-04T11:32:07","content":{"rendered":"<p>Finally! Na endlich gibts im <span tabindex=\"0\" class=\"glossary-item-container\">Core<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Core<\/span> <span class=\"glossary-item-description\">Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> diese M\u00f6glichkeit!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48457","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/988fb20eb0c48087af96a3032d7e6959022018a41642dcc207aa577ccdb48f92?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/988fb20eb0c48087af96a3032d7e6959022018a41642dcc207aa577ccdb48f92?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/988fb20eb0c48087af96a3032d7e6959022018a41642dcc207aa577ccdb48f92?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/10347942"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48456,"parent":48445,"author":11048819,"author_name":"Miguel Fonseca","author_url":"","date":"2026-03-04T11:00:58","content":{"rendered":"<p>No, and there isn\u2019t any clear vision for it. What scenarios would you have in mind?<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48456","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48445"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48456"}]}},{"id":48455,"parent":48441,"author":11048819,"author_name":"Miguel Fonseca","author_url":"","date":"2026-03-04T10:59:51","content":{"rendered":"<p>For now, this is the extent of the support: string, number, integer, boolean. Attributes must also not be \u201csourced\u201d, i.e. they must be saved in the <span tabindex=\"0\" class=\"glossary-item-container\">block<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Block<\/span> <span class=\"glossary-item-description\">Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> boundary\u2019s <span tabindex=\"0\" class=\"glossary-item-container\">JSON<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">JSON<\/span> <span class=\"glossary-item-description\">JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.<\/span><\/span><\/span> (which is the default) and not be serialised as <span tabindex=\"0\" class=\"glossary-item-container\">HTML<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">HTML<\/span> <span class=\"glossary-item-description\">HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.<\/span><\/span><\/span>:<\/p>\n<p><a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/blob\/db6e7acddf82cf14d3de71a06588dc2ecd236c94\/src\/wp-includes\/block-supports\/auto-register.php#L41-L53\" rel=\"nofollow ugc\"><code>wp_mark_auto_generate_control_attributes()<\/code>#L41-L53<\/a><\/p>\n<p>As other efforts mature in <span tabindex=\"0\" class=\"glossary-item-container\">Gutenberg<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Gutenberg<\/span> <span class=\"glossary-item-description\">The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc. <a href=\"https:\/\/wordpress.org\/gutenberg\/\">https:\/\/wordpress.org\/gutenberg\/<\/a><\/span><\/span><\/span> around the Fields <span tabindex=\"0\" class=\"glossary-item-container\">API<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">API<\/span> <span class=\"glossary-item-description\">An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span> and so-called block fields, it\u2019s possible that the `autoRegister` feature will automatically be able to support a few more fields. But it\u2019s much too early to make any promises!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48455","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48441"}]}},{"id":48445,"parent":0,"author":20877369,"author_name":"bikramchettri","author_url":"","date":"2026-03-04T03:14:03","content":{"rendered":"<p>can we do inner blocks?<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48445","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/b3bb41673e10e096cff88d7ee9e3cb2e88b56bb3155a3214d630a0908d22bb13?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/b3bb41673e10e096cff88d7ee9e3cb2e88b56bb3155a3214d630a0908d22bb13?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/b3bb41673e10e096cff88d7ee9e3cb2e88b56bb3155a3214d630a0908d22bb13?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/20877369"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48445"}]}},{"id":48443,"parent":0,"author":7731,"author_name":"Colin Devroe","author_url":"http:\/\/cdevroe.com","date":"2026-03-03T21:37:27","content":{"rendered":"<p>\ud83d\udc4f<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48443","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/325b6f559d1bfda6eff63f126fe6dbc7154abe1ba28de3e2fd5176e1aed31262?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/325b6f559d1bfda6eff63f126fe6dbc7154abe1ba28de3e2fd5176e1aed31262?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/325b6f559d1bfda6eff63f126fe6dbc7154abe1ba28de3e2fd5176e1aed31262?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/7731"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48442,"parent":0,"author":13763068,"author_name":"sinan isler","author_url":"http:\/\/sinanisler.com\/","date":"2026-03-03T20:07:10","content":{"rendered":"<p>it definitly needs more love but great start<\/p>\n<p>even as it is i can see myself adding some custom blocks on my theme now to solve client problems or creating some crazy design sections easily since patterns has some limitations but blocks doesnt.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48442","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/3145034461a6a95758cd92cc3315cb4f980e65e2d1d55a03f3fef4d4f73e13b0?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/3145034461a6a95758cd92cc3315cb4f980e65e2d1d55a03f3fef4d4f73e13b0?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/3145034461a6a95758cd92cc3315cb4f980e65e2d1d55a03f3fef4d4f73e13b0?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13763068"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48441,"parent":0,"author":10077546,"author_name":"Mark Wilkinson","author_url":"https:\/\/highrise.digital","date":"2026-03-03T19:42:00","content":{"rendered":"<p>In the example you show attributes with text, number, checkbox and select inputs. Is that all that is available? What about image\/file uploads etc?<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48441","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/58a965bf457978ccc1ccc7bfb72e6381b2e17948b56b83d020c62fe68772ea25?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/58a965bf457978ccc1ccc7bfb72e6381b2e17948b56b83d020c62fe68772ea25?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/58a965bf457978ccc1ccc7bfb72e6381b2e17948b56b83d020c62fe68772ea25?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/10077546"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48441"}]}},{"id":48440,"parent":0,"author":13631740,"author_name":"jakeparis","author_url":"https:\/\/jakeparis.com","date":"2026-03-03T18:59:37","content":{"rendered":"<p>Fantastic! This will definitely make plenty of use-cases much more streamlined.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48440","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/2915e1013f968e0a0272b4d95ca3296049b5e4e53ae8a3cad515780e59b69adc?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/2915e1013f968e0a0272b4d95ca3296049b5e4e53ae8a3cad515780e59b69adc?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/2915e1013f968e0a0272b4d95ca3296049b5e4e53ae8a3cad515780e59b69adc?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13631740"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48439,"parent":48437,"author":240000,"author_name":"Ciprian Popescu","author_url":"https:\/\/getbutterfly.com\/","date":"2026-03-03T18:28:14","content":{"rendered":"<p>That is correct. This change is bringing back the real WordPress developers back into the fold.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48439","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/240000"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48437"}]}},{"id":48438,"parent":0,"author":240000,"author_name":"Ciprian Popescu","author_url":"https:\/\/getbutterfly.com\/","date":"2026-03-03T18:21:23","content":{"rendered":"<p>This is <strong>THE FIRST<\/strong> <span tabindex=\"0\" class=\"glossary-item-container\">block<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Block<\/span> <span class=\"glossary-item-description\">Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span>-editor-related good news since <span tabindex=\"0\" class=\"glossary-item-container\">Gutenberg<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Gutenberg<\/span> <span class=\"glossary-item-description\">The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc. <a href=\"https:\/\/wordpress.org\/gutenberg\/\">https:\/\/wordpress.org\/gutenberg\/<\/a><\/span><\/span><\/span> was first implemented.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48438","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fb106f1c4570efe9214cc96f35bd8b494583aaa30647c7811e6753a76ac34742?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/240000"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}},{"id":48437,"parent":0,"author":21105068,"author_name":"Press Programmer","author_url":"","date":"2026-03-03T17:49:52","content":{"rendered":"<p>Thank you for sharing. This is one of the most interesting development for <span tabindex=\"0\" class=\"glossary-item-container\">Block<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Block<\/span> <span class=\"glossary-item-description\">Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> editor . It may well be the beginning of a new awesome era for the block editor based development!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48437","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/7a5292100c282f026e569833a0fb8b40de90c13f29093f585a23aac147cce4cb?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/7a5292100c282f026e569833a0fb8b40de90c13f29093f585a23aac147cce4cb?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/7a5292100c282f026e569833a0fb8b40de90c13f29093f585a23aac147cce4cb?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/21105068"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48437"}]}},{"id":48436,"parent":0,"author":14222020,"author_name":"Hudson Atwell","author_url":"https:\/\/gbti.network","date":"2026-03-03T17:33:52","content":{"rendered":"<p>Nice. Resharing.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/03\/03\/php-only-block-registration\/#comment-48436","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/14222020"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121777"}]}}]],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":1443,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/","name":"dev-notes","slug":"dev-notes","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/1443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121622,"date":"2026-02-25T17:56:41","date_gmt":"2026-02-25T17:56:41","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121622"},"modified":"2026-02-26T11:22:21","modified_gmt":"2026-02-26T11:22:21","slug":"whats-new-in-gutenberg-22-6-25-february","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/","title":{"rendered":"What\u2019s new in Gutenberg 22.6? (25 February)"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><em>\u201cWhat\u2019s new in <span tabindex='0' class='glossary-item-container'>Gutenberg<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Gutenberg<\/span> <span class='glossary-item-description'>The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc. <a href=\"https:\/\/wordpress.org\/gutenberg\/\">https:\/\/wordpress.org\/gutenberg\/<\/a><\/span><\/span><\/span>\u2026\u201d posts (labeled with the <a href=\"https:\/\/make.wordpress.org\/core\/tag\/gutenberg-new\/\">#gutenberg-new tag<\/a>) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, <a href=\"https:\/\/make.wordpress.org\/core\/2020\/05\/20\/ways-to-keep-up-with-full-site-editing-fse\/\">here\u2019s an overview<\/a> of different ways to keep up with Gutenberg and the Editor.<\/em><\/p>\n\n\n\n<div class=\"wp-block-cover has-custom-content-position is-position-bottom-center\" style=\"border-radius:10px;margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" data-attachment-id=\"118575\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2025\/07\/02\/whats-new-in-gutenberg-21-1\/gb-21-0-whats-new-2\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new.png\" data-orig-size=\"2160,1080\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"gb-21-0-whats-new\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-300x150.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-1024x512.png\" class=\"wp-block-cover__image-background wp-image-118575 size-large\" alt=\"\" src=\"https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-1024x512.png\" data-object-fit=\"cover\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-1024x512.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-300x150.png 300w, https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-768x384.png 768w, https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-1536x768.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2025\/07\/gb-21-0-whats-new-2048x1024.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#1e1e20\"><\/span><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div class=\"wp-block-group has-huge-font-size is-layout-constrained wp-container-core-group-is-layout-6cecc320 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"font-size:72px;line-height:1.1\"><mark style=\"color:#7b90ff\" class=\"has-inline-color\">What\u2019s New In<\/mark> <br>Gutenberg 22.6?<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Gutenberg 22.6 has been released and is <a href=\"https:\/\/wordpress.org\/plugins\/gutenberg\/\">available for download<\/a>!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This release brings visual change tracking to in-editor <span tabindex='0' class='glossary-item-container'>revisions<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Revisions<\/span> <span class='glossary-item-description'>The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next\/Previous buttons). The display indicates what has changed in each revision.<\/span><\/span><\/span> and introduces a brand-new Icon <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span>. The navigation overlay and client-side media processing both graduate from experimental status. Real-time collaboration adds cursor awareness and can now be enabled through a global settings toggle, and the Gallery block now supports lightbox navigation between images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A total of <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pulls?q=is%3Apr+milestone%3A%22Gutenberg+22.6%22+is%3Aclosed\">388 PRs<\/a> were merged in Gutenberg 22.6, with 8 first-time contributors!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Table of contents<\/strong><\/p>\n\n\n\n<nav aria-label=\"Table of Contents\" class=\"wp-block-table-of-contents\"><ul><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#in-editor-revisions-visual-change-tracking\">In-Editor Revisions: Visual Change Tracking<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#icon-block\">Icon Block<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#navigation-overlay\">Navigation Overlay<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#client-side-media-processing\">Client-Side Media Processing<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#real-time-collaboration\">Real-Time Collaboration<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#gallery-lightbox-navigation\">Gallery Lightbox Navigation<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#other-notable-highlights\">Other Notable Highlights<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#changelog\">Changelog<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#first-time-contributors\">First-time contributors<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/#contributors\">Contributors<\/a><\/li><\/ul><\/nav>\n\n\n\n<h2 id=\"in-editor-revisions-visual-change-tracking\" class=\"wp-block-heading\">In-Editor Revisions: Visual Change Tracking<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Browsing post revisions in the editor now shows a color-coded visual diff between the selected revision and its predecessor. Added text appears in green with an underline, removed text in red with a strikethrough, and formatting or attribute changes are highlighted with a yellow outline. Entire blocks, added or removed, are outlined in green or red, respectively. Visual change tracking can be toggled off to view clean content. Colors blend with currentColor so they look appropriate across all themes. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75049\">75049<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" data-attachment-id=\"121625\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/image-87\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image.png\" data-orig-size=\"2560,1560\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x183.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x624.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x624.png\" alt=\"\" class=\"wp-image-121625\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x624.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x183.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-768x468.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x936.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2048x1248.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h2 id=\"icon-block\" class=\"wp-block-heading\">Icon Block<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A brand-new Icon block lets you insert SVG icons from a curated library directly into your content. The block is powered by a new server-side SVG Icon Registration <span tabindex='0' class='glossary-item-container'>API<span class='glossary-item-hidden-content'><span class='glossary-item-header'>API<\/span> <span class='glossary-item-description'>An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span>, so updates to the icon registry propagate to all uses without block validation errors. A REST endpoint at \/wp\/v2\/icons supports searching and filtering. The initial set draws from the wordpress\/icons package, and the architecture is designed for future extensibility including third-party icon registration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/71227\">71227<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/72215\">72215<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75576\">75576<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-scaled-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"302\" data-attachment-id=\"121626\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/image-scaled\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-scaled-1.png\" data-orig-size=\"2560,755\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image-scaled\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x88-1.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x302-1.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x302-1.png\" alt=\"\" class=\"wp-image-121626\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x302-1.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x88-1.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-766x226-1.png 766w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x453-1.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2048x604-1.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h2 id=\"navigation-overlay\" class=\"wp-block-heading\">Navigation Overlay<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Navigation blocks now have customizable overlays and give user full control over mobile hamburger menus. A prominent \u201cCreate overlay\u201d button guides you through the setup, providing a selection of patterns to achieve a variety of designs for your overlay. The Navigation Overlay feature is no longer experimental, and is available to all users of the <span tabindex='0' class='glossary-item-container'>plugin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Plugin<\/span> <span class='glossary-item-description'>A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https:\/\/wordpress.org\/plugins\/ or can be cost-based plugin from a third-party<\/span><\/span><\/span>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74968\">74968<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74971\">74971<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75564\">75564<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75276\">75276<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-scaled-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"664\" data-attachment-id=\"121627\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/image-scaled-2\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-scaled-2.png\" data-orig-size=\"2560,1661\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image-scaled\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x195-1.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x664-1.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x664-1.png\" alt=\"\" class=\"wp-image-121627\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x664-1.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x195-1.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-768x498-1.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x997-1.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2048x1329-1.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h2 id=\"client-side-media-processing\" class=\"wp-block-heading\">Client-Side Media Processing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Client-side media processing is a feature that leverages the browser\u2019s <span tabindex='0' class='glossary-item-container'>capabilities<span class='glossary-item-hidden-content'><span class='glossary-item-header'>capability<\/span> <span class='glossary-item-description'>A\u00a0<strong>capability<\/strong>\u00a0is permission to perform one or more types of task. Checking if a user has a capability is performed by the <code>current_user_can<\/code> function. Each user of a WordPress site might have some permissions but not others, depending on their\u00a0role. For example, users who have the Author role usually have permission to edit their own posts (the \u201cedit_posts\u201d capability), but not permission to edit other users\u2019 posts (the \u201cedit_others_posts\u201d capability).<\/span><\/span><\/span> to process images. This enables the use of more advanced image formats (including AVIF, WebP, and MozJPEG output encoding) and compression techniques (resulting in ~10\u201315% smaller file sizes with no quality loss for generated JPEG sub-sizes). It also reduces demand on the web server, thus providing smoother media workflows. As of Gutenberg 22.6, client-side media processing has graduated from experimental state to stable feature. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75081\">75081<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74910\">74910<\/a>)<\/p>\n\n\n\n<h2 id=\"real-time-collaboration\" class=\"wp-block-heading\">Real-Time Collaboration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Real-time collaboration sees a major round of development in this release. A new toggle under <strong>Settings &gt; Writing<\/strong> lets you enable the feature, and once active, collaborators editing the same post see each other\u2019s cursor positions and block selections in real time. A presence indicator in the editor <span tabindex='0' class='glossary-item-container'>header<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Header<\/span> <span class='glossary-item-description'>The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor\u2019s opinion about your content and you\/ your organization\u2019s brand. It may also look different on different screen sizes.<\/span><\/span><\/span> shows who\u2019s currently editing. Under the hood, title, content, and <span tabindex='0' class='glossary-item-container'>excerpt<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Excerpt<\/span> <span class='glossary-item-description'>An excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that plugin\u2019s metabox.<\/span><\/span><\/span> now sync via Y.text for more granular <span tabindex='0' class='glossary-item-container'>conflict<span class='glossary-item-hidden-content'><span class='glossary-item-header'>conflict<\/span> <span class='glossary-item-description'>A conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered <em>stale<\/em>, and will require a <em>refresh<\/em> of the changes before it can be applied, or the conflicts will need to be <em>resolved<\/em>.<\/span><\/span><\/span> resolution, and numerous reliability fixes address disconnection handling, revision restores, and performance metrics. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75286\">75286<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75398\">75398<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75065\">75065<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75448\">75448<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75595\">75595<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" data-attachment-id=\"121629\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/image-88\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1.png\" data-orig-size=\"2560,1560\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x183-1.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x624-1.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x624-1.png\" alt=\"\" class=\"wp-image-121629\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x624-1.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x183-1.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-768x468-1.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x936-1.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2048x1248-1.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h2 id=\"gallery-lightbox-navigation\" class=\"wp-block-heading\">Gallery Lightbox Navigation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Gallery block\u2019s \u201cEnlarge on click\u201d lightbox now supports navigation between images. When you click an image in a gallery, back and next buttons let you browse through the rest of the gallery without closing the lightbox. Keyboard navigation with arrow keys and screen reader announcements (\u201cEnlarged image X of Y\u201d) are fully supported. Images that don\u2019t have lightbox enabled (e.g., those linked to a file <span tabindex='0' class='glossary-item-container'>URL<span class='glossary-item-hidden-content'><span class='glossary-item-header'>URL<\/span> <span class='glossary-item-description'>A specific web address of a website or web page on the Internet, such as a website\u2019s URL www.wordpress.org<\/span><\/span><\/span>) are skipped during navigation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/62906\">62906<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-scaled-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"664\" data-attachment-id=\"121628\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/image-scaled-3\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-scaled-3.png\" data-orig-size=\"2560,1661\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image-scaled\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x195-2.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x664-2.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x664-2.png\" alt=\"\" class=\"wp-image-121628\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x664-2.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x195-2.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-768x498-2.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x997-2.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2048x1329-2.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h2 id=\"other-notable-highlights\" class=\"wp-block-heading\">Other Notable Highlights<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Block visibility enhancements<\/strong>: List View now shows viewport-aware icons with tooltips indicating which viewports a block is hidden on, and hidden blocks get a simplified toolbar. The keyboard shortcut (Cmd+Shift+H \/ Ctrl+Shift+H) to toggle block visibility options is featured in the block context menu. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75404\">75404<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75335\">75335<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75334\">75334<\/a>)<\/li>\n\n\n\n<li><strong>Notes keyboard shortcut<\/strong>: You can now create a block note with Cmd+Option+M (Mac) or Ctrl+Alt+M (Windows\/Linux), and press Escape to cancel. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75287\">75287<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75288\">75288<\/a>)<\/li>\n\n\n\n<li><strong>Verse block renamed to Poetry<\/strong>: The Verse block is now called Poetry. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74121\">74121<\/a>)<\/li>\n\n\n\n<li><strong>QuickEdit stabilized<\/strong>: QuickEdit is now stable and opens as a modal in the Site Editor pages view. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75565\">75565<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75173\">75173<\/a>)<\/li>\n\n\n\n<li><strong>Text-align block support migrations<\/strong>: Eight blocks (Author Biography, Post Author Name, Post Comments Count, Post Comments Form, Post Comments Link, Post Terms, Post Time to Read, and Term Description) have been migrated to the standardized text-align block support.<\/li>\n\n\n\n<li><strong>Enforced <span tabindex='0' class='glossary-item-container'>iframe<span class='glossary-item-hidden-content'><span class='glossary-item-header'>iframe<\/span> <span class='glossary-item-description'>iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and\/or CSS which is loaded at the time when iframe tag is parsed by the user\u2019s browser.<\/span><\/span><\/span> for the post editor<\/strong>: Please check <a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/24\/iframed-editor-changes-in-wordpress-7-0\/\">here<\/a> for more information. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75475\">75475<\/a>)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Many of these new features will also be included in the upcoming WordPress version 7.0, so you can find more details and testing instructions over at the <a href=\"https:\/\/make.wordpress.org\/test\/2026\/02\/20\/help-test-wordpress-7-0\/\">7.0 Call for Testing<\/a>.<\/em><\/p>\n\n\n\n<h2 id=\"changelog\" class=\"wp-block-heading\">Changelog<\/h2>\n\n\n\n<h3 id=\"features\" class=\"wp-block-heading\">Features<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wp-env: Add \u2013config option for custom configuration files. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75087\">75087<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"client-side-media\" class=\"wp-block-heading\">Client Side Media<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add AVIF, WebP and MozJPEG output encoding support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75081\">75081<\/a>)<\/li>\n\n\n\n<li>Add device\/browser <span tabindex='0' class='glossary-item-container'>capability<span class='glossary-item-hidden-content'><span class='glossary-item-header'>capability<\/span> <span class='glossary-item-description'>A\u00a0<strong>capability<\/strong>\u00a0is permission to perform one or more types of task. Checking if a user has a capability is performed by the <code>current_user_can<\/code> function. Each user of a WordPress site might have some permissions but not others, depending on their\u00a0role. For example, users who have the Author role usually have permission to edit their own posts (the \u201cedit_posts\u201d capability), but not permission to edit other users\u2019 posts (the \u201cedit_others_posts\u201d capability).<\/span><\/span><\/span> detection. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75863\">75863<\/a>)<\/li>\n\n\n\n<li>Add EXIF metadata tests for Client Side Media. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74909\">74909<\/a>)<\/li>\n\n\n\n<li>Fix client-side media file naming. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75817\">75817<\/a>)<\/li>\n\n\n\n<li>Media: Graduate client-side media processing from experimental. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75112\">75112<\/a>)<\/li>\n\n\n\n<li>Pass unsupported formats directly to the server. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74910\">74910<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-library\" class=\"wp-block-heading\">Block Library<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>New Block: Icon Block. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/71227\">71227<\/a>)<\/li>\n\n\n\n<li>Remove the Icon Block and Icon SVG API from experiments. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75576\">75576<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"interactivity-api\" class=\"wp-block-heading\">Interactivity API<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Export <code>watch<\/code> from <code>@preact\/signals<\/code>\u2018s <code>effect<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75563\">75563<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"enhancements\" class=\"wp-block-heading\">Enhancements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wordpress\/ui: Add Dialog component. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75183\">75183<\/a>)<\/li>\n\n\n\n<li>wordpress\/ui: Use semantic dimension tokens. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74557\">74557<\/a>)<\/li>\n\n\n\n<li>Abilities: Allow nested namespace ability names (2-4 segments). (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75393\">75393<\/a>)<\/li>\n\n\n\n<li>Add testsEnvironment option and split Gutenberg wp-env configs. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75341\">75341<\/a>)<\/li>\n\n\n\n<li><span tabindex='0' class='glossary-item-container'>Admin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>admin<\/span> <span class='glossary-item-description'>(and super admin)<\/span><\/span><\/span> <span tabindex='0' class='glossary-item-container'>UI<span class='glossary-item-hidden-content'><span class='glossary-item-header'>UI<\/span> <span class='glossary-item-description'>User interface<\/span><\/span><\/span>: Apply \u2018text-wrap: Pretty\u2019 to Page. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74907\">74907<\/a>)<\/li>\n\n\n\n<li>Commands: Display <span tabindex='0' class='glossary-item-container'>category<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Category<\/span> <span class='glossary-item-description'>The 'category' taxonomy lets you group posts \/ content together that share a common bond. Categories are pre-defined and broad ranging.<\/span><\/span><\/span> labels and enforce category icons. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75669\">75669<\/a>)<\/li>\n\n\n\n<li>Gutenberg plugin: Always enforce the iframe in the post editor. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75475\">75475<\/a>)<\/li>\n\n\n\n<li>Layout: Update Gutenberg to match <span tabindex='0' class='glossary-item-container'>core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> after <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/75360\">#75360<\/a> sync. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75594\">75594<\/a>)<\/li>\n\n\n\n<li>Media Utils: Auto-select uploaded files in media modal experiment. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75597\">75597<\/a>)<\/li>\n\n\n\n<li>MediaEdit: Support ordered values and reordering of items. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75207\">75207<\/a>)<\/li>\n\n\n\n<li>Replace install-path command with status command in wp-env. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75020\">75020<\/a>)<\/li>\n\n\n\n<li>Theme: Update dimension tokens. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75054\">75054<\/a>)<\/li>\n\n\n\n<li>Theme: Update elevation tokens to use abbreviated size names. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75103\">75103<\/a>)<\/li>\n\n\n\n<li>UI: Add <code>Textarea<\/code> primitive. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74707\">74707<\/a>)<\/li>\n\n\n\n<li><code>@wordpress\/ui<\/code>: Add <code>IconButton<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74697\">74697<\/a>)<\/li>\n\n\n\n<li><code>@wordpress\/ui<\/code>: Add <code>Tabs<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74652\">74652<\/a>)<\/li>\n\n\n\n<li>iAPI router: Move internal properties to a private store. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/70882\">70882<\/a>)<\/li>\n\n\n\n<li>ui\/IconButton: Make icon always 24px regardless of <code>size<\/code> prop. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75677\">75677<\/a>)<\/li>\n\n\n\n<li>ui\/<code>Button<\/code>: Add min width. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75133\">75133<\/a>)<\/li>\n\n\n\n<li>wp-env: Add cleanup command and force flag. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75045\">75045<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-library\" class=\"wp-block-heading\">Block Library<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Accordion block: Add list view support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75271\">75271<\/a>)<\/li>\n\n\n\n<li>Accordion: Move Accordion icons to Icon library. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75380\">75380<\/a>)<\/li>\n\n\n\n<li>Author block: When recreating, migrate the textAlign attribute of the Author block to the block style attribute. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75153\">75153<\/a>)<\/li>\n\n\n\n<li>Block Supports: Add Line Indent support using enum setting. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74889\">74889<\/a>)<\/li>\n\n\n\n<li>Blocks: Try prepending \u2018<span tabindex='0' class='glossary-item-container'>https<span class='glossary-item-hidden-content'><span class='glossary-item-header'>HTTPS<\/span> <span class='glossary-item-description'>HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS  is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information.<\/span><\/span><\/span>\u2019 to URLs without protocol. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75005\">75005<\/a>)<\/li>\n\n\n\n<li>Breadcrumbs: Improve loading state rendering. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75383\">75383<\/a>)<\/li>\n\n\n\n<li>Custom <span tabindex='0' class='glossary-item-container'>CSS<span class='glossary-item-hidden-content'><span class='glossary-item-header'>CSS<\/span> <span class='glossary-item-description'>Cascading Style Sheets.<\/span><\/span><\/span> support: Add attributes for dynamic blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75052\">75052<\/a>)<\/li>\n\n\n\n<li>Default all initial suggested results to 20 for navigation link ui. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75186\">75186<\/a>)<\/li>\n\n\n\n<li>Gallery: Add lightbox support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/62906\">62906<\/a>)<\/li>\n\n\n\n<li>Gallery: Add list view block support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75407\">75407<\/a>)<\/li>\n\n\n\n<li>Icon block: Skip serialization and increase default size. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75553\">75553<\/a>)<\/li>\n\n\n\n<li>Image Block: Handle image URLs without protocol. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75135\">75135<\/a>)<\/li>\n\n\n\n<li>Informational Parity between Inspector Link Preview and on Canvas Link Preview. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75399\">75399<\/a>)<\/li>\n\n\n\n<li>List View Support: Only render list view on top level block with support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75166\">75166<\/a>)<\/li>\n\n\n\n<li>Migrate multiple blocks to text-align block support:\n<ul class=\"wp-block-list\">\n<li>Author Biography. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74997\">74997<\/a>)<\/li>\n\n\n\n<li>Post Author Name. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75109\">75109<\/a>)<\/li>\n\n\n\n<li>Post Comments Count. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75321\">75321<\/a>)<\/li>\n\n\n\n<li>Post Comments Form. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75322\">75322<\/a>)<\/li>\n\n\n\n<li>Post Comments Link. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75332\">75332<\/a>)<\/li>\n\n\n\n<li>Post Terms. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75545\">75545<\/a>)<\/li>\n\n\n\n<li>Post Time to Read. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75541\">75541<\/a>)<\/li>\n\n\n\n<li>Term Description. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75542\">75542<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Navigation Link: Clarify Link To <span tabindex='0' class='glossary-item-container'>invalid<span class='glossary-item-hidden-content'><span class='glossary-item-header'>invalid<\/span> <span class='glossary-item-description'>A resolution on the bug tracker (and generally common in software development, sometimes also <em>notabug<\/em>) that indicates the ticket is not a bug, is a support request, or is generally invalid.<\/span><\/span><\/span> and draft states. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74054\">74054<\/a>)<\/li>\n\n\n\n<li>Navigation Link: Go to page link and edit page for inspector <span tabindex='0' class='glossary-item-container'>sidebar<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Sidebar<\/span> <span class='glossary-item-description'>A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.<\/span><\/span><\/span>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75262\">75262<\/a>)<\/li>\n\n\n\n<li>Navigation Overlay: Add Create Overlay button. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74971\">74971<\/a>)<\/li>\n\n\n\n<li>Navigation Overlay: Remove experiment. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74968\">74968<\/a>)<\/li>\n\n\n\n<li>Navigation: Improved help on create page flow. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75349\">75349<\/a>)<\/li>\n\n\n\n<li>Navigation: Update overlay template part naming to \u2018Navigation Overlay\u2019. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75564\">75564<\/a>)<\/li>\n\n\n\n<li>Pattern Editing and Navigation block: Show navigation controls in popover. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75194\">75194<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Allow click through to List View. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75246\">75246<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Revise \u2018Edit section\u2019 button naming. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75663\">75663<\/a>)<\/li>\n\n\n\n<li>Playlist block: Remove border. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75202\">75202<\/a>)<\/li>\n\n\n\n<li>Post Excerpt: Add text columns support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75587\">75587<\/a>)<\/li>\n\n\n\n<li>Pre-populate Navigation Page Creator with Search Text. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75154\">75154<\/a>)<\/li>\n\n\n\n<li>Rename Verse block to Poetry. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74121\">74121<\/a>)<\/li>\n\n\n\n<li>Tabs:\n<ul class=\"wp-block-list\">\n<li>Add text and background color support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75482\">75482<\/a>)<\/li>\n\n\n\n<li>Inherit text color for tabs-menu-item blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75621\">75621<\/a>)<\/li>\n\n\n\n<li>Polish. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75128\">75128<\/a>)<\/li>\n\n\n\n<li>Simplify Tabs Menu Item editing. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75416\">75416<\/a>)<\/li>\n\n\n\n<li>Tidy up UI for controls. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75309\">75309<\/a>)<\/li>\n\n\n\n<li>Update Tabs block icons. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75376\">75376<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>theme.<span tabindex='0' class='glossary-item-container'>json<span class='glossary-item-hidden-content'><span class='glossary-item-header'>JSON<\/span> <span class='glossary-item-description'>JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.<\/span><\/span><\/span>: Enable width setting for Icon block by default. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75665\">75665<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"post-editor\" class=\"wp-block-heading\">Post Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add dedicated navigation-overlay icon (<a href=\"https:\/\/core.trac.wordpress.org\/ticket\/75249\">#75249<\/a>). (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75426\">75426<\/a>)<\/li>\n\n\n\n<li>Auto-switch viewport based on Overlay Visibility setting when entering overlay editor. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75386\">75386<\/a>)<\/li>\n\n\n\n<li>Block Editor: Allow disabling content-only editing for unsynced patterns. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75457\">75457<\/a>)<\/li>\n\n\n\n<li>Commands: Add category property to command registration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75612\">75612<\/a>)<\/li>\n\n\n\n<li>Create sub-sized images. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74566\">74566<\/a>)<\/li>\n\n\n\n<li>Editor: Introduce new selectedNote editor state. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75177\">75177<\/a>)<\/li>\n\n\n\n<li><span tabindex='0' class='glossary-item-container'>Filter<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Filter<\/span> <span class='glossary-item-description'>Filters are one of the two types of Hooks <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Hooks\">https:\/\/codex.wordpress.org\/Plugin_API\/Hooks<\/a>. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.<\/span><\/span><\/span> navigation category patterns to only show in navigation-overlay template part context. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75276\">75276<\/a>)<\/li>\n\n\n\n<li>In-editor Revisions: Update success notice message. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75411\">75411<\/a>)<\/li>\n\n\n\n<li>In-editor revisions: Add visual diffing. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75049\">75049<\/a>)<\/li>\n\n\n\n<li>Migrate <code>EditorSnackbar<\/code> and <code>EditorNotices<\/code> components to the <code>@wordpress\/notices<\/code> package. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74384\">74384<\/a>)<\/li>\n\n\n\n<li>Navigation: Select list view tab on contentOnly. Alternative with explicit solution. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75578\">75578<\/a>)<\/li>\n\n\n\n<li>Notes: Add a keyboard shortcut for creating a new note. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75287\">75287<\/a>)<\/li>\n\n\n\n<li>Notes: Pressing Escape should cancel adding a note. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75288\">75288<\/a>)<\/li>\n\n\n\n<li>Notes: Update shortcut category. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75461\">75461<\/a>)<\/li>\n\n\n\n<li>Post Content Block: Improve removal confirmation modal. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75001\">75001<\/a>)<\/li>\n\n\n\n<li>Real-time collaboration:\n<ul class=\"wp-block-list\">\n<li>Add collaborators cursor awareness. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75398\">75398<\/a>)<\/li>\n\n\n\n<li>Add global setting to enable real-time collaboration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75286\">75286<\/a>)<\/li>\n\n\n\n<li>Move <span tabindex='0' class='glossary-item-container'>PHP<span class='glossary-item-hidden-content'><span class='glossary-item-header'>PHP<\/span> <span class='glossary-item-description'>The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span> code to compat \/ backports directory. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75366\">75366<\/a>)<\/li>\n\n\n\n<li>Remove block client IDs from Awareness, fix \u201cShow Template\u201d view. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75590\">75590<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set snackbar position to center. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75294\">75294<\/a>)<\/li>\n\n\n\n<li>Site Editor Pages: QuickEdit as a modal. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75173\">75173<\/a>)<\/li>\n\n\n\n<li>Use contextual snackbar text when activating a theme from preview. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75385\">75385<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-editor\" class=\"wp-block-heading\">Block Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add URL validation in LinkControl using ValidatedInputControl. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73486\">73486<\/a>)<\/li>\n\n\n\n<li>Add block rename keyboard shortcut. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74454\">74454<\/a>)<\/li>\n\n\n\n<li>Add getDimensionsClassesAndStyles function and related tests. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74524\">74524<\/a>)<\/li>\n\n\n\n<li>Add storybook for ColorPaletteControl. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74425\">74425<\/a>)<\/li>\n\n\n\n<li>Block Lock: Disable Apply button on non-dirty state. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75495\">75495<\/a>)<\/li>\n\n\n\n<li>Block Support: Allow serialization skipping for ariaLabel. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75192\">75192<\/a>)<\/li>\n\n\n\n<li>Block Visibility:\n<ul class=\"wp-block-list\">\n<li>Centralize modal state in block-editor store. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75367\">75367<\/a>)<\/li>\n\n\n\n<li>Disable Apply button on non-dirty state. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75494\">75494<\/a>)<\/li>\n\n\n\n<li>Disable visibility toggle for children of sections. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75447\">75447<\/a>)<\/li>\n\n\n\n<li>Show keyboard shortcut in context menu. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75334\">75334<\/a>)<\/li>\n\n\n\n<li>Show viewport icons and tooltip in list view for hidden blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75404\">75404<\/a>)<\/li>\n\n\n\n<li>Simplify toolbar for hidden blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75335\">75335<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Cover: Add new \u201cfullheight\u201d icon, and use for Cover. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75240\">75240<\/a>)<\/li>\n\n\n\n<li>Enable paragraphs to be added to contentOnly patterns. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73222\">73222<\/a>)<\/li>\n\n\n\n<li>Enhance block appender labels to reflect default block type. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/71502\">71502<\/a>)<\/li>\n\n\n\n<li>Hide parent grid cells when child grid is selected. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75078\">75078<\/a>)<\/li>\n\n\n\n<li>Implement WebAssembly support detection and fallbacks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74827\">74827<\/a>)<\/li>\n\n\n\n<li>Improve Background panel UI in Global Styles. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75230\">75230<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Add \u201cEdit section\u201d button to unsynced pattern toolbar. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75602\">75602<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Hide List View child blocks in Content panel. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75007\">75007<\/a>)<\/li>\n\n\n\n<li>Stabilize PHP-Only Block Registration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75543\">75543<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"site-editor\" class=\"wp-block-heading\">Site Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DataForm: Update panel trigger. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75290\">75290<\/a>)<\/li>\n\n\n\n<li>DataViews: Add onReset prop for view persistence reset. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75093\">75093<\/a>)<\/li>\n\n\n\n<li>Make QuickEdit stable + change template to select. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75565\">75565<\/a>)<\/li>\n\n\n\n<li>Prevent welcome guide from appearing during loading. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75102\">75102<\/a>)<\/li>\n\n\n\n<li>Quick edit: Make footer sticky. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75297\">75297<\/a>)<\/li>\n\n\n\n<li>Unified view persistence: Share one persisted view across all tabs. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74970\">74970<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"dataviews\" class=\"wp-block-heading\">DataViews<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add new <code>adaptiveSelect<\/code> DataForm control. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74937\">74937<\/a>)<\/li>\n\n\n\n<li>Consistent rendering of selection checkbox and actions in <code>grid<\/code> layout. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75056\">75056<\/a>)<\/li>\n\n\n\n<li>DataForm: Add edit variant. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75462\">75462<\/a>)<\/li>\n\n\n\n<li>DataForm: Mark fields as required or optional automatically. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74430\">74430<\/a>)<\/li>\n\n\n\n<li>Dataform: Adds validation support to the DataForm details layout. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74996\">74996<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"components\" class=\"wp-block-heading\">Components<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DataViews: Use public ColorPicker instead of internal Picker export. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75394\">75394<\/a>)<\/li>\n\n\n\n<li>DateCalendar, DateRangeCalendar: Use lighter gray for disabled dates. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75683\">75683<\/a>)<\/li>\n\n\n\n<li>ToggleGroupControl: Add visual emphasis to selected item. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75138\">75138<\/a>)<\/li>\n\n\n\n<li>[Real-time collaboration] Refine collaborator overlay with <span tabindex='0' class='glossary-item-container'>Avatar<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Avatar<\/span> <span class='glossary-item-description'>An avatar is an image or illustration that specifically refers to a character that represents an online user. It\u2019s usually a square box that appears next to the user\u2019s name.<\/span><\/span><\/span> component integration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75595\">75595<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"icons\" class=\"wp-block-heading\">Icons<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Icons Registry: Don\u2019t expose \u201cinternal\u201d icons. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75526\">75526<\/a>)<\/li>\n\n\n\n<li>Trim list of public icons further. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75630\">75630<\/a>)<\/li>\n\n\n\n<li>Update icon manifest acronyms. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75418\">75418<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"media\" class=\"wp-block-heading\">Media<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Media Fields: Filter author field to only show authors. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75328\">75328<\/a>)<\/li>\n\n\n\n<li>Media Fields: Fix filename field truncation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75091\">75091<\/a>)<\/li>\n\n\n\n<li>Media Modal Experiment: Update preview size to be a little smaller. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75191\">75191<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"new-apis\" class=\"wp-block-heading\">New APIs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Real-time collaboration: Remove wordpress\/sync from bundled packages and add private APIs. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74671\">74671<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"bug-fixes\" class=\"wp-block-heading\">Bug Fixes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Boot: Fix mobile admin bar covering single-page headers. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75339\">75339<\/a>)<\/li>\n\n\n\n<li>DataForm: Fix color picker styles. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75427\">75427<\/a>)<\/li>\n\n\n\n<li>Env: Remove non-functional <code>WP_ENV_MULTISITE<\/code> configuration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/72567\">72567<\/a>)<\/li>\n\n\n\n<li>Fields: Fix <code>authorField<\/code> query. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75298\">75298<\/a>)<\/li>\n\n\n\n<li>Fix missed dimension token <span tabindex='0' class='glossary-item-container'>migration<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Migration<\/span> <span class='glossary-item-description'>Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies.<\/span><\/span><\/span> in UI package. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75446\">75446<\/a>)<\/li>\n\n\n\n<li>Fix undo end-to-end test. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75740\">75740<\/a>)<\/li>\n\n\n\n<li>Language Format: Add missing attribute definition. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75422\">75422<\/a>)<\/li>\n\n\n\n<li>Media Modal Experiment: Remove default value for allowedTypes so that the file block can accept all types. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75159\">75159<\/a>)<\/li>\n\n\n\n<li>Prevent fatal error when the inline CSS duotone variable is an array. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75283\">75283<\/a>)<\/li>\n\n\n\n<li>Routing Boot Package: Remove left border from stage and inspector surfaces. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75036\">75036<\/a>)<\/li>\n\n\n\n<li>Run generate-worker-placeholders script in dev. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75104\">75104<\/a>)<\/li>\n\n\n\n<li>Support zip theme sources in Playground runtime. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75155\">75155<\/a>)<\/li>\n\n\n\n<li>Upload Media: Fix upload handling. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75646\">75646<\/a>)<\/li>\n\n\n\n<li><span tabindex='0' class='glossary-item-container'>Widget<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Widget<\/span> <span class='glossary-item-description'>A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user.<\/span><\/span><\/span> Area: Disable renaming and visibility support. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75279\">75279<\/a>)<\/li>\n\n\n\n<li>Writing flow: Fix Cmd+A from empty RichText. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75175\">75175<\/a>)<\/li>\n\n\n\n<li>iAPI Router: Update cached styles for re-fetched pages. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75097\">75097<\/a>)<\/li>\n\n\n\n<li>ui\/Button: Fix disabled styles and variable composition. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75568\">75568<\/a>)<\/li>\n\n\n\n<li>wp-env Playground: Improve mapping and core source handling. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75527\">75527<\/a>)<\/li>\n\n\n\n<li>wp-env:\n<ul class=\"wp-block-list\">\n<li>Fix <span tabindex='0' class='glossary-item-container'>MySQL<span class='glossary-item-hidden-content'><span class='glossary-item-header'>MySQL<\/span> <span class='glossary-item-description'>MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. <a href=\"https:\/\/www.mysql.com\/\">https:\/\/www.mysql.com\/<\/a>.<\/span><\/span><\/span> startup race condition causing database connection errors. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75046\">75046<\/a>)<\/li>\n\n\n\n<li>Fix mixed runtime detection issues. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75057\">75057<\/a>)<\/li>\n\n\n\n<li>Fix status command. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75325\">75325<\/a>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-library\" class=\"wp-block-heading\">Block Library<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add initialSearchState to avoid console warnings from LinkControl inputValue change. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75643\">75643<\/a>)<\/li>\n\n\n\n<li>Border Support: Fix editor split border style fallback. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75546\">75546<\/a>)<\/li>\n\n\n\n<li>Comments Link: Fix transforms textAlign. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75676\">75676<\/a>)<\/li>\n\n\n\n<li>Cover block: Force LTR direction for the background URL input field. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75169\">75169<\/a>)<\/li>\n\n\n\n<li><span tabindex='0' class='glossary-item-container'>Featured Image<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Featured image<\/span> <span class='glossary-item-description'>A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts.<\/span><\/span><\/span>: Added a fallback to the default value when clearing the aspect ratio control for the Featured Image. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75358\">75358<\/a>)<\/li>\n\n\n\n<li>Fix duplicate content when navigation overlay is open and nav has non-link inner blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75180\">75180<\/a>)<\/li>\n\n\n\n<li>Fix: Make all Navigation Overlay Close buttons work. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75384\">75384<\/a>)<\/li>\n\n\n\n<li>Fix: Show and hook up submenu visibility for Page Lists within Navigation Blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75531\">75531<\/a>)<\/li>\n\n\n\n<li>Gallery: Fix PHP warning in random order image reordering. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75678\">75678<\/a>)<\/li>\n\n\n\n<li>Gallery: Skip interactivity directives when no images have lightbox enabled. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75680\">75680<\/a>)<\/li>\n\n\n\n<li>Group Block: Fix preview display. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75200\">75200<\/a>)<\/li>\n\n\n\n<li>Heading Block: Fix preview display. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75675\">75675<\/a>)<\/li>\n\n\n\n<li>Hide grid visualiser if the grid block is hidden. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74963\">74963<\/a>)<\/li>\n\n\n\n<li>Hide navigation-overlay template parts from inserter. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75478\">75478<\/a>)<\/li>\n\n\n\n<li>Icon Block:\n<ul class=\"wp-block-list\">\n<li>Corrects style selectors when global styles are set. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75724\">75724<\/a>)<\/li>\n\n\n\n<li>Include Icons assets in Plugin ZIP. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75866\">75866<\/a>)<\/li>\n\n\n\n<li>Move default width rule to theme.json instead of block.json. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75653\">75653<\/a>)<\/li>\n\n\n\n<li>Remove experimental property. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75742\">75742<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Image block: Add missing space between sentences. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75142\">75142<\/a>)<\/li>\n\n\n\n<li>Improve link preview badges. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75318\">75318<\/a>)<\/li>\n\n\n\n<li>Media &amp; Text: Respect image_default_link_type option. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74295\">74295<\/a>)<\/li>\n\n\n\n<li>Navigation Submenu: Restore <code>openSubmenusOnClick<\/code> to <code>usesContext<\/code> for backward compatibility. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75435\">75435<\/a>)<\/li>\n\n\n\n<li>Navigation block: Remove horizontal scroll from list view. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75086\">75086<\/a>)<\/li>\n\n\n\n<li>Navigation link: Fix resetting link from the tools panel. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75228\">75228<\/a>)<\/li>\n\n\n\n<li>Navigation overlay: Fix default pattern contrast issue on dark themes. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74979\">74979<\/a>)<\/li>\n\n\n\n<li>Post Excerpt: Disable <span tabindex='0' class='glossary-item-container'>HTML<span class='glossary-item-hidden-content'><span class='glossary-item-header'>HTML<\/span> <span class='glossary-item-description'>HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.<\/span><\/span><\/span> element insertion. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74928\">74928<\/a>)<\/li>\n\n\n\n<li>Pullquote: Fix deprecated block validation when anchor\/id attribute is present. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75132\">75132<\/a>)<\/li>\n\n\n\n<li>Query: Remove content role from block. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75760\">75760<\/a>)<\/li>\n\n\n\n<li>Remove useEffect guard rail to enforce minimum width. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75624\">75624<\/a>)<\/li>\n\n\n\n<li>Respect deprecated openSubmenusOnClick value on frontend rendering. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75439\">75439<\/a>)<\/li>\n\n\n\n<li>Tab Block: Ensure label formatting works correctly. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75548\">75548<\/a>)<\/li>\n\n\n\n<li>Tab: Fixed the color reset to ensure correctness. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75606\">75606<\/a>)<\/li>\n\n\n\n<li>Tabs:\n<ul class=\"wp-block-list\">\n<li>Fix incorrect fixtures. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75523\">75523<\/a>)<\/li>\n\n\n\n<li>Fix saved HTML. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75580\">75580<\/a>)<\/li>\n\n\n\n<li>Improve Tab Panel <span tabindex='0' class='glossary-item-container'>accessibility<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Accessibility<\/span> <span class='glossary-item-description'>Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both \u201cdirect access\u201d (i.e. unassisted) and \u201cindirect access\u201d meaning compatibility with a person\u2019s assistive technology (for example, computer screen readers). (https:\/\/en.wikipedia.org\/wiki\/Accessibility)<\/span><\/span><\/span>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75484\">75484<\/a>)<\/li>\n\n\n\n<li>Improve tab keyboard nav. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75471\">75471<\/a>)<\/li>\n\n\n\n<li>Make Example preview translatable. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75555\">75555<\/a>)<\/li>\n\n\n\n<li>Remove name editing UI. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75554\">75554<\/a>)<\/li>\n\n\n\n<li>Sanitize tab_id. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75615\">75615<\/a>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-editor\" class=\"wp-block-heading\">Block Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Allow grid to use style variation blockGap values for columns calculation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75360\">75360<\/a>)<\/li>\n\n\n\n<li>Allow stable block IDs in block editor store. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74687\">74687<\/a>)<\/li>\n\n\n\n<li>Block Bindings: Have block fields panel reflects bound attribute value. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/72096\">72096<\/a>)<\/li>\n\n\n\n<li>Block editor cross origin isolation: Attempt to gracefully deal with race conditions. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75600\">75600<\/a>)<\/li>\n\n\n\n<li>Block transform command: Pass the block icon src rather than a BlockIcon component. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75365\">75365<\/a>)<\/li>\n\n\n\n<li>ContrastChecker: Fix check for button block colors. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/71959\">71959<\/a>)<\/li>\n\n\n\n<li>DOM: Make focus.focusable spec-compliant by excluding inert elements. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75172\">75172<\/a>)<\/li>\n\n\n\n<li>Fix Columns block horizontal spacing when setting vertical gap. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75355\">75355<\/a>)<\/li>\n\n\n\n<li>Fix LinkControl URL Normalization. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75488\">75488<\/a>)<\/li>\n\n\n\n<li>Fix emdashes in HTML anchor description. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75043\">75043<\/a>)<\/li>\n\n\n\n<li>Fix error when undoing newly added pattern. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75850\">75850<\/a>)<\/li>\n\n\n\n<li>Fix: Changing URL in link after changing text outside the popover resets it. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75342\">75342<\/a>)<\/li>\n\n\n\n<li>Link Control: Validate on submit. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75267\">75267<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75310\">75310<\/a>)<\/li>\n\n\n\n<li>List View tab: Ensure it\u2019s populated when first selecting a container block. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75558\">75558<\/a>)<\/li>\n\n\n\n<li>Only show dot divider for parent selector in top toolbar. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75710\">75710<\/a>)<\/li>\n\n\n\n<li>Pattern editing: Fix block editing modes when switching back and forth from isolated editing. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75821\">75821<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Fix nested patterns\/sections. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75772\">75772<\/a>)<\/li>\n\n\n\n<li>Post editor: iframe: Check inserted rather than registered block versions. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75187\">75187<\/a>)<\/li>\n\n\n\n<li>Preserve existing URLInput defaults by only using validation component when validity settings are used. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75392\">75392<\/a>)<\/li>\n\n\n\n<li>Remove formatting controls restriction private API. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75382\">75382<\/a>)<\/li>\n\n\n\n<li>RichText:\n<ul class=\"wp-block-list\">\n<li>Remove min-width inline style causing flex layout issues. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75370\">75370<\/a>)<\/li>\n\n\n\n<li>Avoid stale active formats when deleting the text. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75227\">75227<\/a>)<\/li>\n\n\n\n<li>Fix white space collapsing around formatting. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74820\">74820<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Synced patterns: Fix block editing mode of synced pattern content when nested in an unsynced pattern. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75818\">75818<\/a>)<\/li>\n\n\n\n<li>Writing Flow:\n<ul class=\"wp-block-list\">\n<li>Fix block selection from partially selected RichText. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75449\">75449<\/a>)<\/li>\n\n\n\n<li>Fix select all with full formatting. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/64934\">64934<\/a>)<\/li>\n\n\n\n<li>Skip non-empty blocks on arrow key nav. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75141\">75141<\/a>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 id=\"post-editor\" class=\"wp-block-heading\">Post Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add paste logging to writing flow. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73885\">73885<\/a>)<\/li>\n\n\n\n<li>Fix Overlay core patterns not showing on design tab. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75618\">75618<\/a>)<\/li>\n\n\n\n<li>Fix selection restoration after entity navigation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75371\">75371<\/a>)<\/li>\n\n\n\n<li>In-editor revisions: Preserve client IDs. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75028\">75028<\/a>)<\/li>\n\n\n\n<li>Lock save button during Client Side Media processing and uploading. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74951\">74951<\/a>)<\/li>\n\n\n\n<li>Notes:\n<ul class=\"wp-block-list\">\n<li>Remove block highlight when deleting parent note. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75453\">75453<\/a>)<\/li>\n\n\n\n<li>Fix block toolbar click action. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75614\">75614<\/a>)<\/li>\n\n\n\n<li>Fix new note creation from the List View. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75566\">75566<\/a>)<\/li>\n\n\n\n<li>Fix sidebar display logic for small screens. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75454\">75454<\/a>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Real-time Collaboration: Fix revision restore <span tabindex='0' class='glossary-item-container'>bug<span class='glossary-item-hidden-content'><span class='glossary-item-header'>bug<\/span> <span class='glossary-item-description'>A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.<\/span><\/span><\/span>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75233\">75233<\/a>)<\/li>\n\n\n\n<li>Restore deprecated Pullquote Block. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75122\">75122<\/a>)<\/li>\n\n\n\n<li>[Real-time collaboration] Fix layout issue. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75599\">75599<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"components\" class=\"wp-block-heading\">Components<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Button: Prevent outline flicker when focused and active at the same time. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75346\">75346<\/a>)<\/li>\n\n\n\n<li>ExternalLink: Prevent Twemoji from replacing arrow. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75538\">75538<\/a>)<\/li>\n\n\n\n<li>Fix: ISO 8601 compliant year formatting in TimePicker. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75343\">75343<\/a>)<\/li>\n\n\n\n<li>Remove \u201ctext-wrap: Balance\u201d fallback from Text. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75089\">75089<\/a>)<\/li>\n\n\n\n<li>Slot: Fix ref forwarding. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75274\">75274<\/a>)<\/li>\n\n\n\n<li>Snackbar: Fix scaling issue with snackbars that update their content via a common id. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75709\">75709<\/a>)<\/li>\n\n\n\n<li>Tabs: Set explicit font-family on tab buttons. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75537\">75537<\/a>)<\/li>\n\n\n\n<li>ToggleControl: Pass full props to the input element. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74956\">74956<\/a>)<\/li>\n\n\n\n<li>ToggleControl: Prevent console warning for <code>__nextHasNoMarginBottom<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75296\">75296<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"collaboration\" class=\"wp-block-heading\">Collaboration<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add cap check for single <span tabindex='0' class='glossary-item-container'>taxonomy<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Taxonomy<\/span> <span class='glossary-item-description'>A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. <a href=\"https:\/\/codex.wordpress.org\/Taxonomies#Default_Taxonomies\">https:\/\/codex.wordpress.org\/Taxonomies#Default_Taxonomies<\/a>.<\/span><\/span><\/span> term entities. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75708\">75708<\/a>)<\/li>\n\n\n\n<li>Add minimum cap check to sync endpoint. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75681\">75681<\/a>)<\/li>\n\n\n\n<li>Always target autosave revision. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75105\">75105<\/a>)<\/li>\n\n\n\n<li>Bugfix for CRDT user selection and add tests. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75075\">75075<\/a>)<\/li>\n\n\n\n<li>Bugfix: Set the removed users to empty for awareness. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75337\">75337<\/a>)<\/li>\n\n\n\n<li>Fix comment syncing on site editor. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75746\">75746<\/a>)<\/li>\n\n\n\n<li>Fix entity save call \/ initial persistence. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75841\">75841<\/a>)<\/li>\n\n\n\n<li>Pick user fields instead of spreading the entire object. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75528\">75528<\/a>)<\/li>\n\n\n\n<li>Remove disconnected users from Awareness. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75253\">75253<\/a>)<\/li>\n\n\n\n<li>Remove IS_GUTENBERG_PLUGIN checks for collaborative editing. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75699\">75699<\/a>)<\/li>\n\n\n\n<li>Update diff package. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75644\">75644<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"dataviews\" class=\"wp-block-heading\">DataViews<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add <code>title<\/code> attribute in <code>grid<\/code> item title field. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75085\">75085<\/a>)<\/li>\n\n\n\n<li>DataForm Regular layout: Label always uppercase. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75292\">75292<\/a>)<\/li>\n\n\n\n<li>DataViews Filters: Fix styling of long values in filter dropdown. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75369\">75369<\/a>)<\/li>\n\n\n\n<li>Fix fields async validation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74948\">74948<\/a>)<\/li>\n\n\n\n<li>Fix title truncation in <code>list<\/code> layout. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75063\">75063<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"icons\" class=\"wp-block-heading\">Icons<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fix incorrect attributes for SVG. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75273\">75273<\/a>)<\/li>\n\n\n\n<li>Make full height icon label title case. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75524\">75524<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"site-editor\" class=\"wp-block-heading\">Site Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prevent QuickEdit modal from being triggered in list layout via URL param. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75300\">75300<\/a>)<\/li>\n\n\n\n<li>Refactor activeFilters to activeViewOverrides with date sort for User tab. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75094\">75094<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"npm-packages\" class=\"wp-block-heading\">npm Packages<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Update wordpress\/vips in root package.json to use a relative path. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75758\">75758<\/a>)<\/li>\n\n\n\n<li>Vips and worker-threads packages: Remove private flag so that packages can be published to npm. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75752\">75752<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"accessibility\" class=\"wp-block-heading\">Accessibility<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RangeControl: Support forced-colors mode. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75165\">75165<\/a>)<\/li>\n\n\n\n<li>Resize <span tabindex='0' class='glossary-item-container'>meta<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Meta<\/span> <span class='glossary-item-description'>Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.<\/span><\/span><\/span> box pane without <code>ResizableBox<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/66735\">66735<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"performance\" class=\"wp-block-heading\">Performance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Improve sync performance metrics. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75029\">75029<\/a>)<\/li>\n\n\n\n<li>Notes: Don\u2019t trigger reflow for pinned sidebar. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75010\">75010<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-editor\" class=\"wp-block-heading\">Block Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Editor iframe: Memoize src blob URL to prevent unwanted revokes. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75619\">75619<\/a>)<\/li>\n\n\n\n<li>Optimize controlled inner blocks state churn. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75458\">75458<\/a>)<\/li>\n\n\n\n<li>useBlockSync: Stop reconstructing controlled inner blocks. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75562\">75562<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-library\" class=\"wp-block-heading\">Block Library<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Media &amp; Text: Fix RTLCSS control directives appearing in production CSS. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73205\">73205<\/a>)<\/li>\n\n\n\n<li>Post Terms: Avoid unbound queries when the post context isn\u2019t available. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75536\">75536<\/a>)<\/li>\n\n\n\n<li>Core Data: Create icons entity. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75773\">75773<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"experiments\" class=\"wp-block-heading\">Experiments<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add useBlocker to private APIs for enhanced routing control. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75687\">75687<\/a>)<\/li>\n\n\n\n<li>Playlist block. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/50664\">50664<\/a>)<\/li>\n\n\n\n<li>Real-time Collaboration: Fix broken unit tests for awareness. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75362\">75362<\/a>)<\/li>\n\n\n\n<li>SVG Icon registration API. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/72215\">72215<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"collaboration\" class=\"wp-block-heading\">Collaboration<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add collaborators presence UI. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75065\">75065<\/a>)<\/li>\n\n\n\n<li>Add hook for accessing awareness data. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75009\">75009<\/a>)<\/li>\n\n\n\n<li>Add sync connection status handling. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75066\">75066<\/a>)<\/li>\n\n\n\n<li>Add tests for the awareness code in core-data. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75074\">75074<\/a>)<\/li>\n\n\n\n<li>Add tests for the awareness code in sync. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75077\">75077<\/a>)<\/li>\n\n\n\n<li>Compact on request with encodeStateAsUpdate. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75682\">75682<\/a>)<\/li>\n\n\n\n<li>Fix auto draft bug for Y.text titles. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75560\">75560<\/a>)<\/li>\n\n\n\n<li>Import Yjs correctly in core-data. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75500\">75500<\/a>)<\/li>\n\n\n\n<li>Sync post content and undefined <code>blocks<\/code> value. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75437\">75437<\/a>)<\/li>\n\n\n\n<li>Update the y-protocols version and remove the unnecessary diff types. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75657\">75657<\/a>)<\/li>\n\n\n\n<li>Use Y.text for title, content and excerpt. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75448\">75448<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"documentation\" class=\"wp-block-heading\">Documentation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Clarifies cherry-picking permissions and improves <span tabindex='0' class='glossary-item-container'>minor release<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Minor Release<\/span> <span class='glossary-item-description'>A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality.<\/span><\/span><\/span> workflow documentation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75034\">75034<\/a>)<\/li>\n\n\n\n<li>wordpress\/theme: Add missing CHANGELOG entries. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75281\">75281<\/a>)<\/li>\n\n\n\n<li>Components: Add usage guidance for agents and Storybook. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74815\">74815<\/a>)<\/li>\n\n\n\n<li>Core Block Reference: Fix object empty inner key processing. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75391\">75391<\/a>)<\/li>\n\n\n\n<li>Design System: Add guidelines for save and submit <span tabindex='0' class='glossary-item-container'>UX<span class='glossary-item-hidden-content'><span class='glossary-item-header'>UX<\/span> <span class='glossary-item-description'>User experience<\/span><\/span><\/span>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74811\">74811<\/a>)<\/li>\n\n\n\n<li>Docs: Add missing global documentation in block library. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75004\">75004<\/a>)<\/li>\n\n\n\n<li>Docs: Remove private <span tabindex='0' class='glossary-item-container'>GitHub<span class='glossary-item-hidden-content'><span class='glossary-item-header'>GitHub<\/span> <span class='glossary-item-description'>GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the \u2018pull request\u2019 where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. <a href=\"https:\/\/github.com\/\">https:\/\/github.com\/<\/a><\/span><\/span><\/span> team links in repository management. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75255\">75255<\/a>)<\/li>\n\n\n\n<li>Docs: Rename Interactivity API\u2019s \u2018API Reference\u2019 to \u2018Directives and Store\u2019. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74974\">74974<\/a>)<\/li>\n\n\n\n<li>Docs: Simplifying Gutenberg versions table. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75209\">75209<\/a>)<\/li>\n\n\n\n<li>Fix awareness timeout documentation unit. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75284\">75284<\/a>)<\/li>\n\n\n\n<li>Fix: Navigation Overlay Close Block: Add missing since <span tabindex='0' class='glossary-item-container'>tag<span class='glossary-item-hidden-content'><span class='glossary-item-header'>tag<\/span> <span class='glossary-item-description'>A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)<\/span><\/span><\/span> <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/75247\">#75247<\/a>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75250\">75250<\/a>)<\/li>\n\n\n\n<li>Real-time collaboration: Update \u2018sync.providers\u2019 filter inline comments. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75248\">75248<\/a>)<\/li>\n\n\n\n<li>Removed Unused Global Documentation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75631\">75631<\/a>)<\/li>\n\n\n\n<li>Scripts: Fix contributor guide link in README. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75161\">75161<\/a>)<\/li>\n\n\n\n<li>Storybook: Add Stories for LetterSpacingControl component. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73480\">73480<\/a>)<\/li>\n\n\n\n<li>Storybook: Fix missing props on certain components. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75316\">75316<\/a>)<\/li>\n\n\n\n<li>Storybook: Preserve export order for stories. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75295\">75295<\/a>)<\/li>\n\n\n\n<li>Tabs: Add <code>@since 7.0.0<\/code> annotations. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75521\">75521<\/a>)<\/li>\n\n\n\n<li>Theme: Fix gap token migration guide in changelog. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75492\">75492<\/a>)<\/li>\n\n\n\n<li>Theme: Render default density selector last in design tokens CSS. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75474\">75474<\/a>)<\/li>\n\n\n\n<li>Updated Typo in template-activate file. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75333\">75333<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"code-quality\" class=\"wp-block-heading\">Code Quality<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cleanup: Remove unnecessary array check in <code>WP_Theme_JSON_Gutenberg<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75515\">75515<\/a>)<\/li>\n\n\n\n<li>Code Modernization: Replace isset() checks with null coalescing operator. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75425\">75425<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75419\">75419<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75487\">75487<\/a>)<\/li>\n\n\n\n<li>Core Data: Improve blocks cache in useEntityBlockEditor. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75400\">75400<\/a>)<\/li>\n\n\n\n<li>Docs: Add missing global documentation in rtl.php and meta-box.php. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75082\">75082<\/a>)<\/li>\n\n\n\n<li>Generate manifest PHP file based on JSON file. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75684\">75684<\/a>)<\/li>\n\n\n\n<li>Move experimental PR out of <span tabindex='0' class='glossary-item-container'>backport<span class='glossary-item-hidden-content'><span class='glossary-item-header'>backport<\/span> <span class='glossary-item-description'>A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch.<\/span><\/span><\/span> log. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75465\">75465<\/a>)<\/li>\n\n\n\n<li>Navigation overlay: Added basic end-to-end tests. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75581\">75581<\/a>)<\/li>\n\n\n\n<li>Private APIs: Remove duplicate <code>@wordpress\/ui<\/code> entry. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75051\">75051<\/a>)<\/li>\n\n\n\n<li>Remove backport changelog committed by mistake. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75441\">75441<\/a>)<\/li>\n\n\n\n<li>Remove the <span tabindex='0' class='glossary-item-container'>React<span class='glossary-item-hidden-content'><span class='glossary-item-header'>React<\/span> <span class='glossary-item-description'>React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. <a href=\"https:\/\/reactjs.org\/\">https:\/\/reactjs.org\/<\/a>.<\/span><\/span><\/span> Native test status badges. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74674\">74674<\/a>)<\/li>\n\n\n\n<li>Restrict base-ui imports outside of UI component packages. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75143\">75143<\/a>)<\/li>\n\n\n\n<li>Select: Remove unnecessary <code>jest.setTimeout<\/code> from test. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75444\">75444<\/a>)<\/li>\n\n\n\n<li>Types: Consistently use the React namespace. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75499\">75499<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-library\" class=\"wp-block-heading\">Block Library<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Deprecate \u2018Post author\u2019 block. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/55352\">55352<\/a>)<\/li>\n\n\n\n<li>Navigation: Consolidate SVG rendering functions to a shared helper. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74853\">74853<\/a>)<\/li>\n\n\n\n<li>Optimize tabsList computation with useRef for comparison. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75219\">75219<\/a>)<\/li>\n\n\n\n<li>Playlist block: Inherit more CSS. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75256\">75256<\/a>)<\/li>\n\n\n\n<li>Remove temp nav files. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75061\">75061<\/a>)<\/li>\n\n\n\n<li>Remove unnecessary block deprecation from experimental tabs. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75208\">75208<\/a>)<\/li>\n\n\n\n<li>Storybook: Always load design tokens in Design System section. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74899\">74899<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"block-editor\" class=\"wp-block-heading\">Block Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add <span tabindex='0' class='glossary-item-container'>l10n<span class='glossary-item-hidden-content'><span class='glossary-item-header'>L10n<\/span> <span class='glossary-item-description'>Localization, or the act of translating code into one's own language. Also see <a href=\"#i18n\">internationalization<\/a>. Often written with an uppercase L so it is not confused with the capital letter i or the numeral 1. WordPress has a capable and dynamic group of polyglots who take WordPress to more than 70 different locales.<\/span><\/span><\/span> context to \u2018Manage allowed blocks\u2019 string. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75239\">75239<\/a>)<\/li>\n\n\n\n<li>PHP-Only Block Registration: Remove client-side schema validation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75623\">75623<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Add comments for expandRevision functionality. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75573\">75573<\/a>)<\/li>\n\n\n\n<li>Pattern Editing: Move List View selectors to private-selectors. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75414\">75414<\/a>)<\/li>\n\n\n\n<li>The insertBlock(s) actions should receive the same arguments. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75197\">75197<\/a>)<\/li>\n\n\n\n<li>useBlockVisibility: Consolidate and remove unnecessary useMemo calls. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75120\">75120<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75125\">75125<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"components\" class=\"wp-block-heading\">Components<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefix usages of JSX namespaces with React.JSX. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75508\">75508<\/a>)<\/li>\n\n\n\n<li>Story types: Fix StoryFns used as React components. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75472\">75472<\/a>)<\/li>\n\n\n\n<li>UI: Remove Box component abstraction. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74986\">74986<\/a>)<\/li>\n\n\n\n<li>Update Ariakit packages. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75620\">75620<\/a>)<\/li>\n\n\n\n<li>Update dependencies and types for React 19 compatibility. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75324\">75324<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75340\">75340<\/a>, <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75567\">75567<\/a>)<\/li>\n\n\n\n<li>useRef: Always supply initial value. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75513\">75513<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"post-editor\" class=\"wp-block-heading\">Post Editor<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Notes: Use preferences store when applicable. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75008\">75008<\/a>)<\/li>\n\n\n\n<li>Real-time Collaboration: Change users to collaborators. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75237\">75237<\/a>)<\/li>\n\n\n\n<li>Real-time collaboration: Fix type imports. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75232\">75232<\/a>)<\/li>\n\n\n\n<li>Real-time collaboration: Make the collaborators presence button translatable. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75252\">75252<\/a>)<\/li>\n\n\n\n<li>Remove deprecated __nextHasNoMarginBottom prop. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75139\">75139<\/a>)<\/li>\n\n\n\n<li>RichText: Move useFormatTypes to rich-text package. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75387\">75387<\/a>)<\/li>\n\n\n\n<li>useMergeRefs: Migrate to TypeScript. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75569\">75569<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"dataviews\" class=\"wp-block-heading\">DataViews<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DataForm: Style SummaryButton in panel layout with <code>is-disabled<\/code> classname. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75470\">75470<\/a>)<\/li>\n\n\n\n<li>Externalize theme stylesheet. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75182\">75182<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"collaboration\" class=\"wp-block-heading\">Collaboration<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Move AwarenessState to wordpress\/core-data. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75216\">75216<\/a>)<\/li>\n\n\n\n<li>Real-time collaboration: Update and unpin sync package dependencies. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75059\">75059<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"tools\" class=\"wp-block-heading\">Tools<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AGENTS.md: Add CLAUDE.md symlinks, architecture decisions, and common pitfalls. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75507\">75507<\/a>)<\/li>\n\n\n\n<li>Duotone: Add sgomes as owner. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75519\">75519<\/a>)<\/li>\n\n\n\n<li>Real-Time Collaboration: Add end-to-end tests for RTC. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75598\">75598<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"testing\" class=\"wp-block-heading\">Testing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add end-to-end test for loading settings in site editor preload spec. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75661\">75661<\/a>)<\/li>\n\n\n\n<li>Add end-to-end test for selection restoration after pattern navigation. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75575\">75575<\/a>)<\/li>\n\n\n\n<li>Add <span tabindex='0' class='glossary-item-container'>unit test<span class='glossary-item-hidden-content'><span class='glossary-item-header'>unit test<\/span> <span class='glossary-item-description'>Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see <a href=\"#regression\">regression<\/a>.<\/span><\/span><\/span> for gap in block style variations fix. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75038\">75038<\/a>)<\/li>\n\n\n\n<li>Navigation: Add \u2018expectedDeprecated\u2019 annotations. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75659\">75659<\/a>)<\/li>\n\n\n\n<li>Update Navigation block tests to use non-deprecated API. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75660\">75660<\/a>)<\/li>\n\n\n\n<li>Update navigation block tests to use gutenberg version of block_core_navigation_block_tree_has_block_type. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75673\">75673<\/a>)<\/li>\n\n\n\n<li>Upgrade Playwright to v1.58. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75632\">75632<\/a>)<\/li>\n\n\n\n<li>Workflows: Ignore icons manifest for manual backports. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75245\">75245<\/a>)<\/li>\n<\/ul>\n\n\n\n<h4 id=\"build-tooling\" class=\"wp-block-heading\">Build Tooling<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add timestamp when publishing next versions. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75293\">75293<\/a>)<\/li>\n\n\n\n<li>Build: Add vendorScripts configuration to build packages from node_modules. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74343\">74343<\/a>)<\/li>\n\n\n\n<li>Fix dev build for fresh checkouts (or with build\/scripts\/block-library missing). (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75108\">75108<\/a>)<\/li>\n\n\n\n<li>GitHub actions: Exclude lib\/theme.json from backport changelog check. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75666\">75666<\/a>)<\/li>\n\n\n\n<li>Infrastructure: Add storybook to tsconfig project references. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74887\">74887<\/a>)<\/li>\n\n\n\n<li>Publishing packages: Fix next timestamp. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75301\">75301<\/a>)<\/li>\n<\/ul>\n\n\n\n<h2 id=\"first-time-contributors\" class=\"wp-block-heading\">First-time contributors<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following PRs were merged by first-time contributors:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/Abmarne\">@Abmarne<\/a>: Fix: Navigation Overlay Close Block: Add missing since tag <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/75247\">#75247<\/a>. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75250\">75250<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/anandrajaram21\">@anandrajaram21<\/a>: Storybook: Add Stories for LetterSpacingControl component. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73480\">73480<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/czarflix\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>czarflix<\/a>: DataForm: Mark fields as required or optional automatically. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74430\">74430<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/davidabowman\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>davidabowman<\/a>: [Real-time collaboration] Refine collaborator overlay with Avatar component integration. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75595\">75595<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/gmjuhasz\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>gmjuhasz<\/a>: Media &amp; Text: Fix RTLCSS control directives appearing in production CSS. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/73205\">73205<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/lsarsfield\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>lsarsfield<\/a>: wp-env: Fix MySQL startup race condition causing database connection errors. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75046\">75046<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/Marianne380\">@Marianne380<\/a>: Navigation Submenu: Restore <code>openSubmenusOnClick<\/code> to <code>usesContext<\/code> for backward compatibility. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/75435\">75435<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/swoyamjeetcodes\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>Swoyamjeetcodes<\/a>: Add getDimensionsClassesAndStyles function and related tests. (<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74524\">74524<\/a>)<\/li>\n<\/ul>\n\n\n\n<h2 id=\"contributors\" class=\"wp-block-heading\">Contributors<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following contributors merged PRs in this release:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/profiles.wordpress.org\/aaronrobertshaw\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>aaronrobertshaw<\/a> <a href=\"https:\/\/github.com\/Abmarne\">@Abmarne<\/a> <a href=\"https:\/\/profiles.wordpress.org\/adamsilverstein\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>adamsilverstein<\/a> <a href=\"https:\/\/profiles.wordpress.org\/aduth\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>aduth<\/a> <a href=\"https:\/\/profiles.wordpress.org\/alecgeatches\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>alecgeatches<\/a> <a href=\"https:\/\/profiles.wordpress.org\/amitraj2203\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>amitraj2203<\/a> <a href=\"https:\/\/github.com\/anandrajaram21\">@anandrajaram21<\/a> <a href=\"https:\/\/profiles.wordpress.org\/andrewserong\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>andrewserong<\/a> <a href=\"https:\/\/profiles.wordpress.org\/annezazu\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>annezazu<\/a> <a href=\"https:\/\/profiles.wordpress.org\/bernhard-reiter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>bernhard-reiter<\/a> <a href=\"https:\/\/profiles.wordpress.org\/czarate\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>czarate<\/a> <a href=\"https:\/\/profiles.wordpress.org\/czarflix\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>czarflix<\/a> <a href=\"https:\/\/profiles.wordpress.org\/darerodz\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>DAreRodz<\/a> <a href=\"https:\/\/profiles.wordpress.org\/davidabowman\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>davidabowman<\/a> <a href=\"https:\/\/profiles.wordpress.org\/ellatrix\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ellatrix<\/a> <a href=\"https:\/\/profiles.wordpress.org\/fabiankaegy\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>fabiankaegy<\/a> <a href=\"https:\/\/profiles.wordpress.org\/fcoveram\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>fcoveram<\/a> <a href=\"https:\/\/profiles.wordpress.org\/getdave\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>getdave<\/a> <a href=\"https:\/\/profiles.wordpress.org\/gigitux\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>gigitux<\/a> <a href=\"https:\/\/profiles.wordpress.org\/gmjuhasz\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>gmjuhasz<\/a> <a href=\"https:\/\/profiles.wordpress.org\/ingeniumed\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ingeniumed<\/a> <a href=\"https:\/\/profiles.wordpress.org\/isabel_brison\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>isabel_brison<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jameskoster\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jameskoster<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jeryj\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jeryj<\/a> <a href=\"https:\/\/profiles.wordpress.org\/joen\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>joen<\/a> <a href=\"https:\/\/profiles.wordpress.org\/johnbillion\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>johnbillion<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jorgefilipecosta\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jorgefilipecosta<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jsnajdr\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jsnajdr<\/a> <a href=\"https:\/\/profiles.wordpress.org\/juanfra\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>juanfra<\/a> <a href=\"https:\/\/profiles.wordpress.org\/juanmaguitar\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>juanmaguitar<\/a> <a href=\"https:\/\/profiles.wordpress.org\/lsarsfield\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>lsarsfield<\/a> <a href=\"https:\/\/profiles.wordpress.org\/luisherranz\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>luisherranz<\/a> <a href=\"https:\/\/profiles.wordpress.org\/madhudollu\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>madhudollu<\/a> <a href=\"https:\/\/profiles.wordpress.org\/mamaduka\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>Mamaduka<\/a> <a href=\"https:\/\/profiles.wordpress.org\/manhphuc\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>manhphuc<\/a> <a href=\"https:\/\/profiles.wordpress.org\/manzoorwanijk\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>manzoorwanijk<\/a> <a href=\"https:\/\/github.com\/Marianne380\">@Marianne380<\/a> <a href=\"https:\/\/profiles.wordpress.org\/maxschmeling\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>maxschmeling<\/a> <a href=\"https:\/\/profiles.wordpress.org\/mciampini\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mciampini<\/a> <a href=\"https:\/\/profiles.wordpress.org\/mcsf\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mcsf<\/a> <a href=\"https:\/\/profiles.wordpress.org\/mikachan\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mikachan<\/a> <a href=\"https:\/\/profiles.wordpress.org\/mirka\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mirka<\/a> <a href=\"https:\/\/profiles.wordpress.org\/mustafabharmal\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>Mustafabharmal<\/a> <a href=\"https:\/\/profiles.wordpress.org\/noruzzaman\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>noruzzaman<\/a> <a href=\"https:\/\/profiles.wordpress.org\/ntsekouras\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ntsekouras<\/a> <a href=\"https:\/\/profiles.wordpress.org\/oandregal\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>oandregal<\/a> <a href=\"https:\/\/profiles.wordpress.org\/onemaggie\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>onemaggie<\/a> <a href=\"https:\/\/profiles.wordpress.org\/pkevan\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>pkevan<\/a> <a href=\"https:\/\/profiles.wordpress.org\/poena\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>poena<\/a> <a href=\"https:\/\/profiles.wordpress.org\/ramonopoly\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ramonopoly<\/a> <a href=\"https:\/\/github.com\/saranshsinhaa\">@saranshsinhaa<\/a> <a href=\"https:\/\/profiles.wordpress.org\/scruffian\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>scruffian<\/a> <a href=\"https:\/\/profiles.wordpress.org\/senadir\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>senadir<\/a> <a href=\"https:\/\/profiles.wordpress.org\/sethrubenstein\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>sethrubenstein<\/a> <a href=\"https:\/\/profiles.wordpress.org\/sgomes\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>sgomes<\/a> <a href=\"https:\/\/profiles.wordpress.org\/shailu25\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>shailu25<\/a> <a href=\"https:\/\/profiles.wordpress.org\/shekharnwagh\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>shekharnwagh<\/a> <a href=\"https:\/\/profiles.wordpress.org\/shimotomoki\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>shimotomoki<\/a> <a href=\"https:\/\/profiles.wordpress.org\/simison\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>simison<\/a> <a href=\"https:\/\/profiles.wordpress.org\/sirlouen\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>SirLouen<\/a> <a href=\"https:\/\/profiles.wordpress.org\/soean\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>Soean<\/a> <a href=\"https:\/\/profiles.wordpress.org\/stokesman\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>stokesman<\/a> <a href=\"https:\/\/profiles.wordpress.org\/swoyamjeetcodes\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>Swoyamjeetcodes<\/a> <a href=\"https:\/\/profiles.wordpress.org\/talldan\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>talldan<\/a> <a href=\"https:\/\/profiles.wordpress.org\/timse201\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>timse201<\/a> <a href=\"https:\/\/profiles.wordpress.org\/tyxla\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tyxla<\/a> <a href=\"https:\/\/profiles.wordpress.org\/welcher\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>welcher<\/a>  <a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> <a href=\"https:\/\/profiles.wordpress.org\/wildworks\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>wildworks<\/a> <a href=\"https:\/\/profiles.wordpress.org\/xavilc\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>xavilc<\/a> <a href=\"https:\/\/profiles.wordpress.org\/yashjawale\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>yashjawale<\/a> <a href=\"https:\/\/profiles.wordpress.org\/youknowriad\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>youknowriad<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-default\">\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><em>Props to <a href=\"https:\/\/profiles.wordpress.org\/joen\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>joen<\/a> for the visuals, and to <a href=\"https:\/\/profiles.wordpress.org\/bph\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>bph<\/a> for reviewing the post.<\/em><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/block-editor\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>block-editor<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/core-editor\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>core-editor<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/gutenberg\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>gutenberg<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/gutenberg-new\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>gutenberg-new<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F02%2F25%2Fwhats-new-in-gutenberg-22-6-25-february%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>\u201cWhat\u2019s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc. https:\/\/wordpress.org\/gutenberg\/\u2026\u201d posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg [&hellip;]<\/p>\n","protected":false},"author":425435,"featured_media":121636,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AACuAejFzcIbmQOLotmQELLMvK0K6MXNwhs8ssy8rQroxc3CGwGyzLytCujFzcIbJ\/LMvK0KAKjFzcIbssy8rQqoxc3CG7LMvK0KqMXNwhuyzLytCqjFzcIbssy8rQqoxc3CG\/LMvK0KAKjFzcIb8sy8rQoAqMXNwhuyzLytCqjFzcIbssy8rQqoxc3CG7LMvK0KqMXNwhuyzLytCqjFzcIb8sy8rQoAqMXNwhuyzLytCqAEGgELVDaYAQEBCABIAghKjg4BAQgCQkgAkgEBAQgCQkgAkAcBAQgCQkgAhAwBAQgCQkgAmAaIAQEBCAJCSACWAQEBCABIADABAQgCQkgAshEBAQgCQkgAJAEBCABIADABAQgCQkgAthUBAQgCQkgANAEBCABIADABAQgCQkgAphIBAQgCQkgAhgEBAQgASAAwAQEIAkJIAJoQAQEIAkJIAD4BAQgASAAwAQEIAkJIAKIcAQEIAjh6SACmATABAQgCQkgAhhcBAQgCQkgAgAEBAQgASA4CAQEIAkoAuhABAQgCSgCkCQEBCAJKAIgFAQEIAkoAkAgBAQgCSsYoiDEBAQgCQkgA8MIBmMQBAQIIAkYACAKqAQLqAQKuAQQA5L0BBAIBBYC\/AQTErAEEAgEFnqwBBMACzpMBBAIBBa6WAQTcggEEAgEFtoIBBPhwBAIBBZJxBNjwAaqAAgQDCAwDAQgCMgIaBQACBgKULaAgtCS2IZQfoCEe9NgDApawAqAgtCS2IZQfwLYDrAFQkA5ClAFCkgdChgxClMYB\/AH2vAFCksAB\/L4BMkK0EUK+rAHarAEyQrgVQp6XAeqWATJCqBJCuIMB8oIBMkKcEEKMcs5xMkKkHEKYAkKIF0KCAUISQrwQQqYJQooFQpIIQoQJQvLnAaIQAwDiDqj+AQYCBAIFAAISCjQeBgiOrwIEAwIEAtKqBAMF1AiWCAMF+AeQCEGgK4bAAUISpkSgILQktiGUH8a2AQYCBAIFAAISCjQeBgiULaAgtCS2IZQf3oYBoCC0JLYhlB\/ehgGgILQktiGUH4cGKAAhAScCKAYnACgNIQAoACcABAAHACEAKAEnASgAJwChAAQAhwAhACgBJwEEACgAJwCHACEAKAEnAQQAKAAnAIcAIQAoAScBBAAoACcAhwAhACgBJwEEACgAJwCBAAAAhwAhACgBJwEEACgAJwCHACEAKAAhACcAIQAAACEAJwCHACEAKAEnAQQAKAAnAIcAIQAoAScBBAAoACcAhwAhACgAIQAnACEAAAAhACcAhwAhACgBJwEEACgAJwCHACEAKAEnAQQAKAAnAIcAIQAoACEAJwAhAAAAIQAnAIcAIQAoAScBBAAoACcAhwAhACgBJwEEACgAJwCHACEAKAAhACcAIQAAACEAJwCHACEAKAEnAQQAKAAnAIcAIQAoAScBBAAoACcAhwAhACgAIQAnACEAAAAhACcAhwAhACgBJwEEACgAJwCHACEAKAEnAQQAgQAoACcAgQAAAIcAIQAoAScBBAAoACcAhwAhACgBJwEEACgAJwCHACEAKAEnACgBJwAHACEAKAEnAQQAJwCHACEAKAEnAQQAJwCHACEAKAEnAQQAJwCHACEAKAEnAQQAJwCHACEAKAEnAQQAJwCHACEAKAEnAQQAKAAnAIEAAADHACgAJwEhAaEBIQEAAKECqACnAKgAAQCBAMEAQQAAAKEAqAAoACcAKAAhASgAIQAoAKgBAAChAKgAKAAnACgAIQEoACEAKACoAYEARAAAAKEAqAAoACcAKAAhASgAIQAoAKgBAAChAKgAKAAnACgAIQEoACEAKACoAQAAoQCoACgAJwAoACEBKAAhACgAqAEAAAQAhB6BAIQAqAHEBKgAIQOoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAEoAKgBxA2oAMQEoQGoAMQEoQGoAcQEqKykAZihAXN0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZWRvY3VtZW50Y29udGVudGRvY3VtZW50ZXhjZXJwdGRvY3VtZW50YXV0aG9yZG9jdW1lbnRmZWF0dXJlZF9tZWRpYWRvY3VtZW50Y29tbWVudF9zdGF0dXNkb2N1bWVudHBpbmdfc3RhdHVzZG9jdW1lbnRzdGlja3lkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRmb3JtYXRkb2N1bWVudG1ldGFhZHZhbmNlZF9zZW9fZGVzY3JpcHRpb25qZXRwYWNrX3Nlb19odG1sX3RpdGxlamV0cGFja19zZW9fbm9pbmRleGpldHBhY2tfcG9zdF93YXNfZXZlcl9wdWJsaXNoZWRfamV0cGFja19uZXdzbGV0dGVyX2FjY2Vzc19qZXRwYWNrX2RvbnRfZW1haWxfcG9zdF90b19zdWJzX2pldHBhY2tfbmV3c2xldHRlcl90aWVyX2lkX2pldHBhY2tfbWVtYmVyc2hpcHNfY29udGFpbnNfcGF5d2FsbGVkX2NvbnRlbnRfamV0cGFja19tZW1iZXJzaGlwc19jb250YWluc19wYWlkX2NvbnRlbnRmb290bm90ZXNqZXRwYWNrX3B1YmxpY2l6ZV9tZXNzYWdlamV0cGFja19wdWJsaWNpemVfZmVhdHVyZV9lbmFibGVkamV0cGFja19zb2NpYWxfcG9zdF9hbHJlYWR5X3NoYXJlZGpldHBhY2tfc29jaWFsX29wdGlvbnNkb2N1bWVudGNhdGVnb3JpZXNkb2N1bWVudHRhZ3Nkb2N1bWVudGJsb2Nrc1doYXTigJlzIG5ldyBpbiBHdXRlbmJlcmcgMjIuNj8gKDI1IEZlYnJ1YXJ5KWNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc+KAnFdoYXTigJlzIG5ldyBpbiBHdXRlbmJlcmfigKbigJ0gcG9zdHMgKGxhYmVsZWQgd2l0aCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS90YWcvZ3V0ZW5iZXJnLW5ldy8iPiNndXRlbmJlcmctbmV3IHRhZzwvYT4pIGFyZSBwb3N0ZWQgZm9sbG93aW5nIGV2ZXJ5IEd1dGVuYmVyZyByZWxlYXNlIG9uIGEgYml3ZWVrbHkgYmFzaXMsIHNob3djYXNpbmcgbmV3IGZlYXR1cmVzIGluY2x1ZGVkIGluIGVhY2ggcmVsZWFzZS4gQXMgYSByZW1pbmRlciwgPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS8yMDIwLzA1LzIwL3dheXMtdG8ta2VlcC11cC13aXRoLWZ1bGwtc2l0ZS1lZGl0aW5nLWZzZS8iPmhlcmXigJlzIGFuIG92ZXJ2aWV3PC9hPiBvZiBkaWZmZXJlbnQgd2F5cyB0byBrZWVwIHVwIHdpdGggR3V0ZW5iZXJnIGFuZCB0aGUgRWRpdG9yLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudOKAlCBJTlNFUlQgUkVMRUFTRSBCQU5ORVIgUEFUVEVSTiDigJRkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRHdXRlbmJlcmcgMjIuNiBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgPGEgaHJlZj0iaHR0cHM6Ly93b3JkcHJlc3Mub3JnL3BsdWdpbnMvZ3V0ZW5iZXJnLyI+YXZhaWxhYmxlIGZvciBkb3dubG9hZDwvYT4hIFlvdSBjYW4gYWxzbyB0cnkmbmJzcDsgaXQgb3V0IHVzaW5nIFdvcmRQcmVzcyBQbGF5Z3JvdW5kIGJ5IGNsaWNraW5nIGhlcmUuIE5vIFdvcmRQcmVzcyBpbnN0YWxsIHJlcXVpcmVkIWRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoaXMgcmVsZWFzZSBzdGFiaWxpemVzIHRoZSBOYXZpZ2F0aW9uIE92ZXJsYXkgYW5kIGJyaW5ncyB2aXN1YWwgZGlmZmluZyB0byBpbi1lZGl0b3IgcmV2aXNpb25zLiBUaGUgR2FsbGVyeSBibG9jayBub3cgc3VwcG9ydHMgbGlnaHRib3ggbmF2aWdhdGlvbiBiZXR3ZWVuIGltYWdlcy4gT24gdGhlIGV4cGVyaW1lbnRhbCBzaWRlLCByZWFsLXRpbWUgY29sbGFib3JhdGlvbiBhZGRzIGN1cnNvciBhd2FyZW5lc3MgYW5kIGEgZ2xvYmFsIHNldHRpbmdzIHRvZ2dsZSwgYSBicmFuZC1uZXcgSWNvbiBibG9jayBtYWtlcyBpdHMgZGVidXQsIGFuZCBjbGllbnQtc2lkZSBtZWRpYSBwcm9jZXNzaW5nIGdhaW5zIHN1cHBvcnQgZm9yIG1vZGVybiBpbWFnZSBmb3JtYXRzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEEgdG90YWwgb2YgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbHM\/cT1pcyUzQXByK21pbGVzdG9uZSUzQSUyMkd1dGVuYmVyZysyMi42JTIyK2lzJTNBY2xvc2VkIj4zNjIgUFJzPC9hPiB3ZXJlIG1lcmdlZCBpbiBHdXRlbmJlcmcgMjIuNiwgd2l0aCBYWCBmaXJzdC10aW1lIGNvbnRyaWJ1dG9ycyFkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbi1FZGl0b3IgUmV2aXNpb25zOiBWaXN1YWwgRGlmZmluZ2xldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCcm93c2luZyBwb3N0IHJldmlzaW9ucyBpbiB0aGUgZWRpdG9yIG5vdyBzaG93cyBhIGNvbG9yLWNvZGVkIHZpc3VhbCBkaWZmIGJldHdlZW4gdGhlIHNlbGVjdGVkIHJldmlzaW9uIGFuZCBpdHMgcHJlZGVjZXNzb3IuIEFkZGVkIHRleHQgYXBwZWFycyBpbiBncmVlbiB3aXRoIGFuIHVuZGVybGluZSwgcmVtb3ZlZCB0ZXh0IGluIHJlZCB3aXRoIGEgc3RyaWtldGhyb3VnaCwgYW5kIGZvcm1hdHRpbmcgb3IgYXR0cmlidXRlIGNoYW5nZXMgYXJlIGhpZ2hsaWdodGVkIHdpdGggYSB5ZWxsb3cgb3V0bGluZS4gRW50aXJlIGFkZGVkIG9yIHJlbW92ZWQgYmxvY2tzIGFyZSBvdXRsaW5lZCBpbiBncmVlbiBvciByZWQsIHJlc3BlY3RpdmVseS4gVGhlIGRpZmYgY2FuIGJlIHRvZ2dsZWQgb2ZmIHRvIHZpZXcgY2xlYW4gY29udGVudC4gQ29sb3JzIGJsZW5kIHdpdGggY3VycmVudENvbG9yIHNvIHRoZXkgbG9vayBhcHByb3ByaWF0ZSBhY3Jvc3MgYWxsIHRoZW1lcy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwNDkiPjc1MDQ5PC9hPilkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJY29uIEJsb2NrbGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEEgYnJhbmQtbmV3IEljb24gYmxvY2sgbGV0cyB5b3UgaW5zZXJ0IFNWRyBpY29ucyBmcm9tIGEgY3VyYXRlZCBsaWJyYXJ5IGRpcmVjdGx5IGludG8geW91ciBjb250ZW50LiBUaGUgYmxvY2sgaXMgcG93ZXJlZCBieSBhIG5ldyBzZXJ2ZXItc2lkZSBTVkcgSWNvbiBSZWdpc3RyYXRpb24gQVBJLCBzbyB1cGRhdGVzIHRvIHRoZSBpY29uIHJlZ2lzdHJ5IHByb3BhZ2F0ZSB0byBhbGwgdXNlcyB3aXRob3V0IGJsb2NrIHZhbGlkYXRpb24gZXJyb3JzLiBBIFJFU1QgZW5kcG9pbnQgYXQgL3dwL3YyL2ljb25zIHN1cHBvcnRzIHNlYXJjaGluZyBhbmQgZmlsdGVyaW5nLiBUaGUgaW5pdGlhbCBzZXQgZHJhd3MgZnJvbSB0aGUgQHdvcmRwcmVzcy9pY29ucyBwYWNrYWdlLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSBpcyBkZXNpZ25lZCBmb3IgZnV0dXJlIGV4dGVuc2liaWxpdHkgaW5jbHVkaW5nIHRoaXJkLXBhcnR5IGljb24gcmVnaXN0cmF0aW9uLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83MTIyNyI+NzEyMjc8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcyMjE1Ij43MjIxNTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU1NzYiPjc1NTc2PC9hPilkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnROYXZpZ2F0aW9uIE92ZXJsYXlsZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50TmF2aWdhdGlvbiBibG9ja3Mgbm93IGhhdmUgY3VzdG9taXphYmxlIG92ZXJsYXlzLiBBIHByb21pbmVudCDigJxDcmVhdGUgb3ZlcmxheeKAnSBidXR0b24gZ3VpZGVzIHlvdSB0aHJvdWdoIHRoZSBzZXR1cCwgcHJvdmlkaW5nIGEgc2VsZWN0aW9uIG9mIHBhdHRlcm5zIHRvIGFjaGlldmUgYSB2YXJpZXR5IG9mIGRlc2lnbnMgZm9yIHlvdXIgb3ZlcmxheS4gVGhlIE5hdmlnYXRpb24gT3ZlcmxheSBmZWF0dXJlIGlzIG5vIGxvbmdlciBleHBlcmltZW50YWwsIGFuZCBpcyBhdmFpbGFibGUgdG8gYWxsIHVzZXJzIG9mIHRoZSBwbHVnaW4uICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc0OTY4Ij43NDk2ODwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzQ5NzEiPjc0OTcxPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTU2NCI+NzU1NjQ8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mjc2Ij43NTI3NjwvYT4pZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50R2FsbGVyeSBMaWdodGJveCBOYXZpZ2F0aW9ubGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSBHYWxsZXJ5IGJsb2NrJ3MgIkVubGFyZ2Ugb24gY2xpY2siIGxpZ2h0Ym94IG5vdyBzdXBwb3J0cyBuYXZpZ2F0aW9uIGJldHdlZW4gaW1hZ2VzLiBXaGVuIHlvdSBjbGljayBhbiBpbWFnZSBpbiBhIGdhbGxlcnksIGJhY2sgYW5kIG5leHQgYnV0dG9ucyBsZXQgeW91IGJyb3dzZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBnYWxsZXJ5IHdpdGhvdXQgY2xvc2luZyB0aGUgbGlnaHRib3guIEtleWJvYXJkIG5hdmlnYXRpb24gd2l0aCBhcnJvdyBrZXlzIGFuZCBzY3JlZW4gcmVhZGVyIGFubm91bmNlbWVudHMgKCJFbmxhcmdlZCBpbWFnZSBYIG9mIFkiKSBhcmUgZnVsbHkgc3VwcG9ydGVkLiBJbWFnZXMgdGhhdCBkb24ndCBoYXZlIGxpZ2h0Ym94IGVuYWJsZWQgKGUuZy4sIHRob3NlIGxpbmtlZCB0byBhIGZpbGUgVVJMKSBhcmUgc2tpcHBlZCBkdXJpbmcgbmF2aWdhdGlvbi4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNjI5MDYiPjYyOTA2PC9hPilkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRSZWFsLVRpbWUgQ29sbGFib3JhdGlvbmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRSZWFsLXRpbWUgY29sbGFib3JhdGlvbiBzZWVzIGEgbWFqb3Igcm91bmQgb2YgZGV2ZWxvcG1lbnQgaW4gdGhpcyByZWxlYXNlLiBBIG5ldyB0b2dnbGUgdW5kZXIgU2V0dGluZ3MgJmd0OyBXcml0aW5nIGxldHMgeW91IGVuYWJsZSB0aGUgZmVhdHVyZSwgYW5kIG9uY2UgYWN0aXZlLCBjb2xsYWJvcmF0b3JzIGVkaXRpbmcgdGhlIHNhbWUgcG9zdCBzZWUgZWFjaCBvdGhlcidzIGN1cnNvciBwb3NpdGlvbnMgYW5kIGJsb2NrIHNlbGVjdGlvbnMgaW4gcmVhbCB0aW1lLiBBIHByZXNlbmNlIGluZGljYXRvciBpbiB0aGUgZWRpdG9yIGhlYWRlciBzaG93cyB3aG8ncyBjdXJyZW50bHkgZWRpdGluZy4gVW5kZXIgdGhlIGhvb2QsIHRpdGxlLCBjb250ZW50LCBhbmQgZXhjZXJwdCBub3cgc3luYyB2aWEgWS50ZXh0IGZvciBtb3JlIGdyYW51bGFyIGNvbmZsaWN0IHJlc29sdXRpb24sIGFuZCBudW1lcm91cyByZWxpYWJpbGl0eSBmaXhlcyBhZGRyZXNzIGRpc2Nvbm5lY3Rpb24gaGFuZGxpbmcsIHJldmlzaW9uIHJlc3RvcmVzLCBhbmQgcGVyZm9ybWFuY2UgbWV0cmljcy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUyODYiPjc1Mjg2PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTM5OCI+NzUzOTg8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1MDY1Ij43NTA2NTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU0NDgiPjc1NDQ4PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTU5NSI+NzU1OTU8L2E+KWRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudENsaWVudC1TaWRlIE1lZGlhIFByb2Nlc3NpbmdsZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q2xpZW50LXNpZGUgbWVkaWEgcHJvY2Vzc2luZyBub3cgc3VwcG9ydHMgQVZJRiwgV2ViUCwgYW5kIE1vekpQRUcgb3V0cHV0IGVuY29kaW5nLiBVcGxvYWRlZCBKUEVHcyBnZW5lcmF0ZWQgc3ViLXNpemVzIHdpbGwgYXV0b21hdGljYWxseSBiZW5lZml0IGZyb20gaW1wcm92ZWQgb3B0aW1pemF0aW9uIHJlc3VsdGluZyBpbiB+MTDigJMxNSUgc21hbGxlciBmaWxlIHNpemVzIHdpdGggbm8gcXVhbGl0eSBsb3NzLiBJbWFnZXMgY2FuIGFsc28gYmUgY29udmVydGVkIHRvIEFWSUYgb3IgV2ViUCBiYXNlZCBvbiB0aGUgc2l0ZSdzIGNvbmZpZ3VyZWQgb3V0cHV0IGZvcm1hdCB3aXRob3V0IHRoZSBuZWVkIGZvciBzZXJ2ZXIgc3VwcG9ydC4gVHJhbnNwYXJlbnQgUE5HcyBhcmUgaW50ZWxsaWdlbnRseSBza2lwcGVkIHdoZW4gdGhlIHRhcmdldCBmb3JtYXQgZG9lc24ndCBzdXBwb3J0IGFscGhhIGNoYW5uZWxzLiBGb3JtYXRzIHRoYXQgY2FuJ3QgYmUgcHJvY2Vzc2VkIGNsaWVudC1zaWRlIGFyZSBwYXNzZWQgdGhyb3VnaCBkaXJlY3RseSB0byB0aGUgc2VydmVyIHRvIHVzZSB0aGUgZXhpc3Rpbmcgc2VydmVyIHNpZGUgcHJvY2Vzc2luZy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwODEiPjc1MDgxPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NDkxMCI+NzQ5MTA8L2E+KWRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE90aGVyIE5vdGFibGUgSGlnaGxpZ2h0c2xldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+QmxvY2sgdmlzaWJpbGl0eSBlbmhhbmNlbWVudHM8L3N0cm9uZz46IExpc3QgVmlldyBub3cgc2hvd3Mgdmlld3BvcnQtYXdhcmUgaWNvbnMgd2l0aCB0b29sdGlwcyBpbmRpY2F0aW5nIHdoaWNoIHZpZXdwb3J0cyBhIGJsb2NrIGlzIGhpZGRlbiBvbiwgYW5kIGhpZGRlbiBibG9ja3MgZ2V0IGEgc2ltcGxpZmllZCB0b29sYmFyLiBUaGUga2V5Ym9hcmQgc2hvcnRjdXQgKENtZCtTaGlmdCtIIC8gQ3RybCtTaGlmdCtIKSB0byB0b2dnbGUgYmxvY2sgdmlzaWJpbGl0eSBvcHRpb25zIGlzIGZlYXR1cmVkIGluIHRoZSBibG9jayBjb250ZXh0IG1lbnUuICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1NDA0Ij43NTQwNDwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUzMzUiPjc1MzM1PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTMzNCI+NzUzMzQ8L2E+KWlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Ob3RlcyBrZXlib2FyZCBzaG9ydGN1dDwvc3Ryb25nPjogWW91IGNhbiBub3cgY3JlYXRlIGEgYmxvY2sgbm90ZSB3aXRoIENtZCtPcHRpb24rTSAoTWFjKSBvciBDdHJsK0FsdCtNIChXaW5kb3dzL0xpbnV4KSwgYW5kIHByZXNzIEVzY2FwZSB0byBjYW5jZWwuICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mjg3Ij43NTI4NzwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUyODgiPjc1Mjg4PC9hPilpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VmVyc2UgYmxvY2sgcmVuYW1lZCB0byBQb2V0cnk8L3N0cm9uZz46IFRoZSBWZXJzZSBibG9jayBpcyBub3cgY2FsbGVkIFBvZXRyeS4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzQxMjEiPjc0MTIxPC9hPilpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+UXVpY2tFZGl0IHN0YWJpbGl6ZWQ8L3N0cm9uZz46IFF1aWNrRWRpdCBpcyBub3cgc3RhYmxlIGFuZCBvcGVucyBhcyBhIG1vZGFsIGluIHRoZSBTaXRlIEVkaXRvciBwYWdlcyB2aWV3LiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTU2NSI+NzU1NjU8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1MTczIj43NTE3MzwvYT4paW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlRleHQtYWxpZ24gYmxvY2sgc3VwcG9ydCBtaWdyYXRpb25zPC9zdHJvbmc+OiBFaWdodCBibG9ja3MgKEF1dGhvciBCaW9ncmFwaHksIFBvc3QgQXV0aG9yIE5hbWUsIFBvc3QgQ29tbWVudHMgQ291bnQsIFBvc3QgQ29tbWVudHMgRm9ybSwgUG9zdCBDb21tZW50cyBMaW5rLCBQb3N0IFRlcm1zLCBQb3N0IFRpbWUgdG8gUmVhZCwgYW5kIFRlcm0gRGVzY3JpcHRpb24pIGhhdmUgYmVlbiBtaWdyYXRlZCB0byB0aGUgc3RhbmRhcmRpemVkIHRleHQtYWxpZ24gYmxvY2sgc3VwcG9ydC5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudOKAlCBDT1BZIENIQU5HRUxPRy5NRCDigJRkcm9wQ2FwaW5uZXJCbG9ja3Npc1ZhbGlkYXR0cmlidXRlc2lubmVyQmxvY2tzY2xpZW50SWRuYW1lY29udGVudGRyb3BDYXBhbHRjYXB0aW9uaWRsaW5rdXJsaHJlZnNpemVTbHVnbGlua0Rlc3RpbmF0aW9uYWx0Y2FwdGlvbmlkbGlua3VybGhyZWZzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbuKAlCBJTlNFUlQgVEFCTEUgT0YgQ09OVEVOVFMg4oCUYWx0Y2FwdGlvbmlkbGlua3VybGhyZWZzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmFsdGNhcHRpb25pZGxpbmt1cmxocmVmc2l6ZVNsdWdsaW5rRGVzdGluYXRpb25hbHRjYXB0aW9uaWRsaW5rdXJsaHJlZnNpemVTbHVnbGlua0Rlc3RpbmF0aW9uPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPuKAnFdoYXTigJlzIG5ldyBpbiBHdXRlbmJlcmfigKbigJ0gcG9zdHMgKGxhYmVsZWQgd2l0aCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS90YWcvZ3V0ZW5iZXJnLW5ldy8iPiNndXRlbmJlcmctbmV3IHRhZzwvYT4pIGFyZSBwb3N0ZWQgZm9sbG93aW5nIGV2ZXJ5IEd1dGVuYmVyZyByZWxlYXNlIG9uIGEgYml3ZWVrbHkgYmFzaXMsIHNob3djYXNpbmcgbmV3IGZlYXR1cmVzIGluY2x1ZGVkIGluIGVhY2ggcmVsZWFzZS4gQXMgYSByZW1pbmRlciwgPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS8yMDIwLzA1LzIwL3dheXMtdG8ta2VlcC11cC13aXRoLWZ1bGwtc2l0ZS1lZGl0aW5nLWZzZS8iPmhlcmXigJlzIGFuIG92ZXJ2aWV3PC9hPiBvZiBkaWZmZXJlbnQgd2F5cyB0byBrZWVwIHVwIHdpdGggR3V0ZW5iZXJnIGFuZCB0aGUgRWRpdG9yLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPuKAlCBJTlNFUlQgUkVMRUFTRSBCQU5ORVIgUEFUVEVSTiDigJQ8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5HdXRlbmJlcmcgMjIuNiBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgPGEgaHJlZj0iaHR0cHM6Ly93b3JkcHJlc3Mub3JnL3BsdWdpbnMvZ3V0ZW5iZXJnLyI+YXZhaWxhYmxlIGZvciBkb3dubG9hZDwvYT4hIFlvdSBjYW4gYWxzbyB0cnkmbmJzcDsgaXQgb3V0IHVzaW5nIFdvcmRQcmVzcyBQbGF5Z3JvdW5kIGJ5IGNsaWNraW5nIGhlcmUuIE5vIFdvcmRQcmVzcyBpbnN0YWxsIHJlcXVpcmVkITwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoaXMgcmVsZWFzZSBzdGFiaWxpemVzIHRoZSBOYXZpZ2F0aW9uIE92ZXJsYXkgYW5kIGJyaW5ncyB2aXN1YWwgZGlmZmluZyB0byBpbi1lZGl0b3IgcmV2aXNpb25zLiBUaGUgR2FsbGVyeSBibG9jayBub3cgc3VwcG9ydHMgbGlnaHRib3ggbmF2aWdhdGlvbiBiZXR3ZWVuIGltYWdlcy4gT24gdGhlIGV4cGVyaW1lbnRhbCBzaWRlLCByZWFsLXRpbWUgY29sbGFib3JhdGlvbiBhZGRzIGN1cnNvciBhd2FyZW5lc3MgYW5kIGEgZ2xvYmFsIHNldHRpbmdzIHRvZ2dsZSwgYSBicmFuZC1uZXcgSWNvbiBibG9jayBtYWtlcyBpdHMgZGVidXQsIGFuZCBjbGllbnQtc2lkZSBtZWRpYSBwcm9jZXNzaW5nIGdhaW5zIHN1cHBvcnQgZm9yIG1vZGVybiBpbWFnZSBmb3JtYXRzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkEgdG90YWwgb2YgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbHM\/cT1pcyUzQXByK21pbGVzdG9uZSUzQSUyMkd1dGVuYmVyZysyMi42JTIyK2lzJTNBY2xvc2VkIj4zNjIgUFJzPC9hPiB3ZXJlIG1lcmdlZCBpbiBHdXRlbmJlcmcgMjIuNiwgd2l0aCBYWCBmaXJzdC10aW1lIGNvbnRyaWJ1dG9ycyE8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD7igJQgSU5TRVJUIFRBQkxFIE9GIENPTlRFTlRTIOKAlDwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkluLUVkaXRvciBSZXZpc2lvbnM6IFZpc3VhbCBEaWZmaW5nPC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTIxNjI1LCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibWVkaWEifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDYyNC5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjI1Ii8+PC9hPjwvZmlndXJlPgo8IS0tIC93cDppbWFnZSAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Ccm93c2luZyBwb3N0IHJldmlzaW9ucyBpbiB0aGUgZWRpdG9yIG5vdyBzaG93cyBhIGNvbG9yLWNvZGVkIHZpc3VhbCBkaWZmIGJldHdlZW4gdGhlIHNlbGVjdGVkIHJldmlzaW9uIGFuZCBpdHMgcHJlZGVjZXNzb3IuIEFkZGVkIHRleHQgYXBwZWFycyBpbiBncmVlbiB3aXRoIGFuIHVuZGVybGluZSwgcmVtb3ZlZCB0ZXh0IGluIHJlZCB3aXRoIGEgc3RyaWtldGhyb3VnaCwgYW5kIGZvcm1hdHRpbmcgb3IgYXR0cmlidXRlIGNoYW5nZXMgYXJlIGhpZ2hsaWdodGVkIHdpdGggYSB5ZWxsb3cgb3V0bGluZS4gRW50aXJlIGFkZGVkIG9yIHJlbW92ZWQgYmxvY2tzIGFyZSBvdXRsaW5lZCBpbiBncmVlbiBvciByZWQsIHJlc3BlY3RpdmVseS4gVGhlIGRpZmYgY2FuIGJlIHRvZ2dsZWQgb2ZmIHRvIHZpZXcgY2xlYW4gY29udGVudC4gQ29sb3JzIGJsZW5kIHdpdGggY3VycmVudENvbG9yIHNvIHRoZXkgbG9vayBhcHByb3ByaWF0ZSBhY3Jvc3MgYWxsIHRoZW1lcy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwNDkiPjc1MDQ5PC9hPik8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5JY29uIEJsb2NrPC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTIxNjI2LCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibWVkaWEifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLXNjYWxlZC0xLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDMwMi0xLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xMjE2MjYiLz48L2E+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkEgYnJhbmQtbmV3IEljb24gYmxvY2sgbGV0cyB5b3UgaW5zZXJ0IFNWRyBpY29ucyBmcm9tIGEgY3VyYXRlZCBsaWJyYXJ5IGRpcmVjdGx5IGludG8geW91ciBjb250ZW50LiBUaGUgYmxvY2sgaXMgcG93ZXJlZCBieSBhIG5ldyBzZXJ2ZXItc2lkZSBTVkcgSWNvbiBSZWdpc3RyYXRpb24gQVBJLCBzbyB1cGRhdGVzIHRvIHRoZSBpY29uIHJlZ2lzdHJ5IHByb3BhZ2F0ZSB0byBhbGwgdXNlcyB3aXRob3V0IGJsb2NrIHZhbGlkYXRpb24gZXJyb3JzLiBBIFJFU1QgZW5kcG9pbnQgYXQgL3dwL3YyL2ljb25zIHN1cHBvcnRzIHNlYXJjaGluZyBhbmQgZmlsdGVyaW5nLiBUaGUgaW5pdGlhbCBzZXQgZHJhd3MgZnJvbSB0aGUgQHdvcmRwcmVzcy9pY29ucyBwYWNrYWdlLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSBpcyBkZXNpZ25lZCBmb3IgZnV0dXJlIGV4dGVuc2liaWxpdHkgaW5jbHVkaW5nIHRoaXJkLXBhcnR5IGljb24gcmVnaXN0cmF0aW9uLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83MTIyNyI+NzEyMjc8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcyMjE1Ij43MjIxNTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU1NzYiPjc1NTc2PC9hPik8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5OYXZpZ2F0aW9uIE92ZXJsYXk8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDppbWFnZSB7ImlkIjoxMjE2MjcsInNpemVTbHVnIjoibGFyZ2UiLCJsaW5rRGVzdGluYXRpb24iOiJtZWRpYSJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2Utc2NhbGVkLTIucG5nIj48aW1nIHNyYz0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4NjY0LTEucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTEyMTYyNyIvPjwvYT48L2ZpZ3VyZT4KPCEtLSAvd3A6aW1hZ2UgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+TmF2aWdhdGlvbiBibG9ja3Mgbm93IGhhdmUgY3VzdG9taXphYmxlIG92ZXJsYXlzLiBBIHByb21pbmVudCDigJxDcmVhdGUgb3ZlcmxheeKAnSBidXR0b24gZ3VpZGVzIHlvdSB0aHJvdWdoIHRoZSBzZXR1cCwgcHJvdmlkaW5nIGEgc2VsZWN0aW9uIG9mIHBhdHRlcm5zIHRvIGFjaGlldmUgYSB2YXJpZXR5IG9mIGRlc2lnbnMgZm9yIHlvdXIgb3ZlcmxheS4gVGhlIE5hdmlnYXRpb24gT3ZlcmxheSBmZWF0dXJlIGlzIG5vIGxvbmdlciBleHBlcmltZW50YWwsIGFuZCBpcyBhdmFpbGFibGUgdG8gYWxsIHVzZXJzIG9mIHRoZSBwbHVnaW4uICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc0OTY4Ij43NDk2ODwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzQ5NzEiPjc0OTcxPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTU2NCI+NzU1NjQ8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mjc2Ij43NTI3NjwvYT4pPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+R2FsbGVyeSBMaWdodGJveCBOYXZpZ2F0aW9uPC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTIxNjI4LCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibWVkaWEifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLXNjYWxlZC0zLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDY2NC0yLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xMjE2MjgiLz48L2E+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBHYWxsZXJ5IGJsb2NrJ3MgIkVubGFyZ2Ugb24gY2xpY2siIGxpZ2h0Ym94IG5vdyBzdXBwb3J0cyBuYXZpZ2F0aW9uIGJldHdlZW4gaW1hZ2VzLiBXaGVuIHlvdSBjbGljayBhbiBpbWFnZSBpbiBhIGdhbGxlcnksIGJhY2sgYW5kIG5leHQgYnV0dG9ucyBsZXQgeW91IGJyb3dzZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBnYWxsZXJ5IHdpdGhvdXQgY2xvc2luZyB0aGUgbGlnaHRib3guIEtleWJvYXJkIG5hdmlnYXRpb24gd2l0aCBhcnJvdyBrZXlzIGFuZCBzY3JlZW4gcmVhZGVyIGFubm91bmNlbWVudHMgKCJFbmxhcmdlZCBpbWFnZSBYIG9mIFkiKSBhcmUgZnVsbHkgc3VwcG9ydGVkLiBJbWFnZXMgdGhhdCBkb24ndCBoYXZlIGxpZ2h0Ym94IGVuYWJsZWQgKGUuZy4sIHRob3NlIGxpbmtlZCB0byBhIGZpbGUgVVJMKSBhcmUgc2tpcHBlZCBkdXJpbmcgbmF2aWdhdGlvbi4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNjI5MDYiPjYyOTA2PC9hPik8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5SZWFsLVRpbWUgQ29sbGFib3JhdGlvbjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmltYWdlIHsiaWQiOjEyMTYyOSwic2l6ZVNsdWciOiJsYXJnZSIsImxpbmtEZXN0aW5hdGlvbiI6Im1lZGlhIn0gLS0+CjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDYyNC0xLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xMjE2MjkiLz48L2E+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlJlYWwtdGltZSBjb2xsYWJvcmF0aW9uIHNlZXMgYSBtYWpvciByb3VuZCBvZiBkZXZlbG9wbWVudCBpbiB0aGlzIHJlbGVhc2UuIEEgbmV3IHRvZ2dsZSB1bmRlciBTZXR0aW5ncyAmZ3Q7IFdyaXRpbmcgbGV0cyB5b3UgZW5hYmxlIHRoZSBmZWF0dXJlLCBhbmQgb25jZSBhY3RpdmUsIGNvbGxhYm9yYXRvcnMgZWRpdGluZyB0aGUgc2FtZSBwb3N0IHNlZSBlYWNoIG90aGVyJ3MgY3Vyc29yIHBvc2l0aW9ucyBhbmQgYmxvY2sgc2VsZWN0aW9ucyBpbiByZWFsIHRpbWUuIEEgcHJlc2VuY2UgaW5kaWNhdG9yIGluIHRoZSBlZGl0b3IgaGVhZGVyIHNob3dzIHdobydzIGN1cnJlbnRseSBlZGl0aW5nLiBVbmRlciB0aGUgaG9vZCwgdGl0bGUsIGNvbnRlbnQsIGFuZCBleGNlcnB0IG5vdyBzeW5jIHZpYSBZLnRleHQgZm9yIG1vcmUgZ3JhbnVsYXIgY29uZmxpY3QgcmVzb2x1dGlvbiwgYW5kIG51bWVyb3VzIHJlbGlhYmlsaXR5IGZpeGVzIGFkZHJlc3MgZGlzY29ubmVjdGlvbiBoYW5kbGluZywgcmV2aXNpb24gcmVzdG9yZXMsIGFuZCBwZXJmb3JtYW5jZSBtZXRyaWNzLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTI4NiI+NzUyODY8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mzk4Ij43NTM5ODwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwNjUiPjc1MDY1PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTQ0OCI+NzU0NDg8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1NTk1Ij43NTU5NTwvYT4pPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+Q2xpZW50LVNpZGUgTWVkaWEgUHJvY2Vzc2luZzwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q2xpZW50LXNpZGUgbWVkaWEgcHJvY2Vzc2luZyBub3cgc3VwcG9ydHMgQVZJRiwgV2ViUCwgYW5kIE1vekpQRUcgb3V0cHV0IGVuY29kaW5nLiBVcGxvYWRlZCBKUEVHcyBnZW5lcmF0ZWQgc3ViLXNpemVzIHdpbGwgYXV0b21hdGljYWxseSBiZW5lZml0IGZyb20gaW1wcm92ZWQgb3B0aW1pemF0aW9uIHJlc3VsdGluZyBpbiB+MTDigJMxNSUgc21hbGxlciBmaWxlIHNpemVzIHdpdGggbm8gcXVhbGl0eSBsb3NzLiBJbWFnZXMgY2FuIGFsc28gYmUgY29udmVydGVkIHRvIEFWSUYgb3IgV2ViUCBiYXNlZCBvbiB0aGUgc2l0ZSdzIGNvbmZpZ3VyZWQgb3V0cHV0IGZvcm1hdCB3aXRob3V0IHRoZSBuZWVkIGZvciBzZXJ2ZXIgc3VwcG9ydC4gVHJhbnNwYXJlbnQgUE5HcyBhcmUgaW50ZWxsaWdlbnRseSBza2lwcGVkIHdoZW4gdGhlIHRhcmdldCBmb3JtYXQgZG9lc24ndCBzdXBwb3J0IGFscGhhIGNoYW5uZWxzLiBGb3JtYXRzIHRoYXQgY2FuJ3QgYmUgcHJvY2Vzc2VkIGNsaWVudC1zaWRlIGFyZSBwYXNzZWQgdGhyb3VnaCBkaXJlY3RseSB0byB0aGUgc2VydmVyIHRvIHVzZSB0aGUgZXhpc3Rpbmcgc2VydmVyIHNpZGUgcHJvY2Vzc2luZy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwODEiPjc1MDgxPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NDkxMCI+NzQ5MTA8L2E+KTwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPk90aGVyIE5vdGFibGUgSGlnaGxpZ2h0czwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPkJsb2NrIHZpc2liaWxpdHkgZW5oYW5jZW1lbnRzPC9zdHJvbmc+OiBMaXN0IFZpZXcgbm93IHNob3dzIHZpZXdwb3J0LWF3YXJlIGljb25zIHdpdGggdG9vbHRpcHMgaW5kaWNhdGluZyB3aGljaCB2aWV3cG9ydHMgYSBibG9jayBpcyBoaWRkZW4gb24sIGFuZCBoaWRkZW4gYmxvY2tzIGdldCBhIHNpbXBsaWZpZWQgdG9vbGJhci4gVGhlIGtleWJvYXJkIHNob3J0Y3V0IChDbWQrU2hpZnQrSCAvIEN0cmwrU2hpZnQrSCkgdG8gdG9nZ2xlIGJsb2NrIHZpc2liaWxpdHkgb3B0aW9ucyBpcyBmZWF0dXJlZCBpbiB0aGUgYmxvY2sgY29udGV4dCBtZW51LiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTQwNCI+NzU0MDQ8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1MzM1Ij43NTMzNTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUzMzQiPjc1MzM0PC9hPik8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+Tm90ZXMga2V5Ym9hcmQgc2hvcnRjdXQ8L3N0cm9uZz46IFlvdSBjYW4gbm93IGNyZWF0ZSBhIGJsb2NrIG5vdGUgd2l0aCBDbWQrT3B0aW9uK00gKE1hYykgb3IgQ3RybCtBbHQrTSAoV2luZG93cy9MaW51eCksIGFuZCBwcmVzcyBFc2NhcGUgdG8gY2FuY2VsLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTI4NyI+NzUyODc8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mjg4Ij43NTI4ODwvYT4pPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPlZlcnNlIGJsb2NrIHJlbmFtZWQgdG8gUG9ldHJ5PC9zdHJvbmc+OiBUaGUgVmVyc2UgYmxvY2sgaXMgbm93IGNhbGxlZCBQb2V0cnkuICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc0MTIxIj43NDEyMTwvYT4pPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPlF1aWNrRWRpdCBzdGFiaWxpemVkPC9zdHJvbmc+OiBRdWlja0VkaXQgaXMgbm93IHN0YWJsZSBhbmQgb3BlbnMgYXMgYSBtb2RhbCBpbiB0aGUgU2l0ZSBFZGl0b3IgcGFnZXMgdmlldy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU1NjUiPjc1NTY1PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTE3MyI+NzUxNzM8L2E+KTwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5UZXh0LWFsaWduIGJsb2NrIHN1cHBvcnQgbWlncmF0aW9uczwvc3Ryb25nPjogRWlnaHQgYmxvY2tzIChBdXRob3IgQmlvZ3JhcGh5LCBQb3N0IEF1dGhvciBOYW1lLCBQb3N0IENvbW1lbnRzIENvdW50LCBQb3N0IENvbW1lbnRzIEZvcm0sIFBvc3QgQ29tbWVudHMgTGluaywgUG9zdCBUZXJtcywgUG9zdCBUaW1lIHRvIFJlYWQsIGFuZCBUZXJtIERlc2NyaXB0aW9uKSBoYXZlIGJlZW4gbWlncmF0ZWQgdG8gdGhlIHN0YW5kYXJkaXplZCB0ZXh0LWFsaWduIGJsb2NrIHN1cHBvcnQuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+4oCUIENPUFkgQ0hBTkdFTE9HLk1EIOKAlDwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPiAgICAgZG9jdW1lbnRNZXRhc2F2ZWRBdGRvY3VtZW50TWV0YXNhdmVkQnlzdGF0ZXZlcnNpb25zdGF0ZXZlcnNpb25vcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRvcmlnaW5hbENvbnRlbnRyZWZibG9jayB7ImVmIjoxMTg2MzcsImNvbnRlbnQiOnsiV2h0J3MgbmV3IHRleHQiOnsiY29udGVudCI6Ilx1MDAzY21hayBzdHlsZT1cdTAwMjJjb2xvcjojN2I5MGZmXHUwMDIyIGNsc3M9XHUwMDIyYXNpbmxpbmVjb2xvclx1MDAyMlx1MDAzZVdoYXQnc2V3SW5cdTAwM2Nta1x1MDAzZSBcdTAwM2NiXHUwMDNlR3V0ZW5iZXJnMjIuNj8ifX19IC8gICAgICAgICAgICAgICAFBwgECAYIBQgHCAcIBggOCA4ICwgGSAEGCAQYFhMfGiAbLyoJGSEiFggKCAQIBisIBwQKRwALvgYIBwQKByEHCwgHBAoHoAMHCwgHBAoHugUHCwgHBAoHhAMHCwgHBAoHIwULCAcECkcACwgHBAoHsQgHCwgHBAoHCgULCAcECkcACwgHBAoHswoHCwgHBAoHEgULCAcECkcACwgHBAoHiwkHCwgHBAoHGwULCAcECkcACwgHBAoHhQgHCwgHBAoHFwULCAcECkcACwgHBAoHiQ4HCwgHBAoHHAULCAcECgebCwcLCAcECgcYBQsIBwQKBwYLCAcECgeWCAsIBwQKB6sECwgHBAoHnQILCAcECgeBBAsIBwQKB5oECwgHBAoHFQcLBwoLCARHAAMHAgQDBAgPAwcCBAMECA8cAwcCBAMECA8DBwIEAwQIDwMHAgQDBAgPvAcCQQgGQQEEARkBDUIAAQMBqhaQEJoSuxCqD7AQrixBAwwHDAcFBwUHTx0DCBkiJAkCBhcCCAFPAAtBDQwBDQANAQIAmAIBAwB7QgEBAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQAAQQACAEEAAgBBAABBAAIAQQACAEEAAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEIEPEEuI0EGEEELEEELEEELEEELEEEGD0EAF0EfFkEFMkEEBQMcBkEJBkEJBgdBCQZBCQZBCQoPQUYEQQkDAQO1AwB9AX2b9zN9AHcEb3BlbncAeXcAdwhzdGFuZGFyZHcAdwB5eXcAeX0AeXl3AHcAeHl2AhhpbWFnZV9nZW5lcmF0b3Jfc2V0dGluZ3N2BAh0ZW1wbGF0ZXcHaGlnaHdheRBkZWZhdWx0X2ltYWdlX2lkfQAEZm9udHcAB2VuYWJsZWR5B3ZlcnNpb259AnUAeHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5nfQJ4eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5nfQJ4eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5nfQJ4eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5nfQJ4eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5nfQJ4eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5nfQJ4dw5jb3JlL3BhcmFncmFwaHl4dwxjb3JlL2hlYWRpbmd9Anh3CWNvcmUvbGlzdHl3AHh3DmNvcmUvbGlzdC1pdGVteHcOY29yZS9saXN0LWl0ZW14dw5jb3JlL2xpc3QtaXRlbXh3DmNvcmUvbGlzdC1pdGVteHcOY29yZS9saXN0LWl0ZW14dw5jb3JlL3BhcmFncmFwaHl4dw5jb3JlL3BhcmFncmFwaHl3CmNvcmUvaW1hZ2V3AH2Z7A53N2h0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS5wbmd3BW1lZGlhd0BodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHg2MjQucG5ndwVsYXJnZXcKY29yZS9pbWFnZXcAfZrsDndAaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLXNjYWxlZC0xLnBuZ3cFbWVkaWF3Qmh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDMwMi0xLnBuZ3cFbGFyZ2V3CmNvcmUvaW1hZ2V3AH2b7A53QGh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS1zY2FsZWQtMi5wbmd3BW1lZGlhd0JodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHg2NjQtMS5wbmd3BWxhcmdldwpjb3JlL2ltYWdldwB9nOwOd0BodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2Utc2NhbGVkLTMucG5ndwVtZWRpYXdCaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4NjY0LTIucG5ndwVsYXJnZXcKY29yZS9pbWFnZXcAfZ3sDnc5aHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEucG5ndwVtZWRpYXdCaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4NjI0LTEucG5ndwVsYXJnZXcTMjAyNi0wMi0yNFQxMzo1NToyM3cFZHJhZnR1AX2XEgEAbQB3JDU2YzZkN2M0LTI4NjctNDQ2OS1iYmRiLTJkMGRmY2U2OTlmZnfPAzxwPuKAnFdoYXTigJlzIG5ldyBpbiBHdXRlbmJlcmfigKbigJ0gcG9zdHMgKGxhYmVsZWQgd2l0aCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS90YWcvZ3V0ZW5iZXJnLW5ldy8iPiNndXRlbmJlcmctbmV3IHRhZzwvYT4pIGFyZSBwb3N0ZWQgZm9sbG93aW5nIGV2ZXJ5IEd1dGVuYmVyZyByZWxlYXNlIG9uIGEgYml3ZWVrbHkgYmFzaXMsIHNob3djYXNpbmcgbmV3IGZlYXR1cmVzIGluY2x1ZGVkIGluIGVhY2ggcmVsZWFzZS4gQXMgYSByZW1pbmRlciwgPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS8yMDIwLzA1LzIwL3dheXMtdG8ta2VlcC11cC13aXRoLWZ1bGwtc2l0ZS1lZGl0aW5nLWZzZS8iPmhlcmXigJlzIGFuIG92ZXJ2aWV3PC9hPiBvZiBkaWZmZXJlbnQgd2F5cyB0byBrZWVwIHVwIHdpdGggR3V0ZW5iZXJnIGFuZCB0aGUgRWRpdG9yLjwvcD53JDJiYWMzNmNjLWU0YmYtNDdlYi1hNjIwLWIyNzM2NzBiMDdjNncsPHA+4oCUIElOU0VSVCBSRUxFQVNFIEJBTk5FUiBQQVRURVJOIOKAlDwvcD53JGQwOTI2OTExLWMyMTMtNGE4NS04ODk1LWZkZGRlM2ZhNGZiN3fnATxwPkd1dGVuYmVyZyAyMi42IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyA8YSBocmVmPSJodHRwczovL3dvcmRwcmVzcy5vcmcvcGx1Z2lucy9ndXRlbmJlcmcvIj5hdmFpbGFibGUgZm9yIGRvd25sb2FkPC9hPiEgWW91IGNhbiBhbHNvIHRyeSZuYnNwOyBpdCBvdXQgdXNpbmcgV29yZFByZXNzIFBsYXlncm91bmQgYnkgY2xpY2tpbmcgaGVyZS4gTm8gV29yZFByZXNzIGluc3RhbGwgcmVxdWlyZWQhPC9wPnckYmQ4NmI0YjUtMDU1Yy00YmE0LThlZjEtNDVlODgyNzYxNTBjd4EDPHA+VGhpcyByZWxlYXNlIHN0YWJpbGl6ZXMgdGhlIE5hdmlnYXRpb24gT3ZlcmxheSBhbmQgYnJpbmdzIHZpc3VhbCBkaWZmaW5nIHRvIGluLWVkaXRvciByZXZpc2lvbnMuIFRoZSBHYWxsZXJ5IGJsb2NrIG5vdyBzdXBwb3J0cyBsaWdodGJveCBuYXZpZ2F0aW9uIGJldHdlZW4gaW1hZ2VzLiBPbiB0aGUgZXhwZXJpbWVudGFsIHNpZGUsIHJlYWwtdGltZSBjb2xsYWJvcmF0aW9uIGFkZHMgY3Vyc29yIGF3YXJlbmVzcyBhbmQgYSBnbG9iYWwgc2V0dGluZ3MgdG9nZ2xlLCBhIGJyYW5kLW5ldyBJY29uIGJsb2NrIG1ha2VzIGl0cyBkZWJ1dCwgYW5kIGNsaWVudC1zaWRlIG1lZGlhIHByb2Nlc3NpbmcgZ2FpbnMgc3VwcG9ydCBmb3IgbW9kZXJuIGltYWdlIGZvcm1hdHMuPC9wPnckMjQ1NDE1NDUtMDY5Yy00YzM1LWI3ODgtOTY2YmEzYTZkOGEwd8sBPHA+QSB0b3RhbCBvZiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxscz9xPWlzJTNBcHIrbWlsZXN0b25lJTNBJTIyR3V0ZW5iZXJnKzIyLjYlMjIraXMlM0FjbG9zZWQiPjM2MiBQUnM8L2E+IHdlcmUgbWVyZ2VkIGluIEd1dGVuYmVyZyAyMi42LCB3aXRoIFhYIGZpcnN0LXRpbWUgY29udHJpYnV0b3JzITwvcD53JDQyNzQ3NzI3LTdlZjQtNGM5Zi1iYTZhLThiMTgwM2Q2ODY1NXcnPHA+4oCUIElOU0VSVCBUQUJMRSBPRiBDT05URU5UUyDigJQ8L3A+dyQ4YTdjZmUzYS05YzM2LTQ2NjgtYjk3NS02ZTQ2NmRkMTZhY2F3RTxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+SW4tRWRpdG9yIFJldmlzaW9uczogVmlzdWFsIERpZmZpbmc8L2gyPnckYTBmOTc1NjYtYTU5My00M2QxLWJhMDctNjU3ZTMzNDU5ZmM5d+YBPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDYyNC5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjI1IiAvPjwvYT48L2ZpZ3VyZT53JGYwMTA2M2JhLTc3OGQtNGIyMy04NTdjLTRiZTZmZmY4ZjJjM3e4BDxwPkJyb3dzaW5nIHBvc3QgcmV2aXNpb25zIGluIHRoZSBlZGl0b3Igbm93IHNob3dzIGEgY29sb3ItY29kZWQgdmlzdWFsIGRpZmYgYmV0d2VlbiB0aGUgc2VsZWN0ZWQgcmV2aXNpb24gYW5kIGl0cyBwcmVkZWNlc3Nvci4gQWRkZWQgdGV4dCBhcHBlYXJzIGluIGdyZWVuIHdpdGggYW4gdW5kZXJsaW5lLCByZW1vdmVkIHRleHQgaW4gcmVkIHdpdGggYSBzdHJpa2V0aHJvdWdoLCBhbmQgZm9ybWF0dGluZyBvciBhdHRyaWJ1dGUgY2hhbmdlcyBhcmUgaGlnaGxpZ2h0ZWQgd2l0aCBhIHllbGxvdyBvdXRsaW5lLiBFbnRpcmUgYWRkZWQgb3IgcmVtb3ZlZCBibG9ja3MgYXJlIG91dGxpbmVkIGluIGdyZWVuIG9yIHJlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgZGlmZiBjYW4gYmUgdG9nZ2xlZCBvZmYgdG8gdmlldyBjbGVhbiBjb250ZW50LiBDb2xvcnMgYmxlbmQgd2l0aCBjdXJyZW50Q29sb3Igc28gdGhleSBsb29rIGFwcHJvcHJpYXRlIGFjcm9zcyBhbGwgdGhlbWVzLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTA0OSI+NzUwNDk8L2E+KTwvcD53JGJiOTE4ZWQ0LTJlOWYtNDcxMi1hZjVlLWYxZjI3ODJmYTMyMncsPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5JY29uIEJsb2NrPC9oMj53JGYwNmFiZWZkLWMwM2EtNGNhNy1iNTA1LTFjZjMyMjVmMzhiMHfxATxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS1zY2FsZWQtMS5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzMDItMS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjI2IiAvPjwvYT48L2ZpZ3VyZT53JDJiZWNhYzA2LWY5NzItNGU0OS05YTlhLTJkYzRlNDFjNTY0ZHe6BTxwPkEgYnJhbmQtbmV3IEljb24gYmxvY2sgbGV0cyB5b3UgaW5zZXJ0IFNWRyBpY29ucyBmcm9tIGEgY3VyYXRlZCBsaWJyYXJ5IGRpcmVjdGx5IGludG8geW91ciBjb250ZW50LiBUaGUgYmxvY2sgaXMgcG93ZXJlZCBieSBhIG5ldyBzZXJ2ZXItc2lkZSBTVkcgSWNvbiBSZWdpc3RyYXRpb24gQVBJLCBzbyB1cGRhdGVzIHRvIHRoZSBpY29uIHJlZ2lzdHJ5IHByb3BhZ2F0ZSB0byBhbGwgdXNlcyB3aXRob3V0IGJsb2NrIHZhbGlkYXRpb24gZXJyb3JzLiBBIFJFU1QgZW5kcG9pbnQgYXQgL3dwL3YyL2ljb25zIHN1cHBvcnRzIHNlYXJjaGluZyBhbmQgZmlsdGVyaW5nLiBUaGUgaW5pdGlhbCBzZXQgZHJhd3MgZnJvbSB0aGUgQHdvcmRwcmVzcy9pY29ucyBwYWNrYWdlLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSBpcyBkZXNpZ25lZCBmb3IgZnV0dXJlIGV4dGVuc2liaWxpdHkgaW5jbHVkaW5nIHRoaXJkLXBhcnR5IGljb24gcmVnaXN0cmF0aW9uLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83MTIyNyI+NzEyMjc8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzcyMjE1Ij43MjIxNTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU1NzYiPjc1NTc2PC9hPik8L3A+dyRlNjg2MWNhMS1lMjNmLTQ4MWMtOTkwNy1jNDkzMTc5NDJkYWR3NDxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+TmF2aWdhdGlvbiBPdmVybGF5PC9oMj53JGI1OGVkYjQ1LTE0YzEtNGRkOS1hZjNlLTg1N2U5Njc0M2E2ZnfxATxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS1zY2FsZWQtMi5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHg2NjQtMS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjI3IiAvPjwvYT48L2ZpZ3VyZT53JDgxNDkzNmNhLTZkMTQtNGM2NS04NDI1LTI5Mzc2MzNkYjEzMnfWBDxwPk5hdmlnYXRpb24gYmxvY2tzIG5vdyBoYXZlIGN1c3RvbWl6YWJsZSBvdmVybGF5cy4gQSBwcm9taW5lbnQg4oCcQ3JlYXRlIG92ZXJsYXnigJ0gYnV0dG9uIGd1aWRlcyB5b3UgdGhyb3VnaCB0aGUgc2V0dXAsIHByb3ZpZGluZyBhIHNlbGVjdGlvbiBvZiBwYXR0ZXJucyB0byBhY2hpZXZlIGEgdmFyaWV0eSBvZiBkZXNpZ25zIGZvciB5b3VyIG92ZXJsYXkuIFRoZSBOYXZpZ2F0aW9uIE92ZXJsYXkgZmVhdHVyZSBpcyBubyBsb25nZXIgZXhwZXJpbWVudGFsLCBhbmQgaXMgYXZhaWxhYmxlIHRvIGFsbCB1c2VycyBvZiB0aGUgcGx1Z2luLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NDk2OCI+NzQ5Njg8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc0OTcxIj43NDk3MTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU1NjQiPjc1NTY0PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTI3NiI+NzUyNzY8L2E+KTwvcD53JDY4ODc1ZGE1LTNjMWQtNGVmMy05NWY1LTA1MjgzNjQxNzgwM3c9PGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5HYWxsZXJ5IExpZ2h0Ym94IE5hdmlnYXRpb248L2gyPnckNDMwYzMxOTMtNDQ2OS00ZDRlLWJmYzYtYTRhMWIxMWQ4MjFld\/EBPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLXNjYWxlZC0zLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDY2NC0yLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xMjE2MjgiIC8+PC9hPjwvZmlndXJlPnckNDY2MGI1Y2MtMGMxZi00MzFmLWE5ZjYtYmJmODI1Njc1NmQzd4wEPHA+VGhlIEdhbGxlcnkgYmxvY2sncyAiRW5sYXJnZSBvbiBjbGljayIgbGlnaHRib3ggbm93IHN1cHBvcnRzIG5hdmlnYXRpb24gYmV0d2VlbiBpbWFnZXMuIFdoZW4geW91IGNsaWNrIGFuIGltYWdlIGluIGEgZ2FsbGVyeSwgYmFjayBhbmQgbmV4dCBidXR0b25zIGxldCB5b3UgYnJvd3NlIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGdhbGxlcnkgd2l0aG91dCBjbG9zaW5nIHRoZSBsaWdodGJveC4gS2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoIGFycm93IGtleXMgYW5kIHNjcmVlbiByZWFkZXIgYW5ub3VuY2VtZW50cyAoIkVubGFyZ2VkIGltYWdlIFggb2YgWSIpIGFyZSBmdWxseSBzdXBwb3J0ZWQuIEltYWdlcyB0aGF0IGRvbid0IGhhdmUgbGlnaHRib3ggZW5hYmxlZCAoZS5nLiwgdGhvc2UgbGlua2VkIHRvIGEgZmlsZSBVUkwpIGFyZSBza2lwcGVkIGR1cmluZyBuYXZpZ2F0aW9uLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC82MjkwNiI+NjI5MDY8L2E+KTwvcD53JDcyODk2NWRjLTczMDYtNGJiYS04ZWRlLWRkYzFlZjI5OGM4M3c5PGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5SZWFsLVRpbWUgQ29sbGFib3JhdGlvbjwvaDI+dyQyY2EwOGE3Yy00OWI5LTQ5N2ItYThlYy04NWY0YTE5MjRhNzJ36gE8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMS5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHg2MjQtMS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjI5IiAvPjwvYT48L2ZpZ3VyZT53JDU0NmI5OGNmLTdiMjctNGY0Ni05ZTc4LWJhNWZhNDc2NDhiZXeQBzxwPlJlYWwtdGltZSBjb2xsYWJvcmF0aW9uIHNlZXMgYSBtYWpvciByb3VuZCBvZiBkZXZlbG9wbWVudCBpbiB0aGlzIHJlbGVhc2UuIEEgbmV3IHRvZ2dsZSB1bmRlciBTZXR0aW5ncyAmZ3Q7IFdyaXRpbmcgbGV0cyB5b3UgZW5hYmxlIHRoZSBmZWF0dXJlLCBhbmQgb25jZSBhY3RpdmUsIGNvbGxhYm9yYXRvcnMgZWRpdGluZyB0aGUgc2FtZSBwb3N0IHNlZSBlYWNoIG90aGVyJ3MgY3Vyc29yIHBvc2l0aW9ucyBhbmQgYmxvY2sgc2VsZWN0aW9ucyBpbiByZWFsIHRpbWUuIEEgcHJlc2VuY2UgaW5kaWNhdG9yIGluIHRoZSBlZGl0b3IgaGVhZGVyIHNob3dzIHdobydzIGN1cnJlbnRseSBlZGl0aW5nLiBVbmRlciB0aGUgaG9vZCwgdGl0bGUsIGNvbnRlbnQsIGFuZCBleGNlcnB0IG5vdyBzeW5jIHZpYSBZLnRleHQgZm9yIG1vcmUgZ3JhbnVsYXIgY29uZmxpY3QgcmVzb2x1dGlvbiwgYW5kIG51bWVyb3VzIHJlbGlhYmlsaXR5IGZpeGVzIGFkZHJlc3MgZGlzY29ubmVjdGlvbiBoYW5kbGluZywgcmV2aXNpb24gcmVzdG9yZXMsIGFuZCBwZXJmb3JtYW5jZSBtZXRyaWNzLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTI4NiI+NzUyODY8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mzk4Ij43NTM5ODwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwNjUiPjc1MDY1PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTQ0OCI+NzU0NDg8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1NTk1Ij43NTU5NTwvYT4pPC9wPnckN2I4NTlmZTMtZDAxNi00NzBlLWI2ZDUtYjZkN2UwZmVlZjY5dz48aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkNsaWVudC1TaWRlIE1lZGlhIFByb2Nlc3Npbmc8L2gyPnckYTc1MGY0ODYtZjUxMy00MGQxLWIwOGQtNmI0MjljZjc3NTU3d+QFPHA+Q2xpZW50LXNpZGUgbWVkaWEgcHJvY2Vzc2luZyBub3cgc3VwcG9ydHMgQVZJRiwgV2ViUCwgYW5kIE1vekpQRUcgb3V0cHV0IGVuY29kaW5nLiBVcGxvYWRlZCBKUEVHcyBnZW5lcmF0ZWQgc3ViLXNpemVzIHdpbGwgYXV0b21hdGljYWxseSBiZW5lZml0IGZyb20gaW1wcm92ZWQgb3B0aW1pemF0aW9uIHJlc3VsdGluZyBpbiB+MTDigJMxNSUgc21hbGxlciBmaWxlIHNpemVzIHdpdGggbm8gcXVhbGl0eSBsb3NzLiBJbWFnZXMgY2FuIGFsc28gYmUgY29udmVydGVkIHRvIEFWSUYgb3IgV2ViUCBiYXNlZCBvbiB0aGUgc2l0ZSdzIGNvbmZpZ3VyZWQgb3V0cHV0IGZvcm1hdCB3aXRob3V0IHRoZSBuZWVkIGZvciBzZXJ2ZXIgc3VwcG9ydC4gVHJhbnNwYXJlbnQgUE5HcyBhcmUgaW50ZWxsaWdlbnRseSBza2lwcGVkIHdoZW4gdGhlIHRhcmdldCBmb3JtYXQgZG9lc24ndCBzdXBwb3J0IGFscGhhIGNoYW5uZWxzLiBGb3JtYXRzIHRoYXQgY2FuJ3QgYmUgcHJvY2Vzc2VkIGNsaWVudC1zaWRlIGFyZSBwYXNzZWQgdGhyb3VnaCBkaXJlY3RseSB0byB0aGUgc2VydmVyIHRvIHVzZSB0aGUgZXhpc3Rpbmcgc2VydmVyIHNpZGUgcHJvY2Vzc2luZy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUwODEiPjc1MDgxPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NDkxMCI+NzQ5MTA8L2E+KTwvcD53JDRjMzY0YWVhLTYzNWUtNDJhMC1hOGEwLTg5YTUzZjcwYzY0N3c6PGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5PdGhlciBOb3RhYmxlIEhpZ2hsaWdodHM8L2gyPnckYTFhYjFjMTMtNjBmYi00MGM4LWFkOGMtZjIzYTc1ZWQzYTVmdyc8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKCgoKCgoKPC91bD53JDI5NThkYTA2LWNmMDItNGU2Yy05MWM3LWQxNzVjMWE5MjJjNXefBDxsaT48c3Ryb25nPkJsb2NrIHZpc2liaWxpdHkgZW5oYW5jZW1lbnRzPC9zdHJvbmc+OiBMaXN0IFZpZXcgbm93IHNob3dzIHZpZXdwb3J0LWF3YXJlIGljb25zIHdpdGggdG9vbHRpcHMgaW5kaWNhdGluZyB3aGljaCB2aWV3cG9ydHMgYSBibG9jayBpcyBoaWRkZW4gb24sIGFuZCBoaWRkZW4gYmxvY2tzIGdldCBhIHNpbXBsaWZpZWQgdG9vbGJhci4gVGhlIGtleWJvYXJkIHNob3J0Y3V0IChDbWQrU2hpZnQrSCAvIEN0cmwrU2hpZnQrSCkgdG8gdG9nZ2xlIGJsb2NrIHZpc2liaWxpdHkgb3B0aW9ucyBpcyBmZWF0dXJlZCBpbiB0aGUgYmxvY2sgY29udGV4dCBtZW51LiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTQwNCI+NzU0MDQ8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1MzM1Ij43NTMzNTwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzUzMzQiPjc1MzM0PC9hPik8L2xpPnckZTg0NzcxYmYtNjRmNy00MWI0LTliOGMtMWU1YWE1ZDAxMWIxd7QCPGxpPjxzdHJvbmc+Tm90ZXMga2V5Ym9hcmQgc2hvcnRjdXQ8L3N0cm9uZz46IFlvdSBjYW4gbm93IGNyZWF0ZSBhIGJsb2NrIG5vdGUgd2l0aCBDbWQrT3B0aW9uK00gKE1hYykgb3IgQ3RybCtBbHQrTSAoV2luZG93cy9MaW51eCksIGFuZCBwcmVzcyBFc2NhcGUgdG8gY2FuY2VsLiAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTI4NyI+NzUyODc8L2E+LCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc1Mjg4Ij43NTI4ODwvYT4pPC9saT53JGM3YzFkZmEzLWU4MjYtNDVlOS1iYWQwLWRmZGIxYTcyODk1YXemATxsaT48c3Ryb25nPlZlcnNlIGJsb2NrIHJlbmFtZWQgdG8gUG9ldHJ5PC9zdHJvbmc+OiBUaGUgVmVyc2UgYmxvY2sgaXMgbm93IGNhbGxlZCBQb2V0cnkuICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9wdWxsLzc0MTIxIj43NDEyMTwvYT4pPC9saT53JGUyNGVjODk4LTNmNWMtNDBmYy1hMTJiLTg2ZjU0YTU4NzAxZHeKAjxsaT48c3Ryb25nPlF1aWNrRWRpdCBzdGFiaWxpemVkPC9zdHJvbmc+OiBRdWlja0VkaXQgaXMgbm93IHN0YWJsZSBhbmQgb3BlbnMgYXMgYSBtb2RhbCBpbiB0aGUgU2l0ZSBFZGl0b3IgcGFnZXMgdmlldy4gKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL3B1bGwvNzU1NjUiPjc1NTY1PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvcHVsbC83NTE3MyI+NzUxNzM8L2E+KTwvbGk+dyQ0M2Y1YjAzNC01MTdlLTQyNjktYWU1Zi1jZWRkNDY1MGZlOTB3owI8bGk+PHN0cm9uZz5UZXh0LWFsaWduIGJsb2NrIHN1cHBvcnQgbWlncmF0aW9uczwvc3Ryb25nPjogRWlnaHQgYmxvY2tzIChBdXRob3IgQmlvZ3JhcGh5LCBQb3N0IEF1dGhvciBOYW1lLCBQb3N0IENvbW1lbnRzIENvdW50LCBQb3N0IENvbW1lbnRzIEZvcm0sIFBvc3QgQ29tbWVudHMgTGluaywgUG9zdCBUZXJtcywgUG9zdCBUaW1lIHRvIFJlYWQsIGFuZCBUZXJtIERlc2NyaXB0aW9uKSBoYXZlIGJlZW4gbWlncmF0ZWQgdG8gdGhlIHN0YW5kYXJkaXplZCB0ZXh0LWFsaWduIGJsb2NrIHN1cHBvcnQuPC9saT53JGQyYmMwYWQwLTkzMGMtNDdhMi05ZmZlLTg4MDdlMjE0NTgyNHcgPHA+4oCUIENPUFkgQ0hBTkdFTE9HLk1EIOKAlDwvcD53JDczZGE3OWJmLTAyYzctNDM2My1iOGVmLTM5ODFjZWViOTMzYncKY29yZS9ibG9ja32tvQ51AHYBD1doYXQncyBuZXcgdGV4dHYBB2NvbnRlbnR3WjxtYXJrIHN0eWxlPSJjb2xvcjojN2I5MGZmIiBjbGFzcz0iaGFzLWlubGluZS1jb2xvciI+V2hhdCdzIE5ldyBJbjwvbWFyaz4gPGJyPkd1dGVuYmVyZyAyP3YBD1doYXQncyBuZXcgdGV4dHYBB2NvbnRlbnR3WzxtYXJrIHN0eWxlPSJjb2xvcjojN2I5MGZmIiBjbGFzcz0iaGFzLWlubGluZS1jb2xvciI+V2hhdCdzIE5ldyBJbjwvbWFyaz4gPGJyPkd1dGVuYmVyZyAyMj92AQ9XaGF0J3MgbmV3IHRleHR2AQdjb250ZW50d1w8bWFyayBzdHlsZT0iY29sb3I6IzdiOTBmZiIgY2xhc3M9Imhhcy1pbmxpbmUtY29sb3IiPldoYXQncyBOZXcgSW48L21hcms+IDxicj5HdXRlbmJlcmcgMjIuP3YBD1doYXQncyBuZXcgdGV4dHYBB2NvbnRlbnR3XTxtYXJrIHN0eWxlPSJjb2xvcjojN2I5MGZmIiBjbGFzcz0iaGFzLWlubGluZS1jb2xvciI+V2hhdCdzIE5ldyBJbjwvbWFyaz4gPGJyPkd1dGVuYmVyZyAyMi42P3cTMjAyNi0wMi0yNFQxNDowMDowNncTMjAyNi0wMi0yNFQxNDowMDozNX2k7A53EzIwMjYtMDItMjRUMTQ6MDI6MTR7QnnI\/1KpoAB9ssy8rQp1AX20K3UCfbQrfZEkdQN9tCt9kSR9sSV1BH20K32RJH2xJX2kMAPo4qbhDVMBAQQAFAEtAAYAvwMAAQABIgIA5wEAgQMAygEjAQAqAAEAARECALgEABEAAQABEQIAugUAGQABAAERAgDSBAAiAAEAARECAIwEAB4AAQABEQIAkAcAIA4CFwEA4gUAHwAHAJwEALECAKMBAIcCAKACABsWBDoDKwQBAQADBgQBAQADBRwHBAEBAAMGBAEBAAMGBAEBAAMJ\/AMBAgACAAEAAgUBAAEDARgBDAIBAQKqNQ6uFgABBAEBi9GsiAgBAACypt6WBQUAAAIBPQPEAQ8JAg==\",\"updateId\":666605671}","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[2804,2321,2417,3108],"class_list":["post-121622","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","tag-block-editor","tag-core-editor","tag-gutenberg","tag-gutenberg-new","mentions-aaronrobertshaw","mentions-adamsilverstein","mentions-aduth","mentions-alecgeatches","mentions-amitraj2203","mentions-andrewserong","mentions-annezazu","mentions-bernhard-reiter","mentions-bph","mentions-czarate","mentions-czarflix","mentions-darerodz","mentions-davidabowman","mentions-ellatrix","mentions-fabiankaegy","mentions-fcoveram","mentions-getdave","mentions-gigitux","mentions-global","mentions-gmjuhasz","mentions-ingeniumed","mentions-isabel_brison","mentions-jameskoster","mentions-jeryj","mentions-joen","mentions-johnbillion","mentions-jorgefilipecosta","mentions-jsnajdr","mentions-juanfra","mentions-juanmaguitar","mentions-lsarsfield","mentions-luisherranz","mentions-madhudollu","mentions-mamaduka","mentions-manhphuc","mentions-manzoorwanijk","mentions-maxschmeling","mentions-mciampini","mentions-mcsf","mentions-mikachan","mentions-mirka","mentions-mustafabharmal","mentions-noruzzaman","mentions-ntsekouras","mentions-oandregal","mentions-onemaggie","mentions-pkevan","mentions-poena","mentions-ramonopoly","mentions-scruffian","mentions-senadir","mentions-sethrubenstein","mentions-sgomes","mentions-shailu25","mentions-shekharnwagh","mentions-shimotomoki","mentions-simison","mentions-since","mentions-sirlouen","mentions-soean","mentions-stokesman","mentions-swoyamjeetcodes","mentions-talldan","mentions-timse201","mentions-tyxla","mentions-welcher","mentions-westonruter","mentions-wildworks","mentions-wordpress","mentions-xavilc","mentions-yashjawale","mentions-youknowriad","author-bernhard-reiter"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vDE","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/425435"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121622"}],"version-history":[{"count":48,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121622\/revisions"}],"predecessor-version":[{"id":121750,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121622\/revisions\/121750"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media\/121636"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":425435,"name":"Bernie Reiter","url":"http:\/\/raz.or.at\/","description":"I'm a Core Committer with a focus on block-related APIs in WordPress. I'm the principal author of the Block Hooks feature and the current maintainer of the Block Bindings API. I also help out with reviewing and landing patches related to the HTML API, and have participated in the early development stages of the Interactivity API's server-side directive processing.\r\n\r\nI was one of the Editor Tech leads for WordPress 6.1 and have been a Core Committer since 2022. I'm also a frequent contributor to the Gutenberg plugin, which often serves as a testing ground for new features before their inclusion in Core.","link":"https:\/\/profiles.wordpress.org\/bernhard-reiter\/","slug":"bernhard-reiter","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/5769f777927e07dbaf0d2356f67bca268e81f9b2e072da84d52465037217f235?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/5769f777927e07dbaf0d2356f67bca268e81f9b2e072da84d52465037217f235?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/5769f777927e07dbaf0d2356f67bca268e81f9b2e072da84d52465037217f235?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/425435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"wp:featuredmedia":[{"id":121636,"date":"2026-02-24T14:02:05","slug":"gb-22-6-featured","type":"attachment","link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/whats-new-in-gutenberg-22-6-25-february\/gb-22-6-featured\/#main","title":{"rendered":"gb-22-6-featured"},"author":425435,"featured_media":0,"revision_note":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/a2AvED-vDS","caption":{"rendered":"<p>Login to Reply<\/p>\n"},"alt_text":"","media_type":"image","mime_type":"image\/png","media_details":{"width":2528,"height":1420,"file":"2026\/02\/gb-22-6-featured.png","filesize":20574,"sizes":{"medium":{"file":"gb-22-6-featured-300x169.png","width":300,"height":169,"filesize":7842,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured-300x169.png"},"large":{"file":"gb-22-6-featured-1024x575.png","width":1024,"height":575,"filesize":38476,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured-1024x575.png"},"thumbnail":{"file":"gb-22-6-featured-150x150.png","width":150,"height":150,"filesize":5694,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured-150x150.png"},"medium_large":{"file":"gb-22-6-featured-768x431.png","width":768,"height":431,"filesize":26609,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured-768x431.png"},"1536x1536":{"file":"gb-22-6-featured-1536x863.png","width":1536,"height":863,"filesize":65518,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured-1536x863.png"},"2048x2048":{"file":"gb-22-6-featured-2048x1150.png","width":2048,"height":1150,"filesize":96712,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured-2048x1150.png"},"full":{"file":"gb-22-6-featured.png","width":2528,"height":1420,"mime_type":"image\/png","source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured.png"}},"image_meta":{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0","keywords":[]}},"source_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/gb-22-6-featured.png","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media\/121636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/attachment"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/425435"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121636"}],"wp:attached-to":[{"embeddable":true,"post_type":"post","id":121622,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":2804,"link":"https:\/\/make.wordpress.org\/core\/tag\/block-editor\/","name":"block-editor","slug":"block-editor","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":2321,"link":"https:\/\/make.wordpress.org\/core\/tag\/core-editor\/","name":"core-editor","slug":"core-editor","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":2417,"link":"https:\/\/make.wordpress.org\/core\/tag\/gutenberg\/","name":"gutenberg","slug":"gutenberg","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":3108,"link":"https:\/\/make.wordpress.org\/core\/tag\/gutenberg-new\/","name":"gutenberg-new","slug":"gutenberg-new","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/3108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=3108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121654,"date":"2026-02-25T15:48:36","date_gmt":"2026-02-25T15:48:36","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121654"},"modified":"2026-02-25T15:48:36","modified_gmt":"2026-02-25T15:48:36","slug":"developer-documentation-restored","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/","title":{"rendered":"Developer documentation restored."},"content":{"rendered":"<p class=\"wp-block-paragraph\">For those unaware, prior to this week, the documentation at https:\/\/developer.wordpress.org\/reference hadn\u2019t been updated since WordPress 6.4 \u2014 over two years out of date! Today, thankfully, this post is announcing that the reference documentation is now updated as of WordPress 6.9.1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress has seen significant change since the documentation generation process stopped, so if you found that something was missing then it wasn\u2019t just you. Those new interfaces, classes, methods, functions, and <span tabindex='0' class='glossary-item-container'>hooks<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Hooks<\/span> <span class='glossary-item-description'>In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.<\/span><\/span><\/span> should be there now. Further, there was a pre-existing <span tabindex='0' class='glossary-item-container'>bug<span class='glossary-item-hidden-content'><span class='glossary-item-header'>bug<\/span> <span class='glossary-item-description'>A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.<\/span><\/span><\/span> where source snippets for many symbols were offset; this has been fixed in Monday\u2019s update.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"353\" data-attachment-id=\"121657\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/image-89\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2.png\" data-orig-size=\"2056,708\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x103-1.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x353-1.png\" data-id=\"121657\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x353-1.png\" alt=\"The stale source block started and ended in the middle of a DocBlock comment, showing nothing of the associated function.\" class=\"wp-image-121657\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x353-1.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x103-1.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-767x264-1.png 767w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x529-1.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-2048x705-1.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Source <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> for <code>wp_interactivity()<\/code> over the past two years.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"379\" data-attachment-id=\"121658\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/image-90\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-3.png\" data-orig-size=\"1862,690\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x111-1.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x379-1.png\" data-id=\"121658\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x379-1.png\" alt=\"In the updates the source block starts and ends with the symbol definition as expected.\" class=\"wp-image-121658\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1024x379-1.png 1024w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-300x111-1.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-766x284-1.png 766w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-1536x569-1.png 1536w, https:\/\/make.wordpress.org\/core\/files\/2026\/02\/image-3.png 1862w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Source block for <code>wp_interactivity()<\/code> after the update.<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This work was the result of collaboration between many people, most of whom have never worked with this process in the past. <a href=\"https:\/\/profiles.wordpress.org\/dd32\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>dd32<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/dmsnell\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>dmsnell<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/johnbillion\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>johnbillion<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/jonsurrell\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jonsurrell<\/a>, and <a href=\"https:\/\/profiles.wordpress.org\/tmdk\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tmdk<\/a> all worked on various approaches to restoring the ability to parse WordPress\u2019 source code; and <a href=\"https:\/\/profiles.wordpress.org\/dd32\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>dd32<\/a> and <a href=\"https:\/\/profiles.wordpress.org\/coffee2code\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>coffee2code<\/a> made sure that the updates reached the public website; and of course, numerous people in the <a href=\"https:\/\/make.wordpress.org\/core\/tag\/docs\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>docs<\/a> team reported and triaged bug reports that were symptoms of this process breakdown.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is still significant work to do, as there is no way (at the time of writing this note) to generate the documentation for the upcoming WordPress 7.0 release, but as the new issues are ironed out, you can expect the updates to come much sooner than 2028 \ud83d\ude09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There still remain a number of known issues, particularly related to PHPStan type annotations. Work is ongoing to improve the overall build process and try to reduce the feedback <span tabindex='0' class='glossary-item-container'>loop<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Loop<\/span> <span class='glossary-item-description'>The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. <a href=\"https:\/\/codex.wordpress.org\/The_Loop\">https:\/\/codex.wordpress.org\/The_Loop<\/a>.<\/span><\/span><\/span> between making code changes and seeing those reflected in the documentation online.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Timeline<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>August 1, 2023 \u2014 <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/56345\">[56345]<\/a> introduces a code-styling change to replace <code>array_key_exists()<\/code> with <code>isset()<\/code> while indexing a class constant. This was known to be <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/issues\/199\">unsupported by the docs parser<\/a> but there was no indication that the updating process was broken. Because of a parsing error the process was blocked; the documentation generator needed to update its underlying dependency on <code>nikic\/php-parser<\/code> so that it could understand the new syntax in the underlying source code.<\/li>\n\n\n\n<li>April 15, 2024 \u2014 <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/58009\">[58009]<\/a> introduces type annotations for optional types, <code>?array<\/code> instead of <code>array<\/code>, which the updated parser could parse, but which <code>phpDocumentor\/Reflection<\/code> did not recognize. The <code>Reflection<\/code> library extracts useful information from the parsed form of the source code, but had no code path for nullable types. Once the new syntax appeared in the source code, it <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/issues\/228\">needed to be updated <\/a>to add the missing handling.<\/li>\n\n\n\n<li>June 3, 2024 \u2014 <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/58304\">[58304]<\/a> introduces a shorthand syntax for calling a <code>Callable<\/code> stored in a variable. This <em>should<\/em> be supported by the <span tabindex='0' class='glossary-item-container'>PHP<span class='glossary-item-hidden-content'><span class='glossary-item-header'>PHP<\/span> <span class='glossary-item-description'>The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span> parser and <code>Reflection<\/code>, but it isn\u2019t. It would need an update at least to the <code>Reflection<\/code> library to handle. Given that it is an odd construct with a semantically-equivalent counterpart, it was modified in <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/61624\">[61624]<\/a> to prevent it from becoming an immediate issue going forward.<\/li>\n\n\n\n<li>August 27, 2025 \u2014 <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/60684\">[60684]<\/a> introduces anonymous classes, which leads to a crash when <code>Reflection<\/code> tries to extract its name. There is no name, so it must make one up: <code>class@anonymous<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">There have only been four kinds of new syntax that broke the documentation generation since WordPress 6.4, but the code in WordPress 7.0 introduces several new syntax forms which need updating before the documentation can be regenerated:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The AI client introduces visibility on class constants and nullable types for class properties.<\/li>\n\n\n\n<li>The collaboration feature\u00a0introduce array initialization of class properties.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Work has already been explored for making another incremental step to update the underlying PHP parser, and this should hopefully resolve these new breakages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The underlying PHP parser is somewhat comprehensive, but the adapter layer is more <em>as-needed<\/em>. When syntax forms aren\u2019t present in the WordPress codebase there\u2019s no need for them to exist in the documentation generator. Typically, when these new forms appear it shouldn\u2019t take too much effort to update the adapter to add support for them. It <em>can<\/em> be harder though when updating PHP versions introduces new deprecations and when dependency updates involve backwards-incompatible changes. For example, updating to the next version of the <code>phpDocumentor\/Reflections<\/code> library would require an almost complete rewrite of the adapter layer.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>July 13, 2025 \u2014 Work starts in <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/pull\/247\">PR#247<\/a> to rewrite the documentation generation with a new parser, a new adapter, and a new runner. This work incorporates PHPStan so that the more advanced types appear in the documentation.<\/li>\n\n\n\n<li>September 28, 2025 \u2014 An attempt is made in <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/pull\/248\">PR#248<\/a> to <span tabindex='0' class='glossary-item-container'>filter<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Filter<\/span> <span class='glossary-item-description'>Filters are one of the two types of Hooks <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Hooks\">https:\/\/codex.wordpress.org\/Plugin_API\/Hooks<\/a>. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.<\/span><\/span><\/span> out unsupported syntax using PCRE patterns.<\/li>\n\n\n\n<li>February 11, 2026 \u2014 Minimal updates are proposed in <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/pull\/250\">PR#250<\/a> (and in <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/pull\/249\">PR#249<\/a> and <a href=\"https:\/\/github.com\/WordPress\/phpdoc-parser\/pull\/251\">PR#251<\/a>) to update the underlying <code>nikic\/php-parser<\/code> dependency and liberate the process. The <code>Reflection<\/code> library is forked from its older version to adopt only those changes necessary to upgrade far enough to support <span tabindex='0' class='glossary-item-container'>Core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span>\u2019s code (in <a href=\"https:\/\/github.com\/phpDocumentor\/Reflection\/pull\/721\">PR#721<\/a>).<\/li>\n\n\n\n<li>February 17\u201319, 2026 \u2014 The <span tabindex='0' class='glossary-item-container'>JSON<span class='glossary-item-hidden-content'><span class='glossary-item-header'>JSON<\/span> <span class='glossary-item-description'>JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.<\/span><\/span><\/span> blob which represents the content of the documentation is generated from <code>6.9.1<\/code> and differences from the latest-working version are ironed out.<\/li>\n\n\n\n<li>February 23, 2026 \u2014 https:\/\/developer.wordpress.org\/reference is updated with documentation for WordPress as of <code>6.9.1<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Future direction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">What comes next is making sure that WordPress 7.0 can ship with updated reference documentation. That\u2019s essential.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After that, work will continue on supporting PHPStan type annotations and on being able to generate documentation previews. The existing process is tightly coupled to the production system which hosts the documentation. It needs to be isolated into a Playground blueprint, at which point a preview can be generated on every PR and developers will be able to see the impact of changes before the WordPress release, and hopefully notice and fix any issues that arise before they are published publicly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The process for generating and <span tabindex='0' class='glossary-item-container'>deploying<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Deploy<\/span> <span class='glossary-item-description'>Launching code from a local development environment to the production web server, so that it's available to visitors.<\/span><\/span><\/span> documentation updates is in dire need of its own documentation. A challenge in this current crisis has been knowing where to run updates and what updates to run. It\u2019s one thing to parse the source code and produce the raw content, but another thing to have access to and awareness of the public servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A contributing factor to this breakdown was a failure to notify developers when source code changes broke the documentation generation process. A new CI job to run the parser could highlight these issues and raise awareness before problems escalate or cascade. That hopefully will not involve too much work, but needs to be undertaken by someone willing to push through the changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, there is a backlog of feature requests for the documentation: new alerts, supporting pass-by-reference parameters, improving recognition of rarer code patterns, etc\u2026 Once the process is running smoothly and developers are able to recreate the system locally, the normal develop cycle should resume.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Props<\/h2>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">Thanks to <a href=\"https:\/\/profiles.wordpress.org\/jonsurrell\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jonsurrell<\/a> for reviewing this post prior to publishing.<\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/developer-documentation\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>developer-documentation<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F02%2F25%2Fdeveloper-documentation-restored%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>For those unaware, prior to this week, the documentation at https:\/\/developer.wordpress.org\/reference hadn\u2019t been updated since WordPress 6.4 \u2014 over two years out of date! Today, thankfully, this post is announcing that the reference documentation is now updated as of WordPress 6.9.1. WordPress has seen significant change since the documentation generation process stopped, so if you [&hellip;]<\/p>\n","protected":false},"author":13597958,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AAD6BvyAlpMfhQuq8eCPFabiyoEN\/ICWkx8DpuLKgQ38gJaTHxHm4sqBDU28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx+m4sqBDbyAlpMfpuLKgQ38gJaTHwGm4sqBDfyAlpMfBebiyoENLbyAlpMfpuLKgQ28gJaTH6biyoENvICWkx\/m4sqBDS+8gJaTH+biyoENAPyAlpMfAObiyoENmQS8gJaTH6biyoENvICWkx\/m4sqBDZMH4xkaAQtUNoQBAQEIAEgKsgECPCqWAQQABCwEDgaWAboBiAEKAgYOAlgIOOgLrAsBAQgASAoYALwEOgkAmAEMFgAEigEehgEWmAEO+AaABzocpgGEAhYMjAEGJKYB1hagGAEBCABIAgQCAQAMTAEDGARkEAJKAQYGmAEBAQgBBEgAGgEBCAEESFIAGgDAAqwBigIiAiRmJgIkABr4A4IFAiRmJgIqAOYutlIyng0y\/mECrFOQDshhtmYEAgQC\/D+mRMxEiEnUS5hLAQEIAEgKggKcAboBpgIEMAQCBgIQCiIKAhACBgQCrAE0kgGYAtgCmgL8EI4RAQEIAEhCGLABAwAADCokNhDgBKIFBJYBgAHAAYABBhgEAwAESAqoAQQMBCYaAAYMAALCDKYMAQEIAEgKTJABLgDyBbQFqgEA1gOWAwZGCkoOThJSFlYaWh5eImImZipqLm4ycjZ2AQA6eoIBwgGGAcYBigHKAY4BzgGSAdIBAQCWAdYBngHeAaIB4gGmAeYBAQCqAeoBsgHyAbYB9gG6AfoBvgH+AYICwgKGAsYCigLKAgEAjgLOApYC1gKaAtoCngLeAqIC4gKmAuYCAQCqAuoCsgLyArYC9gK6AvoCvgL+AoIDwgOGA8YDigPKA44DzgOSA9IDlgPWA5oD2gMBAJ4D3gOmA+YDqgPqA64D7gOyA\/IDtgP2A7oD+gO+A\/4DggTCBIYExgSKBMoEjgTOBJIE0gSWBNYEmgTaBJ4E3gSiBOIEpgTmBKoE6gSuBO4EsgTyBLYE9gS6BPoEvgT+BIIFwgWGBcYFAQCKBcoFkgXSBZYF1gWaBdoFngXeBaIF4gWmBeYFqgXqBa4F7gWyBfIFtgX2BboF+gW+Bf4FAQGCBsIGjAbMBpAG0AaUBtQGmAbYBpwG3AagBuAGggbCBqgG6AasBuwGsAbwBrQG9Aa4BvgGvAb8BoAHwAeEB8QHAKQG5AaOB84HkgfSB5YH1geaB9oHngfeB6IH4gemB+YHqgfqB64H7geyB\/IHAQC2B\/YHvgf+B4IIwgiGCMYIigjKCI4IzgiSCNIIlgjWCJoI2gieCN4IogjiCKYI5giqCOoIrgjuCLII8gi2CPYIugj6CL4I\/giCCcIJhgnGCQECignKCZYJ1gmaCdoJngneCQEAogniCaoJ6gmuCe4JsgnyCbYJ9gm6CfoJvgn+CYIKwgqGCsYKigrKCo4KzgqSCtIKlgrWCpoK2gqeCt4KogriCqYK5gqqCuoKrgruCgEAsgryCroK+goBAL4K\/gqGC8YLigvKC44LzguSC9ILlgvWC5oL2gueC94LogviC6YL5guqC+oLrgvuCwEBsgvyC7wL\/AuADMAMhAzEDAEAiAzIDJAM0AyUDNQMmAzYDJwM3AygDOAMpAzkDKgM6AysDOwMsAzwDAC0DPQMAQC6DPoMgg3CDYYNxg2KDcoNjg3ODZIN0g2WDdYNmg3aDZ4N3g2iDeINpg3mDaoN6g2uDe4Nsg3yDbYN9g26DfoNAQC+Df4Nhg7GDooOyg6ODs4Okg7SDpYO1g6aDtoOng7eDqIO4g6mDuYOqg7qDq4O7g6yDvIOtg72DroO+g6+Dv4Ogg\/CD4YPxg+KD8oPjg\/OD5IP0g+WD9YPmg\/aD54P3g+iD+IPpg\/mD6oP6g+uD+4Psg\/yD7YP9g+6D\/oPAQC+D\/4PhhDGEIoQyhCOEM4QkhDSEJYQ1hCaENoQnhDeEKIQ4hCmEOYQqhDqEK4Q7hCyEPIQAQC2EPYQvhD+EIIRwhGGEcYRihHKEY4RzhGSEdIRAQCWEdYRnhHeEaIR4hGmEeYRqhHqEa4R7hGyEfIRthH2EboR+hG+Ef4RghLCEoYSxhKKEsoSjhLOEpIS0hKWEtYSmhLaEp4S3hKiEuISphLmEqoS6hKuEu4SshLyErYS9hK6EvoSvhL+EoITwhOGE8YTihPKE44TzhOSE9ITlhPWE5oT2hOeE94TohPiE6YT5hOqE+oTrhPuE7IT8hMBALYT9hO+E\/4TghTCFIYUxhSKFMoUjhTOFJIU0hSWFNYUmhTaFJ4U3hSiFOIUphTmFKoU6hSuFO4UshTyFLYU9hQBALoU+hSCFcIVhhXGFYoVyhWOFc4VkhXSFQEAlhXWFZ4V3hWiFeIVphXmFaoV6hWuFe4VshXyFbYV9hW6FfoVvhX+FYIWwhboA6gDwkCQDp4Gzj3cKEKuC0KwGdABqAFCHEKaSUKQEUKOEOYDQtyOAYgqAwABAAYARgiaBwZGBugHnggBAAYARgi6AQAExgKeDAEABABEBAEGAhoBAAYBA0YAFgEABgEDRnImhAEAJNIBgAMAJCoAhBMOBgQCBAIEAwAEAwEEAgQCDAIGAwAJAAMFCgMDBQAKAgwCCAMABAMBBAMCBAMABAIEAwQKBAMBDvBYjGTeYaBhTgLKJxZ8lj4BAAYARgiCCADKCKwKAQAGAEZKiAIADMICugWAAcABgAEGGuIHvgkBAAYARghK2gKaA27WQJAOngbkPACeCACeDAAgABYAoD0ArAoApAzmAgD+Z2iitQE4AoIJFggDAAYuChwGAMKEAYKEAfyDAQK6YI4jAgECCgJCSgCiCAECCgKCCA4CvAPQDEoAogwBAgoBCUokAgECCgEABkYBAUoArgIBAgoBAAZGAQFK1AO0BQECCgJCSgCyDgECCgJCSgCaCAECCgJCSgCoCAECCgBKABIBAgoCQkoAIgECCgBKEAIBAgoCuAvEDAC6EAECCgK8A8gERPIEnAxODqYFVBSUBQEAqArqCqoKqAVWFpQFAEKyCgDwCpQL4izuAoI2TAygA3AwpAOoAdwCjgNyMgLcAoQEdrgDIGAgAuQDAIQI\/AO8A5wEeDisA0gIuANUFL4DWhqoA0QEugNWFoIEXh6CBcABgAGyA04OugNWFqgDAIIExASEBAC6B9YElgSsA0QEugNWFrwDUhKwA0wMrAUq8gKoAwLiASrymgG2nQEBAQhICiAOTrwB7gEYlgGkAs4BjgISUhIC1AGiAkQEogPMAaoCAAroAZQF1AWYBQCAA8QD6AKsBYoDigLaArACVhYC4gKiBNwBnAGmA0wMAKwG6gOcBtwGnAYC9AK4A1YWugNeHqIDRgawA1IStANYGI4EbrYDAALKA4AEYCCqA04OngMArgTwBI4HDEwMAuwCugRKCooEVBS2BSbmAp4EBPwBAQCOAv7UAjqYCQoCNCaI9QIKHAbo9QLGhAECrPkD5PUCAqbqAYyLAQEBCEgKJhQQUK4B3gEYhgGiAUwMvgEAhALGAoYCqgKKAfgBjgJWFgLiAYYDbKoDGloaAtoDmgXIAYgBlgPAAYABnAQDAMACnAJgBBwC9BuSHAEBCEje1gJCsNYCAQEIAEgKsgMYAigMmAECFAQMJBwuDAiKAQkAAAbqCpANAQEIAEgKSAQCAAYOAQEISAqcAQwWCgIEADwCSBTQAdICrgMBAQhICjYOCALYAbgCAQEISO4GVJIHAQEIAEgKhAIABJQCCO4ElAUBAQgASApIBAIABg4BAQhICjoISJYBAwAKTAIKVMgBgAViIpwCWBiKAkYGvAJ4OJICTg6IAkQEhgIAngPgA6ADjgJGBpQCUBCuA+oB0h6EIQEBCEgKqgECCkw6eAoEKpwDBuwBmgIiYiIC0gGiAugCmgUApgLoAqgCpgJICLoD3AGwAhZWFgLsAYQDSAiKA1ISigNSEoQDTAyAA0YGvAJEBIYDTg6EA0wMkgTaAZoBugIAvgLAA4ADugIAQuouqDQDAAoCTgIMUAJCngIABkIARAYK\/mOMZgEBCEgKmAECQjJwCia8AUQEmAJUFK4CaiqGBMICkALmqwEmsPUBAwAo0vYBAwCO9gHK9gECuleengEBAQhICggEEBImugEABCYCCkwMGMAEigRgFoABWhsAJAAa\/gaGCAEBCEgKEAKAAwQSAgpMDALCDQSgG\/QaAwCwGuwaAogIshIBAQhI4toBVIbbAQEBCABICkgEAgxUPAEBCABICqYLAA4IkAIElAHuD7IPAQEIAEgKBgJCFBgIigICggEKLAS8AQY8DogCBJQBAoACBBAADtwOqA8BAQgASEKSAQMBzCKuO+o7AwCmO+I7AoARsCoBAQgASAoangIINAqAAQQOAhoKqASGAR4UEhDCDaINAQEIAEgKPh4IFCKqAgKEAwi4AQMAAAyEAQjwC4QOAQEIAEgKEgK0AgIoBgUABgIcBAIECAIQBAAICgK+AQaWAQYOAgoCEBwCEA7OAZoBAgpY6CasTOhMAwCkTOBMAp5MBAMASAwC2PoFnvsFDIwCCggCCgTmpgcCBgQGMAIGEAQmCgIGAgYCDgcAAwAEDAaEnwcSAwBWGgL+9gUDAIgCnPsFAwAIRp0GgAeqBQgAngGACMoCqBYnAKQBJiyCJZAO0A6QDso7kFnQWYZevASAASKGAxL8Z55q8gWeBwIFDAMABQQDAAUCAwAFBgMABQQDAAUKAwAFGAMABQsDAQUEVhpaHl4iYiZmKmoubjJyNnY6BAIFCQMABRIDAgUCAwAFEQMABQADAAUKAwEFAgMABQgCBAMABQ4DAAUdAwAFCwMABQUDAAUlAwAFDgMABQQDAAUIzIIBkIIByFaQDopI7nYGuAKKDJICjgHQFgFIvCMyng0yvAUCph6gBIQEgAEg6JABsgOuAr4jAQugwQEChEgAnAwApgUAlAWSBQCWBQCoBQCUBbAK3gWeBewuAII2AKADAQCMBTLaAgCGByDiA4gEALwDAJwEAKwDALgDAL4DAKgDALoDAIIEAIIFALIDALoDAKgDAIIEpAMAlgQArAMAugMAvAMAsAMBAKwFKq4DAA6uAQCkAxLSAQCiAgCABd4BAKwCAKwCAESEAwEAlAUW4AIAogQApgOCAwCEBhjyAgC4AwC6AwCiAwCwAwC0AwCWB8gDAIAEAKoDAJ4DAIwHDOoCALoEAIoEAQCcBr4BAkLu1AI6mAkKAjQmAQLkgQGQDojpA5QBABCeAQCiAQC+AQCEAgEAtAMW4AEAhAYa2AMAmgUAlgMBAZwEBByUC6AFAQBGsgamBAECmAECCtwBAIAFAJwCAIoCALwCAJICAIgCAIYCAJ4DAI4CAJQCAKoGAAIKLgEAkAQi0AFGAJoFAKYCAKYCAI4FFuoBAIQDAIoDAIoDAIQDAIADALwCAIYDAIQDAJIEALoCAL4CALoCziwBA4wyAgxQFIQCxAKMAgDMApoCTAJE7kKsRgACMAC8AQCYAgCuAgDSpwEmAQLS9wOQDp7fBagDKgwA6AMAgAQAgAE+lAUMwA0EAMbtBZAOlvoFjA2SBL4N1B8A7ogGkA6Etgb6GgCEM8QzhjyOBAEBjgHgJgDcxAaQDrCCBwjIkQeQDr6CB9j6BQEGzqgBAgYEBjACBhAEJgoCBgIGAg4HAAMABAwGmp8H1pEHkA6miQfpFigAIQEnAigGJwAoDSEAKAAnAAQABwAhACgBJwEoACcABACBAIQAgQCEAIEBwQCEAIEAhACBAIQAgQCEAIEBhAGBAIQAxADBAMQAhwAhACgBJwEoACcAAQCBAMEAgQCEAIEAhACBAIQBxACEAIEAhACBAIQAgQCEAMEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIcAIQAoACEAJwAhAScAoQEhAScAoQAhBaEAqACBAAAAoQCoACgIBwAhACgBJwAoACEAJwAoAycAhwAhACgBJwAoACEAJwAoAycAIQMoAAEAhACBAIQAgQDEAYQAgQDEAIQABACBAIQAgQDEAYQBxAAEAIQDoQCoAMEBqAAhAagAxAGhAqgAoQCoAMcAIQAoAScBKAAnAAQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAMQAgQDHACEAKAEnASgAJwCBAIQAgQCEAcQAhACBAIQAgQCEAAQAgQCEAsQBhACBAYQAgQCEAMEAhACBAIQAgQCEAIEBwQCBAcEAgQDHACEAKAEnASgAJwAEAIEAhACBAMEAxACEAIEAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQKEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMECgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBA4QAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwROEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCBAMEAgQDBAIEAwQCBAMEEhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQKBAMEAgQDBAoEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBA4QAwQCEAMEAhADBAIQAwQKEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCBAMEBhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQKEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEChADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAoQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQKEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQKEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEChADBAIQAwQCEAMEAhADBAIQAwQCEAMEChADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQCEAMEAhADBAIQAwQEAAMEAIQHEAYQBqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAMQAqAAoAKgApwAHACgBJwEoACcABACEAcQBhwAoAScBKAAnAAQAhADEAIQAhwAoACcCKAoHACgBJwAoACcAKAMnAIcAKAEnACgAJwAoAycAKAAEAIQAxACEAAQAhADEAIQBxABEAMRPKAGHACgBJwEoACcABACEAMQAhwAoAScBKAAnAIQBxACEAAQAhAHEAYQBhwAoAScBKAAnAAQAhADEAIQBxAIoDYQAKAGoAMQOqADEAKEBpwAHACgDJwEEACgAJwCHACgDJwEEAIQDKAAnAIcAKAMnACgDJwAoBicABwAoAycAKAEnAAQAKAMnAIcAKAMnACgBJwAEACgDJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwAoAScAhwAoAycBBAAoACcAhwAoAycAKAEnAAcAKAMnAQQAhAAnAIcAKAMnAQQAhAAnAIQAxAGEAMQBhADEBIQAxAGEAMQChAHEAoQAxAGEAMQBhADEAoQBxAGEAMQBhALEAYQAxAKEAMQBhADEAYQAxAGEAMQBhADEAYQAxAGEAMQBhADEAYQAxAGEAMQBhADEA4QAxAKEAMQBhADEAYQAxAGEAMQBhADEAoQCxAGHACgCJwIEAIQBxAKEAMQBhALEAYQAxAGEAMQBhAHEAIQAxAaEAMQChAHEAYQAxAGEAMQBhADEAoQBxAGEAMQBhADEAYQAxAGEAMQBhADEAYQAxAGEAcQAhADEAYQAxAGEAMQDhALEAYQAxAGEAMQBhADEAoQCxA6oAMQCoQGHACgCJwIEAIQCxAKEAMQBhADEA4QAxAKEAcQBhADEAYQCxAGEAMQBhADEAYQAxAOEAcQChACHACgCJwKoAIcAKAInASgAJwAEAIQRxACEAIcAKAInASgAJwAEAKgBKAEHACgCJwIEAIQFxAKEAcQAhwAoAicCBACEA4cAKAInAqgAhwAoAicBKAAnAAQAhADEAIQChwAoAicBKAAnAAQAqAEoAQcAKAInAgQAhAHEB4QAxAGEAMQBhADEAYQAxAGEAMQBhADEAYQAxAOEAMQBhADEAYQAxAGEAIcAKAInAgQAhALEA4QAxAKEAsQBhADEAIQAxAOEAMQBhADEAYQCxAGEAMQBhADEAYQAxAGEAMQBhADEAYQAxAGEAMQBhADEAYQAxAGEAMQDhADEAoQAxBPHACgCJwIEAIQBxAKEAMQBhADEAYQAxAGEAMQBhAHEBagAxAKhAYcAKAInAgQAhAXEAIQDxASEAMQBhADEAIQBxACEAIcAKAInAgQAhAbEAYQAxAKoAMQCoQGHACgCJwKoAIcAKAInASgAJwAEAKgBKACEAIcAKAInASgAJwAEAIQAxACEBIcAKAInASgAJwAEAIQBxACEE8QAhACHACgCJwEoACcAhATEAagAxAKhAccAKAInASgAJwAEAIQQxwAoAicBKAAnAAQAhAvEAIQCxwAoAicBKAAnAAQAhBHEAIQPxAaoAMQCoQHEAKgAxAKhAcQiqADEAqgDpwCoAqcABACopcoCjb4Cc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlZG9jdW1lbnRjb250ZW50ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YWFkdmFuY2VkX3Nlb19kZXNjcmlwdGlvbmpldHBhY2tfc2VvX2h0bWxfdGl0bGVqZXRwYWNrX3Nlb19ub2luZGV4amV0cGFja19wb3N0X3dhc19ldmVyX3B1Ymxpc2hlZF9qZXRwYWNrX25ld3NsZXR0ZXJfYWNjZXNzX2pldHBhY2tfZG9udF9lbWFpbF9wb3N0X3RvX3N1YnNfamV0cGFja19uZXdzbGV0dGVyX3RpZXJfaWRfamV0cGFja19tZW1iZXJzaGlwc19jb250YWluc19wYXl3YWxsZWRfY29udGVudF9qZXRwYWNrX21lbWJlcnNoaXBzX2NvbnRhaW5zX3BhaWRfY29udGVudGZvb3Rub3Rlc2pldHBhY2tfcHVibGljaXplX21lc3NhZ2VqZXRwYWNrX3B1YmxpY2l6ZV9mZWF0dXJlX2VuYWJsZWRqZXRwYWNrX3NvY2lhbF9wb3N0X2FscmVhZHlfc2hhcmVkamV0cGFja19zb2NpYWxfb3B0aW9uc2RvY3VtZW50Y2F0ZWdvcmllc2RvY3VtZW50dGFnc2RvY3VtZW50YmxvY2tzRGV2ZWxvcGVyIGRvY3VtZW50YXRpb24gcmVzdG9yZWQuY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzRm9yIHRob3NlIHVuYXdhcmUsIHRoZSBkb2N1bWVudGF0aW9uIGF0IGh0dHBzOi8vZGV2ZWxvcGVyLndvcmRwcmVzcy5vcmcvcmVmZXJlbmNlIGhhc27igJl0IGJlZW4gdXBkYXRlZCBzaW5jZSBXb3JkUHJlc3MgNi40IOKAlCB0aGF04oCZcyBvdmVyIHR3byB5ZWFycyBhZ28hIFRvZGF5LCB0aGFua2Z1bGx5LCB0aGlzIHBvc3QgaXMgYW5ub3VuY2luZyB0aGF0IHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpcyBub3cgdWF0ZSBhcyBvZiBXb3JkUHJlc3MgNi45LjEucGRkY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzV29yZFByZXNzIGhhcyBzZWVuIHNpZ25pZmljYW50IGNoYW5nZSBzaW5jZSB0aGUgZG9jdW1lbnRhdGluIG9nZW5lcmF0aW9uIHByb2Nlc3Mgc3RvcHBlZCB3b3JraW5nLCBzbyBpZiB5b3UgZm91bmQgdGhhdCBzb21ldGhpbmcgd2FzIG1pc3NpbmcgdGhlbiBpdCB3YXNu4oCZdCBqdXN0IHlvdS4gVGhvc2UgbmV3IGludGVyZmFjZXMsIGNsYXNzZXMsIG1ldGhvZHMsIGZ1bmN0aW9ucywgYW5kIGhvb2tzIHNob3VsZCBiZSB0aGVyZSBub3cuIEZ1cnRoZXIsIGJlZm9yZSB0aGUgcHJvY2VzcyBzdG9wcGVkIGVudGlyZWx5LCBzb21ldGhpbmcgaGFkIGJlZW4gbGVhZGluZyB0byBjb2RlIGJsb2NrcyBzaG93aW5nIHRoZSB3cm9uZyBzb3VyY2UgZm9yIGVhY2ggaXRlbSBpbiB0aGUgcmVmZXJlbmNlLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc2Jsb2JhbHRjYXB0aW9uaWRsaW5rdXJsaHJlZnNpemVTbHVnbGlua0Rlc3RpbmF0aW9uaW1hZ2VzaWRzbmF2aWdhdGlvbkJ1dHRvblR5cGVzaG9ydENvZGVUcmFuc2Zvcm1zaW1hZ2VDcm9wcmFuZG9tT3JkZXJmaXhlZEhlaWdodGFsbG93UmVzaXplYXNwZWN0UmF0aW9jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc3VybGFsdGNhcHRpb25ocmVmaWRzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXN1cmxhbHRjYXB0aW9uaHJlZmlkc2l6ZVNsdWdsaW5rRGVzdGluYXRpb25pbm5lckJsb2Nrc2xpbmtmdWxsVXJsbGlua2Z1bGxVcmxsaW5rVG9Tb3VyY2UgYmxvY2sgZm9yIHdwX2ludGVyYWN0aXZpdHkoKTxjb2RlPjwvY29kZT4gb3ZlciB0aGUgcGFzdCB0d28geWVhcnMuU291cmNlIGJsb2NrIGZvciB3cF9pbnRlcmFjdGl2aXR5KCk8Y29kZT48L2NvZGU+IGFmdGVyIHRlIHVwZGF0ZS5oPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkZvciB0aG9zZSB1bmF3YXJlLCB0aGUgZG9jdW1lbnRhdGlvbiBhdCBodHRwczovL2RldmVsb3Blci53b3JkcHJlc3Mub3JnL3JlZmVyZW5jZSBoYXNu4oCZdCBiZWVuIHVwZGF0ZWQgc2luY2UgV29yZFByZXNzIDYuNCDigJQgdGhhdOKAmXMgb3ZlciB0d28geWVhcnMgYWdvISBUb2RheSwgdGhhbmtmdWxseSwgdGhpcyBwb3N0IGlzIGFubm91bmNpbmcgdGhhdCB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gaXMgbm93IHVwZGF0ZWQgYXMgb2YgV29yZFByZXNzIDYuOS4xLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPldvcmRQcmVzcyBoYXMgc2VlbiBzaWduaWZpY2FudCBjaGFuZ2Ugc2luY2UgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiBwcm9jZXNzIHN0b3BwZWQgd29ya2luZywgc28gaWYgeW91IGZvdW5kIHRoYXQgc29tZXRoaW5nIHdhcyBtaXNzaW5nIHRoZW4gaXQgd2FzbuKAmXQganVzdCB5b3UuIFRob3NlIG5ldyBpbnRlcmZhY2VzLCBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIGFuZCBob29rcyBzaG91bGQgYmUgdGhlcmUgbm93LiBGdXJ0aGVyLCBiZWZvcmUgdGhlIHByb2Nlc3Mgc3RvcHBlZCBlbnRpcmVseSwgc29tZXRoaW5nIGhhZCBiZWVuIGxlYWRpbmcgdG8gY29kZSBibG9ja3Mgc2hvd2luZyB0aGUgd3Jvbmcgc291cmNlIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHJlZmVyZW5jZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6Z2FsbGVyeSB7ImxpbmtUbyI6ImZpbGUifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2stZ2FsbGVyeSBoYXMtbmVzdGVkLWltYWdlcyBjb2x1bW5zLWRlZmF1bHQgaXMtY3JvcHBlZCI+PCEtLSB3cDppbWFnZSB7ImlkIjoxMjE2NTcsInNpemVTbHVnIjoibGFyZ2UiLCJsaW5rRGVzdGluYXRpb24iOiJtZWRpYSJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMi5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzNTMtMS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjU3Ii8+PC9hPjxmaWdjYXB0aW9uIGNsYXNzPSJ3cC1lbGVtZW50LWNhcHRpb24iPlNvdXJjZSBibG9jayBmb3IgPGNvZGU+d3BfaW50ZXJhY3Rpdml0eSgpPC9jb2RlPiBvdmVyIHRoZSBwYXN0IHR3byB5ZWFycy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDppbWFnZSB7ImlkIjoxMjE2NTgsInNpemVTbHVnIjoibGFyZ2UiLCJsaW5rRGVzdGluYXRpb24iOiJtZWRpYSJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMy5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzNzktMS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjU4Ii8+PC9hPjxmaWdjYXB0aW9uIGNsYXNzPSJ3cC1lbGVtZW50LWNhcHRpb24iPlNvdXJjZSBibG9jayBmb3IgPGNvZGU+d3BfaW50ZXJhY3Rpdml0eSgpPC9jb2RlPiBhZnRlciB0aGUgdXBkYXRlLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT4KPCEtLSAvd3A6aW1hZ2UgLS0+PC9maWd1cmU+CjwhLS0gL3dwOmdhbGxlcnkgLS0+ZG9jdW1lbnRNZXRhc2F2ZWRBdGRvY3VtZW50TWV0YXNhdmVkQnkgIGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc1RoaXMgd29yayB3YXMgdGhlIHJlc3VsdCBvZiBjb2xsYWJvcmF0aW9uIGJldHdlZW4gbWFueSBwZW9wbGUsIG1vc3Qgb2Ygd2hvbSBoYXZlIG5ldmVyIHdvcmtlZCB3aXRoIHRoaXMgcHJvY2VzcyBpbiB0aGUgcGFzdC4gQGpvaG5iaWxsaW9uLCBAam9uc3VycmVsbCwgYW5kIEB0bWRrIGFsbCB3b3JrZWQgb24gZGlmZmVyZW50IGFwcHJvYWNoZXMgdG8gcmVzdG9yaW5nIHRoZSBhYmlsaXR5IHRvIHBhcnNlIFdvcmRQcmVzc+KAmSBzb3VyY2UgY29kZTsgQGRkMzIgYW5kIEBjb2ZmZWUyY29kZSBtYWRlIHN1cmUgdGhhdCB0aGUgdXBkYXRlcyByZWFjaGVkIHRoZSBwdWJsaWMgd2Vic2l0ZWFuZCBjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3M7IGFuZCBvZiBjb3Vyc2UsIG51bWVyb3VzIHBlb3BsZSBpbiB0aGUgI2RvY3MgdGVhbSByZXBvcnRkIGFuZCBldHJpYWdlZCBidWcgcmVwb3J0cyB0aGF0IHdlcmUgc3ltcHRvbXMgb2YgdGhpcyBwcm9jZXNzIGJyZWFrZG93bi5UaGVyZSBpcyBzdGlsbCBzaWduaWZpY2FudCB3b3JrIHRvIGRvLCBhcyB0aGVyZSBpcyBubyB3YXkgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIG5vdGUgdG8oKSBnZW5lcmF0ZSB0IGZvciB0aGUgdXBjb21pbmcgV29yZFByZXNzIDcuMCByZWxlYXNlLCBidXQgYXMgdGhlIG5ldyBpc3N1ZXMgYXJlIGlyb25lZCBvdXRjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NUaCwgeW91IGNhbiBleHBlY3QgdGhlIHVwaGUgZG9jdW1lbnRhdGlvbmRhdGVzIHRvIGNvbWUgbXVjaCBzb29uZXIgdGhhbiAyMDI4IGVyZSBzdGlsbCByZW1haW4gYSBudW1iZXIgb2Yga25vd24gaXNzdWVzLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBQSFBTdGFuIHR5cGUgYW5ub3RhdGlvbnMuIFdvcmsgaXMgb25nb2luZyB0byBpbXByb3ZlIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHRyeSB0byByZWR1Y2UgdGhlIGZlZWRiYWNrIGxvb3AgYmV0d2VlbiBtYWtpbmcgY29kZSBjaGFuZ2VzIGFuZCBzZWVpbmcgdGhvc2UgcmVmbGVjdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9ubGluZS5zdGF0ZXZlcnNpb25zdGF0ZXZlcnNpb25UaGUgc3RhbGUgc291cmNlIGJsb2NrIHN0YXJ0ZWQgYW5kIGVuZGVkIGluIHRoZSBtaWRkbGUgb2YgYSBEb2NCbG9jayBjb21tZW50LCBzaG93aW5nIG5vdGhpbmcgb2YgdGhlIGFzc29jaWF0ZWQgZnVuY3Rpb24uSW4gdGhlIHVwZGF0ZXMgdGhlIHNvdXJjZSBibG9jayBzdGFydHMgYW5kIGVuZHMgd2l0aCB0aGUgc3ltYm9sIGRlZmluaXRpb24gYXMgZXhwZWN0ZWQuCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhpcyB3b3JrIHdhcyB0aGUgcmVzdWx0IG9mIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBtYW55IHBlb3BsZSwgbW9zdCBvZiB3aG9tIGhhdmUgbmV2ZXIgd29ya2VkIHdpdGggdGhpcyBwcm9jZXNzIGluIHRoZSBwYXN0LiBAam9obmJpbGxpb24sIEBqb25zdXJyZWxsLCBhbmQgQHRtZGsgYWxsIHdvcmtlZCBvbiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byByZXN0b3JpbmcgdGhlIGFiaWxpdHkgdG8gcGFyc2UgV29yZFByZXNz4oCZIHNvdXJjZSBjb2RlOyBhbmQgQGRkMzIgYW5kIEBjb2ZmZWUyY29kZSBtYWRlIHN1cmUgdGhhdCB0aGUgdXBkYXRlcyByZWFjaGVkIHRoZSBwdWJsaWMgd2Vic2l0ZTsgYW5kIG9mIGNvdXJzZSwgbnVtZXJvdXMgcGVvcGxlIGluIHRoZSAjZG9jcyB0ZWFtIHJlcG9ydGVkIGFuZCB0cmlhZ2VkIGJ1ZyByZXBvcnRzIHRoYXQgd2VyZSBzeW1wdG9tcyBvZiB0aGlzIHByb2Nlc3MgYnJlYWtkb3duLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXJlIGlzIHN0aWxsIHNpZ25pZmljYW50IHdvcmsgdG8gZG8sIGFzIHRoZXJlIGlzIG5vIHdheSAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIG5vdGUpIHRvIGdlbmVyYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgdXBjb21pbmcgV29yZFByZXNzIDcuMCByZWxlYXNlLCBidXQgYXMgdGhlIG5ldyBpc3N1ZXMgYXJlIGlyb25lZCBvdXQsIHlvdSBjYW4gZXhwZWN0IHRoZSB1cGRhdGVzIHRvIGNvbWUgbXVjaCBzb29uZXIgdGhhbiAyMDI4IPCfmIk8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGVyZSBzdGlsbCByZW1haW4gYSBudW1iZXIgb2Yga25vd24gaXNzdWVzLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBQSFBTdGFuIHR5cGUgYW5ub3RhdGlvbnMuIFdvcmsgaXMgb25nb2luZyB0byBpbXByb3ZlIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHRyeSB0byByZWR1Y2UgdGhlIGZlZWRiYWNrIGxvb3AgYmV0d2VlbiBtYWtpbmcgY29kZSBjaGFuZ2VzIGFuZCBzZWVpbmcgdGhvc2UgcmVmbGVjdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9ubGluZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLW9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudO+\/vW9yaWdpbmFsQ29udGVudGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NGb3IgdGhvc2UgdW5hd2FyZSwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZWZlcmVuY2UgaGFzbuKAmXQgYmVlbiB1cGRhdGVkIHNpbmNlIFdvcmRQcmVzcyA2LjQg4oCUIHRoYXTigJlzIG92ZXIgdHdvIHllYXJzIGFnbyEgVG9kYXksIHRoYW5rZnVsbHksIHRoaXMgcG9zdCBpcyBhbm5vdW5jaW5nIHRoYXQgdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGlzIG5vdyB1YXRlIGFzIG9mIFdvcmRQcmVzcyA2LjkuMS5wZGRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzV29yZFByZXNzIGhhcyBzZWVuIHNpZ25pZmljYW50IGNoYW5nZSBzaW5jZSB0aGUgZG9jdW1lbnRhdGluIG9nZW5lcmF0aW9uIHByb2Nlc3Mgc3RvcHBlZCB3b3JraW5nLCBzbyBpZiB5b3UgZm91bmQgdGhhdCBzb21ldGhpbmcgd2FzIG1pc3NpbmcgdGhlbiBpdCB3YXNu4oCZdCBqdXN0IHlvdS4gVGhvc2UgbmV3IGludGVyZmFjZXMsIGNsYXNzZXMsIG1ldGhvZHMsIGZ1bmN0aW9ucywgYW5kIGhvb2tzIHNob3VsZCBiZSB0aGVyZSBub3cuIEZ1cnRoZXIsIGJlZm9yZSB0aGUgcHJvY2VzcyBzdG9wcGVkIGVudGlyZWx5LCBzb21ldGhpbmcgaGFkIGJlZW4gbGVhZGluZyB0byBjb2RlIGJsb2NrcyBzaG93aW5nIHRoZSB3cm9uZyBzb3VyY2UgZm9yIGVhY2ggaXRlbSBpbiB0aGUgcmVmZXJlbmNlLmlzVmFsaWRhdHRyaWJ1dGVzaW5uZXJCbG9ja3NjYXB0aW9uc2l6ZVNsdWduYW1laW1hZ2VzaWRzbmF2aWdhdGlvbkJ1dHRvblR5cGVzaG9ydENvZGVUcmFuc2Zvcm1zaW1hZ2VDcm9wcmFuZG9tT3JkZXJmaXhlZEhlaWdodGFsbG93UmVzaXplYXNwZWN0UmF0aW9pc1ZhbGlkbmFtZWF0dHJpYnV0ZXN1cmxjYXB0aW9uaHJlZmlkc2l6ZVNsdWdsaW5rRGVzdGluYXRpb25pbm5lckJsb2Nrc2lzVmFsaWRuYW1lYXR0cmlidXRlc3VybGNhcHRpb25ocmVmaWRzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmlubmVyQmxvY2tzbGlua1RvU291cmNlIGJsb2NrIGZvciB3cF9pbnRlcmFjdGl2aXR5KCk8Y29kZT48L2NvZGU+IG92ZXIgdGhlIHBhc3QgdHdvIHllYXJzLlNvdXJjZSBibG9jayBmb3Igd3BfaW50ZXJhY3Rpdml0eSgpPGNvZGU+PC9jb2RlPiBhZnRlciB0ZSB1cGRhdGUuaDwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Gb3IgdGhvc2UgdW5hd2FyZSwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZWZlcmVuY2UgaGFzbuKAmXQgYmVlbiB1cGRhdGVkIHNpbmNlIFdvcmRQcmVzcyA2LjQg4oCUIHRoYXTigJlzIG92ZXIgdHdvIHllYXJzIGFnbyEgVG9kYXksIHRoYW5rZnVsbHksIHRoaXMgcG9zdCBpcyBhbm5vdW5jaW5nIHRoYXQgdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGlzIG5vdyB1cGRhdGVkIGFzIG9mIFdvcmRQcmVzcyA2LjkuMS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Xb3JkUHJlc3MgaGFzIHNlZW4gc2lnbmlmaWNhbnQgY2hhbmdlIHNpbmNlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gcHJvY2VzcyBzdG9wcGVkIHdvcmtpbmcsIHNvIGlmIHlvdSBmb3VuZCB0aGF0IHNvbWV0aGluZyB3YXMgbWlzc2luZyB0aGVuIGl0IHdhc27igJl0IGp1c3QgeW91LiBUaG9zZSBuZXcgaW50ZXJmYWNlcywgY2xhc3NlcywgbWV0aG9kcywgZnVuY3Rpb25zLCBhbmQgaG9va3Mgc2hvdWxkIGJlIHRoZXJlIG5vdy4gRnVydGhlciwgYmVmb3JlIHRoZSBwcm9jZXNzIHN0b3BwZWQgZW50aXJlbHksIHNvbWV0aGluZyBoYWQgYmVlbiBsZWFkaW5nIHRvIGNvZGUgYmxvY2tzIHNob3dpbmcgdGhlIHdyb25nIHNvdXJjZSBmb3IgZWFjaCBpdGVtIGluIHRoZSByZWZlcmVuY2UuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmdhbGxlcnkgeyJsaW5rVG8iOiJmaWxlIn0gLS0+CjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWdhbGxlcnkgaGFzLW5lc3RlZC1pbWFnZXMgY29sdW1ucy1kZWZhdWx0IGlzLWNyb3BwZWQiPjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTIxNjU3LCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibWVkaWEifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTIucG5nIj48aW1nIHNyYz0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4MzUzLTEucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTEyMTY1NyIvPjwvYT48ZmlnY2FwdGlvbiBjbGFzcz0id3AtZWxlbWVudC1jYXB0aW9uIj5Tb3VyY2UgYmxvY2sgZm9yIDxjb2RlPndwX2ludGVyYWN0aXZpdHkoKTwvY29kZT4gb3ZlciB0aGUgcGFzdCB0d28geWVhcnMuPC9maWdjYXB0aW9uPjwvZmlndXJlPgo8IS0tIC93cDppbWFnZSAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTIxNjU4LCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibWVkaWEifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTMucG5nIj48aW1nIHNyYz0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4Mzc5LTEucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTEyMTY1OCIvPjwvYT48ZmlnY2FwdGlvbiBjbGFzcz0id3AtZWxlbWVudC1jYXB0aW9uIj5Tb3VyY2UgYmxvY2sgZm9yIDxjb2RlPndwX2ludGVyYWN0aXZpdHkoKTwvY29kZT4gYWZ0ZXIgdGhlIHVwZGF0ZS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPjwvZmlndXJlPgo8IS0tIC93cDpnYWxsZXJ5IC0tPiAgYWx0YWx0aXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc1RoaXMgd29yayB3YXMgdGhlIHJlc3VsdCBvZiBjb2xsYWJvcmF0aW9uIGJldHdlZW4gbWFueSBwZW9wbGUsIG1vc3Qgb2Ygd2hvbSBoYXZlIG5ldmVyIHdvcmtlZCB3aXRoIHRoaXMgcHJvY2VzcyBpbiB0aGUgcGFzdC4gQGpvaG5iaWxsaW9uLCBAam9uc3VycmVsbCwgYW5kIEB0bWRrIGFsbCB3b3JrZWQgb24gZGlmZmVyZW50IGFwcHJvYWNoZXMgdG8gcmVzdG9yaW5nIHRoZSBhYmlsaXR5IHRvIHBhcnNlIFdvcmRQcmVzc+KAmSBzb3VyY2UgY29kZTsgQGRkMzIgYW5kIEBjb2ZmZWUyY29kZSBtYWRlIHN1cmUgdGhhdCB0aGUgdXBkYXRlcyByZWFjaGVkIHRoZSBwdWJsaWMgd2Vic2l0ZWFuZCBpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzOyBhbmQgb2YgY291cnNlLCBudW1lcm91cyBwZW9wbGUgaW4gdGhlICNkb2NzIHRlYW0gcmVwb3J0ZCBhbmQgZXRyaWFnZWQgYnVnIHJlcG9ydHMgdGhhdCB3ZXJlIHN5bXB0b21zIG9mIHRoaXMgcHJvY2VzcyBicmVha2Rvd24uVGhlcmUgaXMgc3RpbGwgc2lnbmlmaWNhbnQgd29yayB0byBkbywgYXMgdGhlcmUgaXMgbm8gd2F5IGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyBub3RlIHRvKCkgZ2VuZXJhdGUgdCBmb3IgdGhlIHVwY29taW5nIFdvcmRQcmVzcyA3LjAgcmVsZWFzZSwgYnV0IGFzIHRoZSBuZXcgaXNzdWVzIGFyZSBpcm9uZWQgb3V0aXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc1RoLCB5b3UgY2FuIGV4cGVjdCB0aGUgdXBoZSBkb2N1bWVudGF0aW9uZGF0ZXMgdG8gY29tZSBtdWNoIHNvb25lciB0aGFuIDIwMjggZXJlIHN0aWxsIHJlbWFpbiBhIG51bWJlciBvZiBrbm93biBpc3N1ZXMsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIFBIUFN0YW4gdHlwZSBhbm5vdGF0aW9ucy4gV29yayBpcyBvbmdvaW5nIHRvIGltcHJvdmUgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2VzcyBhbmQgdHJ5IHRvIHJlZHVjZSB0aGUgZmVlZGJhY2sgbG9vcCBiZXR3ZWVuIG1ha2luZyBjb2RlIGNoYW5nZXMgYW5kIHNlZWluZyB0aG9zZSByZWZsZWN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb25saW5lLlRoZSBzdGFsZSBzb3VyY2UgYmxvY2sgc3RhcnRlZCBhbmQgZW5kZWQgaW4gdGhlIG1pZGRsZSBvZiBhIERvY0Jsb2NrIGNvbW1lbnQsIHNob3dpbmcgbm90aGluZyBvZiB0aGUgYXNzb2NpYXRlZCBmdW5jdGlvbi5JbiB0aGUgdXBkYXRlcyB0aGUgc291cmNlIGJsb2NrIHN0YXJ0cyBhbmQgZW5kcyB3aXRoIHRoZSBzeW1ib2wgZGVmaW5pdGlvbiBhcyBleHBlY3RlZC4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGlzIHdvcmsgd2FzIHRoZSByZXN1bHQgb2YgY29sbGFib3JhdGlvbiBiZXR3ZWVuIG1hbnkgcGVvcGxlLCBtb3N0IG9mIHdob20gaGF2ZSBuZXZlciB3b3JrZWQgd2l0aCB0aGlzIHByb2Nlc3MgaW4gdGhlIHBhc3QuIEBqb2huYmlsbGlvbiwgQGpvbnN1cnJlbGwsIGFuZCBAdG1kayBhbGwgd29ya2VkIG9uIGRpZmZlcmVudCBhcHByb2FjaGVzIHRvIHJlc3RvcmluZyB0aGUgYWJpbGl0eSB0byBwYXJzZSBXb3JkUHJlc3PigJkgc291cmNlIGNvZGU7IGFuZCBAZGQzMiBhbmQgQGNvZmZlZTJjb2RlIG1hZGUgc3VyZSB0aGF0IHRoZSB1cGRhdGVzIHJlYWNoZWQgdGhlIHB1YmxpYyB3ZWJzaXRlOyBhbmQgb2YgY291cnNlLCBudW1lcm91cyBwZW9wbGUgaW4gdGhlICNkb2NzIHRlYW0gcmVwb3J0ZWQgYW5kIHRyaWFnZWQgYnVnIHJlcG9ydHMgdGhhdCB3ZXJlIHN5bXB0b21zIG9mIHRoaXMgcHJvY2VzcyBicmVha2Rvd24uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlcmUgaXMgc3RpbGwgc2lnbmlmaWNhbnQgd29yayB0byBkbywgYXMgdGhlcmUgaXMgbm8gd2F5IChhdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMgbm90ZSkgdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSB1cGNvbWluZyBXb3JkUHJlc3MgNy4wIHJlbGVhc2UsIGJ1dCBhcyB0aGUgbmV3IGlzc3VlcyBhcmUgaXJvbmVkIG91dCwgeW91IGNhbiBleHBlY3QgdGhlIHVwZGF0ZXMgdG8gY29tZSBtdWNoIHNvb25lciB0aGFuIDIwMjgg8J+YiTwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXJlIHN0aWxsIHJlbWFpbiBhIG51bWJlciBvZiBrbm93biBpc3N1ZXMsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIFBIUFN0YW4gdHlwZSBhbm5vdGF0aW9ucy4gV29yayBpcyBvbmdvaW5nIHRvIGltcHJvdmUgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2VzcyBhbmQgdHJ5IHRvIHJlZHVjZSB0aGUgZmVlZGJhY2sgbG9vcCBiZXR3ZWVuIG1ha2luZyBjb2RlIGNoYW5nZXMgYW5kIHNlZWluZyB0aG9zZSByZWZsZWN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb25saW5lLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC1jbGllbnRJZG9yaWdpbmFsQ29udGVudGNsaWVudElkb3JpZ2luYWxDb250ZW50Y2xpZW50SWRvcmlnaW5hbENvbnRlbnRjbGllbnRJZG9yaWdpbmFsQ29udGVudGNsaWVudElkb3JpZ2luYWxDb250ZW50Y2xpZW50SWRvcmlnaW5hbENvbnRlbnRjbGllbnRJZG9yaWdpbmFsQ29udGVudO+\/vWNsaWVudElkb3JpZ2luYWxDb250ZW50LT4KCjwhLS0gd3A6bW9yZSAtLT4KPCEtLW1vcmUtLT4KPCEtLSAvd3A6bW9yZSAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5UaW1lbGluZTwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5BdWd1c3QgMSwgMjAyMyDigJQgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNTYzNDUiPls1NjM0NV08L2E+IGludHJvZHVjZXMgYSBjb2RlLXN0eWxpbmcgY2hhbmdlIHRvIHJlcGxhY2UgPGNvZGU+YXJyYXlfa2V5X2V4aXN0cygpPC9jb2RlPiB3aXRoIDxjb2RlPmlzc2V0KCk8L2NvZGU+LiBUaGlzIHdhcyBrbm93biB0byBiZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BocGRvYy1wYXJzZXIvaXNzdWVzLzE5OSI+dW5zdXBwb3J0ZWQgYnkgdGhlIGRvY3MgcGFyc2VyPC9hPiBidXQgdGhlcmUgd2FzIG5vIGluZGljYXRpb24gdGhhdCB0aGUgdXBkYXRpbmcgcHJvY2VzcyB3YXMgYnJva2VuLiBCZWNhdXNlIG9mIGEgcGFyc2luZyBlcnJvciB0aGUgcHJvY2VzcyB3YXMgYmxvY2tlZDsgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIG5lZWRlZCB0byB1cGRhdGUgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jeSBvbiA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiB3aGljaCBpcyB3aGF0IHR1cm5zIHNvdXJjZSBjb2RlIGludG8gYSBzdHJ1Y3R1cmUgdG8gYmUgYW5hbHl6ZWQuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5BcHJpbCAxNSwgMjAyNCDigJQgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNTgwMDkiPls1ODAwOV08L2E+IGludHJvZHVjZXMgdHlwZSBhbm5vdGF0aW9ucyBmb3Igb3B0aW9uYWwgdHlwZXMsIDxjb2RlPj9hcnJheTwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5hcnJheTwvY29kZT4sIHdoaWNoIHRoZSBwYXJzZXIgY291bGQgbm90IDwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tLS1jbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRGb3IgdGhvc2UgdW5hd2FyZSwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZWZlcmVuY2UgaGFzbuKAmXQgYmVlbiB1cGRhdGVkIHNpbmNlIFdvcmRQcmVzcyA2LjQg4oCUIHRoYXTigJlzIG92ZXIgdHdvIHllYXJzIGFnbyEgVG9kYXksIHRoYW5rZnVsbHksIHRoaXMgcG9zdCBpcyBhbm5vdW5jaW5nIHRoYXQgdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGlzIG5vdyB1cGRhdGVkIGFzIG9mIFdvcmRQcmVzcyA2LjkuMS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRXb3JkUHJlc3MgaGFzIHNlZW4gc2lnbmlmaWNhbnQgY2hhbmdlIHNpbmNlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gcHJvY2VzcyBzdG9wcGVkIHdvcmtpbmcsIHNvIGlmIHlvdSBmb3VuZCB0aGF0IHNvbWV0aGluZyB3YXMgbWlzc2luZyB0aGVuIGl0IHdhc27igJl0IGp1c3QgeW91LiBUaG9zZSBuZXcgaW50ZXJmYWNlcywgY2xhc3NlcywgbWV0aG9kcywgZnVuY3Rpb25zLCBhbmQgaG9va3Mgc2hvdWxkIGJlIHRoZXJlIG5vdy4gRnVydGhlciwgYmVmb3JlIHRoZSBwcm9jZXNzIHN0b3BwZWQgZW50aXJlbHksIHNvbWV0aGluZyBoYWQgYmVlbiBsZWFkaW5nIHRvIGNvZGUgYmxvY2tzIHNob3dpbmcgdGhlIHdyb25nIHNvdXJjZSBmb3IgZWFjaCBpdGVtIGluIHRoZSByZWZlcmVuY2UuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNpbWFnZXNpZHNuYXZpZ2F0aW9uQnV0dG9uVHlwZXNob3J0Q29kZVRyYW5zZm9ybXNjYXB0aW9uaW1hZ2VDcm9wcmFuZG9tT3JkZXJmaXhlZEhlaWdodGxpbmtUb3NpemVTbHVnYWxsb3dSZXNpemVhc3BlY3RSYXRpb2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXN1cmxhbHRjYXB0aW9uU291cmNlIGJsb2NrIGZvciA8Y29kZT53cF9pbnRlcmFjdGl2aXR5KCk8L2NvZGU+IG92ZXIgdGhlIHBhc3QgdHdvIHllYXJzLmhyZWZpZHNpemVTbHVnbGlua0Rlc3RpbmF0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc3VybGFsdGNhcHRpb25Tb3VyY2UgYmxvY2sgZm9yIDxjb2RlPndwX2ludGVyYWN0aXZpdHkoKTwvY29kZT4gYWZ0ZXIgdGhlIHVwZGF0ZS5ocmVmaWRzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VGhpcyB3b3JrIHdhcyB0aGUgcmVzdWx0IG9mIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBtYW55IHBlb3BsZSwgbW9zdCBvZiB3aG9tIGhhdmUgbmV2ZXIgd29ya2VkIHdpdGggdGhpcyBwcm9jZXNzIGluIHRoZSBwYXN0LiBAam9obmJpbGxpb24sIEBqb25zdXJyZWxsLCBhbmQgQHRtZGsgYWxsIHdvcmtlZCBvbiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byByZXN0b3JpbmcgdGhlIGFiaWxpdHkgdG8gcGFyc2UgV29yZFByZXNz4oCZIHNvdXJjZSBjb2RlOyBhbmQgQGRkMzIgYW5kIEBjb2ZmZWUyY29kZSBtYWRlIHN1cmUgdGhhdCB0aGUgdXBkYXRlcyByZWFjaGVkIHRoZSBwdWJsaWMgd2Vic2l0ZTsgYW5kIG9mIGNvdXJzZSwgbnVtZXJvdXMgcGVvcGxlIGluIHRoZSAjZG9jcyB0ZWFtIHJlcG9ydGVkIGFuZCB0cmlhZ2VkIGJ1ZyByZXBvcnRzIHRoYXQgd2VyZSBzeW1wdG9tcyBvZiB0aGlzIHByb2Nlc3MgYnJlYWtkb3duLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZXJlIGlzIHN0aWxsIHNpZ25pZmljYW50IHdvcmsgdG8gZG8sIGFzIHRoZXJlIGlzIG5vIHdheSAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIG5vdGUpIHRvIGdlbmVyYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgdXBjb21pbmcgV29yZFByZXNzIDcuMCByZWxlYXNlLCBidXQgYXMgdGhlIG5ldyBpc3N1ZXMgYXJlIGlyb25lZCBvdXQsIHlvdSBjYW4gZXhwZWN0IHRoZSB1cGRhdGVzIHRvIGNvbWUgbXVjaCBzb29uZXIgdGhhbiAyMDI4IPCfmIlkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGVyZSBzdGlsbCByZW1haW4gYSBudW1iZXIgb2Yga25vd24gaXNzdWVzLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBQSFBTdGFuIHR5cGUgYW5ub3RhdGlvbnMuIFdvcmsgaXMgb25nb2luZyB0byBpbXByb3ZlIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHRyeSB0byByZWR1Y2UgdGhlIGZlZWRiYWNrIGxvb3AgYmV0d2VlbiBtYWtpbmcgY29kZSBjaGFuZ2VzIGFuZCBzZWVpbmcgdGhvc2UgcmVmbGVjdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9ubGluZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2N1c3RvbVRleHRub1RlYXNlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VGltZWxpbmVsZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRBdWd1c3QgMSwgMjAyMyDigJQgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNTYzNDUiPls1NjM0NV08L2E+IGludHJvZHVjZXMgYSBjb2RlLXN0eWxpbmcgY2hhbmdlIHRvIHJlcGxhY2UgPGNvZGU+YXJyYXlfa2V5X2V4aXN0cygpPC9jb2RlPiB3aXRoIDxjb2RlPmlzc2V0KCk8L2NvZGU+LiBUaGlzIHdhcyBrbm93biB0byBiZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BocGRvYy1wYXJzZXIvaXNzdWVzLzE5OSI+dW5zdXBwb3J0ZWQgYnkgdGhlIGRvY3MgcGFyc2VyPC9hPiBidXQgdGhlcmUgd2FzIG5vIGluZGljYXRpb24gdGhhdCB0aGUgdXBkYXRpbmcgcHJvY2VzcyB3YXMgYnJva2VuLiBCZWNhdXNlIG9mIGEgcGFyc2luZyBlcnJvciB0aGUgcHJvY2VzcyB3YXMgYmxvY2tlZDsgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIG5lZWRlZCB0byB1cGRhdGUgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jeSBvbiA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRBcHJpbCAxNSwgMjAyNCDigJQgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNTgwMDkiPls1ODAwOV08L2E+IGludHJvZHVjZXMgdHlwZSBhbm5vdGF0aW9ucyBmb3Igb3B0aW9uYWwgdHlwZXMsIDxjb2RlPj9hcnJheTwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5hcnJheTwvY29kZT4sIHdoaWNoIHRoZSBwYXJzZXIgY291bGQgbm90IGlubmVyQmxvY2tzbyB0aGF0IGl0IGNvdWxkIHVzZSBvZiBhIHBhcnNpbmcgZXJyb3IgdGhlIHByb2Nlc3Mgd2FzIGJsb2NrZWQ7IHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBuZWVkZWQgdG8gdXBkYXRlIGl0cyB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgb24gPGNvZGU+bmlraWMvcGhwLXBhcnNlcjwvY29kZT4gc28gdGhhdCBpdCBjb3VsZCB1bmRlcnN0YSBwYXJzaW5nIGVycm9yIHRoZSBwcm9jZXNzIHdhcyBibG9ja2VkOyB0aGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgbmVlZGVkIHRvIHVwZGF0ZSBpdHMgdW5kZXJseWluZyBkZXBlbmRlbmN5IG9uIDxjb2RlPm5pa2ljL3BocC1wYXJzZXI8L2NvZGU+IHNvIHRoYXQgaXQgY291bGQgdW5kZXJzdGFuZCB0aGUgdW5lcnJvciB0aGUgcHJvY2VzcyB3YXMgYmxvY2tlZDsgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIG5lZWRlZCB0byB1cGRhdGUgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jeSBvbiA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBzbyB0aGF0IGl0IGNvdWxkIHVuZGVyc3RhbmQgdGhlIHVuZXJyb3IgdGhlIHByb2Nlc3Mgd2FzIGJsb2NrZWQ7IHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBuZWVkZWQgdG8gdXBkYXRlIGl0cyB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgb24gPGNvZGU+bmlraWMvcGhwLXBhcnNlcjwvY29kZT4gc28gdGhhdCBpdCBjb3VsZCB1bmRlcnN0YW5kIHRoZSB1bmVycnJvciB0aGUgcHJvY2VzcyB3YXMgYmxvY2tlZDsgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIG5lZWRlZCB0byB1cGRhdGUgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jeSBvbiA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBzbyB0aGF0IGl0IGNvdWxkIHVuZGVyc3RhbmQgdGhlIHVuZGVyb3IgdGhlIHByb2Nlc3Mgd2FzIGJsb2NrZWQ7IHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBuZWVkZWQgdG8gdXBkYXRlIGl0cyB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgb24gPGNvZGU+bmlraWMvcGhwLXBhcnNlcjwvY29kZT4gc28gdGhhdCBpdCBjb3VsZCB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIHNvdXJjZXNzIHdhcyBibG9ja2VkOyB0aGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgbmVlZGVkIHRvIHVwZGF0ZSBpdHMgdW5kZXJseWluZyBkZXBlbmRlbmN5IG9uIDxjb2RlPm5pa2ljL3BocC1wYXJzZXI8L2NvZGU+IHNvIHRoYXQgaXQgY291bGQgdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBzb3VyY2VzcyB3YXMgYmxvY2tlZDsgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIG5lZWRlZCB0byB1cGRhdGUgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jeSBvbiA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBzbyB0aGF0IGl0IGNvdWxkIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc291cmNlIGNvZGUudG5ldyBzeW50YXggaW4gdGhlc3Mgd2FzIGJsb2NrZWQ7IHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBuZWVkZWQgdG8gdXBkYXRlIGl0cyB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgb24gPGNvZGU+bmlraWMvcGhwLXBhcnNlcjwvY29kZT4gc28gdGhhdCBpdCBjb3VsZCB1bmRlcnN0YW5kIHRoZSBuZXcgc3ludGF4IGluIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjb2RldXBkYXRlZCBwYXJzZXIgY291bCB0eXBlcywgPGNvZGU+P2FycmF5PC9jb2RlPiBpbnN0ZWFkIG9mIDxjb2RlPmFycmF5PC9jb2RlPiwgd2hpY2ggdGhlIHVwZGF0ZWQgcGFyc2VyIGNvdWxkIHBhcnMsIDxjb2RlPj9hcnJheTwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5hcnJheTwvY29kZT4sIHdoaWNoIHRoZSB1cGRhdGVkIHBhcnNlciBjb3VsZCBwYXJzZSwgYnV0IHdoaWNoIGBwaHBEb2N1bWVuc3RlYWQgb2YgPGNvZGU+YXJyYXk8L2NvZGU+LCB3aGljaCB0aGUgdXBkYXRlZCBwYXJzZXIgY291bGQgcGFyc2UsIGJ1dCB3aGljaCBgcGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uYDxjb2RlPjwvY29kZT4gZGlkIG5vdCBoYXZlPiwgd2hpY2ggdGhlIHVwZGF0ZWQgcGFyc2VyIGNvdWxkIHBhcnNlLCBidXQgd2hpY2ggPGNvZGU+cGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uPC9jb2RlPiBkaWQgbm90IGhhdmUgcmVjb2duaXplLiBgUmVmbGVUaGUgYFJFZmxlbGZmbGVjdGlvbmA8Y29kZT48L2NvZGU+IGxpYmFyIGNvdWxkIHBhcnNlLCBidXQgd2hpY2ggPGNvZGU+cGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uPC9jb2RlPiBkaWQgbm90IHJlY29nbml6ZS4gVGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYmFyciBjb3VsZCBwYXJzZSwgYnV0IHdoaWNoIDxjb2RlPnBocERvY3VtZW50b3IvUmVmbGVjdGlvbjwvY29kZT4gZGlkIG5vdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzZSwgYnV0IHdoaWNoIDxjb2RlPnBocERvY3VtZW50b3IvUmVmbGVjdGlvbjwvY29kZT4gZGlkIG5vdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZW50b3IvUmVmbGVjdGlvbjwvY29kZT4gZGlkIG5vdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXIvUmVmbGVjdGlvbjwvY29kZT4gZGlkIG5vdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJzZWQgZm9ybSBvbjwvY29kZT4gZGlkIG5vdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJzZWQgZm9ybSBvZiB0aGUgc291cmNlIG5vdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJzZWQgZm9ybSBvZiB0aGUgc291cmNlIGNvdCByZWNvZ25pemUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJzZWQgZm9ybSBvZiB0aGUgc291cmNlIGNvZGUsIGJ1dCB0aGUuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJzZWQgZm9ybSBvZiB0aGUgc291cmNlIGNvZGUsIGJ1dCB0aGUgbnXDuGxhYmxidXQgaGFkIG5vIGNvZGUgcGF0aCBmbGVjdGlvbjwvY29kZT4gbGlicmFyeSBleHRyYWN0cyB1c2VmdWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFyc2VkIGZvcm0gb2YgdGhlIHNvdXJjZSBjb2RlLCBidXQgaGFkIG5vIGNvZGUgcGF0aCBmb3IgbnVsbGFibGUgdHlwZXMuIE9uY2UgdGhlIG5ldyB1c2VmdWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFyc2VkIGZvcm0gb2YgdGhlIHNvdXJjZSBjb2RlLCBidXQgaGFkIG5vIGNvZGUgcGF0aCBmb3IgbnVsbGFibGUgdHlwZXMuIE9uY2UgdGhlIG5ldyBzeW50YXggaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFyc2VkIGZvcm0gb2YgdGhlIHNvdXJjZSBjb2RlLCBidXQgaGFkIG5vIGNvZGUgcGF0aCBmb3IgbnVsbGFibGUgdHlwZXMuIE9uY2UgdGhlIG5ldyBzeW50YXggYXBwZWFyZGVkIGluIGZyb20gdGhlIHBhcnNlZCBmb3JtIG9mIHRoZSBzb3VyY2UgY29kZSwgYnV0IGhhZCBubyBjb2RlIHBhdGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIGZyb20gdGhlIHBhcnNlZCBmb3JtIG9mIHRoZSBzb3VyY2UgY29kZSwgYnV0IGhhZCBubyBjb2RlIHBhdGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgZWNvZCBmb3JtIG9mIHRoZSBzb3VyY2UgY29kZSwgYnV0IGhhZCBubyBjb2RlIHBhdGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgZWNvZGQgZm9ybSBvZiB0aGUgc291cmNlIGNvZGUsIGJ1dCBoYWQgbm8gY29kZSBwYXRoIGZvciBudWxsYWJsZSB0eXBlcy4gT25jZSB0aGUgbmV3IHN5bnRheCBhcHBlYXJlZCBpbiB0aGUgc291cmNlIGVjY29kZSwgaXQgbmVlZGVkIHRvIGJlIHVwZGF0ZSwgYnV0IGhhZCBubyBjb2RlIHBhdGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgY29kZSwgaXQgbmVlZGVkIHRvIGJlIHVwZGF0ZWQgYnV0IGhhZCBubyBjb2RlIHBhdGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgY29kZSwgaXQgbmVlZGVkIHRvIGJlIHVwZGF0ZWQgdG8gc3VwYWRkIHRoZSBjb2RlIHBhdGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgY29kZSwgaXQgbmVlZGVkIHRvIGJlIHVwZGF0ZWQgdG8gYWRkIHRoZSBtaXNzaW5nIGggZm9yIG51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgY29kZSwgaXQgbmVlZGVkIHRvIGJlIHVwZGF0ZWQgdG8gYWRkIHRoZSBtaXNzaW5nIGhhbmRsaW51bGxhYmxlIHR5cGVzLiBPbmNlIHRoZSBuZXcgc3ludGF4IGFwcGVhcmVkIGluIHRoZSBzb3VyY2UgY29kZSwgaXQgbmVlZGVkIHRvIGJlIHVwZGF0ZWQgdG8gYWRkIHRoZSBtaXNzaW5nIGhhbmRsaW5nIC48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BocGRvYy1wYXJzZXIvaXNzdWVzLzIyOCI+PC9hPmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzSnVuZSAzLCAyMDI0IOKAlCBbNTgzMDRdIGludHJvZHVjZXMgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNTgzMDQiPjwvYT5hIHNob3J0aGFuZCBzeW50YXggZm9yIGNhbmdlc2V0LzU4MzA0Ij5bNTgzMDRdPC9hPiBpbnRyb2R1Y2VzIGEgc2hvcnRoYW5kIHN5bnRheCBmb3IgY2FsbGluZyBhIGBDYWxsYWJsZWA8Y29kZT48L2NvZGU+IHN0b3JlcyBkIGluIGEgdmFyaWFibGUuIHNob3J0aGFuZCBzeW50YXggZm9yIGNhbGxpbmcgYSA8Y29kZT5DYWxsYWJsZTwvY29kZT4gc3RvcmVkIGluIGEgdmFyaWFibGUuIFRob3J0aGFuZCBzeW50YXggZm9yIGNhbGxpbmcgYSA8Y29kZT5DYWxsYWJsZTwvY29kZT4gc3RvcmVkIGluIGEgdmFyaWFibGUuIFRoy4ZpcyA8ZW0+czwvZW0+aG91bGQgYmUgc3VwcG9ydGVkICBieSB0aGUgcGFyc2VyIGxsYWJsZTwvY29kZT4gc3RvcmVkIGluIGEgdmFyaWFibGUuIFRoaXMgPGVtPnNob3VsZDwvZW0+IGJlIHN1cHBvcnRlZCBieSB0aGUgcGFyc2VyIGxsbGFibGU8L2NvZGU+IHN0b3JlZCBpbiBhIHZhcmlhYmxlLiBUaGlzIDxlbT5zaG91bGQ8L2VtPiBiZSBzdXBwb3J0ZWQgYnkgdGhlIHBhcnNlcmxhYmxlPC9jb2RlPiBzdG9yZWQgaW4gYSB2YXJpYWJsZS4gVGhpcyA8ZW0+c2hvdWxkPC9lbT4gYmUgc3VwcG9ydGVkIGJ5IHRoZSBwYXJzZXIgUEhQSFAgcGFyc2VyIGFuZCBgUmVmbGVjdG9yZWQgaW4gYSB2YXJpYWJsZS4gVGhpcyA8ZW0+c2hvdWxkPC9lbT4gYmUgc3VwcG9ydGVkIGJ5IHRoZSBQSFAgcGFyc2VyIGFuZCBgUmVmbGVjdGlvbmA8Y29kZT48L2NvZGU+LCBidXQgYSB2YXJpYWJsZS4gVGhpcyA8ZW0+c2hvdWxkPC9lbT4gYmUgc3VwcG9ydGVkIGJ5IHRoZSBQSFAgcGFyc2VyIGFuZCA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiwgYnV0IGl0IGlzbuKAmXQuIFNpbmNlIGl04oCZcyBsSXQgd291bGQgbmVlZCBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gYnkgdGhlIFBIUCBwYXJzZXIgYW5kIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+LCBidXQgaXQgaXNu4oCZdC4gSXQgd291bGQgbmVlZCBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gdGhlIFJlIFBIUCBwYXJzZXIgYW5kIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+LCBidXQgaXQgaXNu4oCZdC4gSXQgd291bGQgbmVlZCBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gdGhlIFJlZSBQSFAgcGFyc2VyIGFuZCA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiwgYnV0IGl0IGlzbuKAmXQuIEl0IHdvdWxkIG5lZWQgYW4gdXBkYXRlIGF0IGxlYXN0IHRvIHRoZSBgUmVmbGVjdGlvbiBgPGNvZGU+PC9jb2RlPiBsaWJyYXJ5IHRvZGU+UmVmbGVjdGlvbjwvY29kZT4sIGJ1dCBpdCBpc27igJl0LiBJdCB3b3VsZCBuZWVkIGFuIHVwZGF0ZSBhdCBsZWFzdCB0byB0aGUgPGNvZGU+UmVmbGVjdGlvbjwvY29kZT4gbGlicmFyeSB0byBoYW5kbGUuIEdpb248L2NvZGU+LCBidXQgaXQgaXNu4oCZdC4gSXQgd291bGQgbmVlZCBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gdGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgdG8gaGFuZGxlLiBHaXZlbiB0aGF0IGl0IGlzIGl0IGlzbuKAmXQuIEl0IHdvdWxkIG5lZWQgYW4gdXBkYXRlIGF0IGxlYXN0IHRvIHRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IHRvIGhhbmRsZS4gR2l2ZW4gdGhhdCBpdCBpcyBhIG4gaXNu4oCZdC4gSXQgd291bGQgbmVlZCBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gdGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgdG8gaGFuZGxlLiBHaXZlbiB0aGF0IGl0IGlzIGFuIG9kZCBjb25zdCB3b3VsZCBuZWVkIGFuIHVwZGF0ZSBhdCBsZWFzdCB0byB0aGUgPGNvZGU+UmVmbGVjdGlvbjwvY29kZT4gbGlicmFyeSB0byBoYW5kbGUuIEdpdmVuIHRoYXQgaXQgaXMgYW4gb2RkIGNvbnN0cnVjdCwgIHdpdGggYSBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gdGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgdG8gaGFuZGxlLiBHaXZlbiB0aGF0IGl0IGlzIGFuIG9kZCBjb25zdHJ1Y3Qgd2l0aCBhIHNlbWFudGljYcKlLWx5bC1lcXVpdmFsZW50aGUgPGNvZGU+UmVmbGVjdGlvbjwvY29kZT4gbGlicmFyeSB0byBoYW5kbGUuIEdpdmVuIHRoYXQgaXQgaXMgYW4gb2RkIGNvbnN0cnVjdCB3aXRoIGEgc2VtYW50aWNhbGx5LWVxdWl2YWxlbnQgY291bnRlcnBhcnQsIGl0aW9uPC9jb2RlPiBsaWJyYXJ5IHRvIGhhbmRsZS4gR2l2ZW4gdGhhdCBpdCBpcyBhbiBvZGQgY29uc3RydWN0IHdpdGggYSBzZW1hbnRpY2FsbHktZXF1aXZhbGVudCBjb3VudGVycGFydCwgaXQgd2FzIG1vZGU+IGxpYnJhcnkgdG8gaGFuZGxlLiBHaXZlbiB0aGF0IGl0IGlzIGFuIG9kZCBjb25zdHJ1Y3Qgd2l0aCBhIHNlbWFudGljYWxseS1lcXVpdmFsZW50IGNvdW50ZXJwYXJ0LCBpdCB3YXMgbW9kZT4gbGlicmFyeSB0byBoYW5kbGUuIEdpdmVuIHRoYXQgaXQgaXMgYW4gb2RkIGNvbnN0cnVjdCB3aXRoIGEgc2VtYW50aWNhbGx5LWVxdWl2YWxlbnQgY291bnRlcnBhcnQsIGl0IHdhcyBtb2RpZmllZCBpbiBgdHJ1bmtgPGNvZGU+PC9jb2RlPiB0byB1bmJsb2NrIHRoZSBwYWRvY3VtZW50YXRpb25wcmV2ZW50IGl0IGZyb20gYmVjb21pbiBvZGQgY29uc3RydWN0IHdpdGggYSBzZW1hbnRpY2FsbHktZXF1aXZhbGVudCBjb3VudGVycGFydCwgaXQgd2FzIG1vZGlmaWVkIGluIDxjb2RlPnRydW5rPC9jb2RlPiB0byBwcmV2ZW50IGl0IGZyb20gYmVjb21pbmcgYW4gY29uc3RydWN0IHdpdGggYSBzZW1hbnRpY2FsbHktZXF1aXZhbGVudCBjb3VudGVycGFydCwgaXQgd2FzIG1vZGlmaWVkIGluIDxjb2RlPnRydW5rPC9jb2RlPiB0byBwcmV2ZW50IGl0IGZyb20gYmVjb21pbmcgYW4gaW1tZWRpYXRlIHdpdGggYSBzZW1hbnRpY2FsbHktZXF1aXZhbGVudCBjb3VudGVycGFydCwgaXQgd2FzIG1vZGlmaWVkIGluIDxjb2RlPnRydW5rPC9jb2RlPiB0byBwcmV2ZW50IGl0IGZyb20gYmVjb21pbmcgYW4gaW1tZWRpYXRlIGlzc3VlIGdvaW5nIGZvcndhcmQuIC4gWzYxNjI0XTxhIGhyZWY9Imh0dHBzOi8vY29yZS50cmFjLndvcmRwcmVzcy5vcmcvY2hhbmdlc2V0LzYxNjI0Ij48L2E+IHNvIHRoYXQgaXQgb3VsZCB1bmRlcnN0YW5kIHRoZSBuZXcgc3ludGF4IGluIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjb2RlLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QXByaWwgMTUsIDIwMjQg4oCUIDxhIGhyZWY9Imh0dHBzOi8vY29yZS50cmFjLndvcmRwcmVzcy5vcmcvY2hhbmdlc2V0LzU4MDA5Ij5bNTgwMDldPC9hPiBpbnRyb2R1Y2VzIHR5cGUgYW5ub3RhdGlvbnMgZm9yIG9wdGlvbmFsIHR5cGVzLCA8Y29kZT4\/YXJyYXk8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+YXJyYXk8L2NvZGU+LCB3aGljaCB0aGUgdXBkYXRlZCBwIHBhcnNlLCBidXQgd2hpY2ggPGNvZGU+cGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uPC9jb2RlPiBkaWQgbm90IHJlY29nbml6ZS4gVGhlPGNvZGU+UmVmbGVjdGlvbi9jb2RlPiBsaWJyYXJ5IGV4dHJhY3RzIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJzZWQgZm9ybSBvZiB0aGUgc291cmNlIGNvZGUsIGJ1dCBoYWQgbm8gY29kZSBwYXRoIGZvciBudWxsYWJsZSB0eXBlcy4gT25jZSB0aGUgbmV3IHN5bnRheCBhcHBlYXJlZCBpbiB0aGUgc291cmNlIGNvZGUsIGl0IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGhwZG9jLXBhcnNlci9pc3N1ZXMvMjI4Ij5uZWVkZWQgdG8gYmUgdXBkYXRlZCA8L2E+dG8gYWRkIHRoZSBtaXNzaW5nIGhhbmRsaW5nLjwvbGk+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkp1bmUgMywgMjAyNCDigJQgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNTgzMDQiPls1ODMwNF08L2E+IGludHJvZHVjZXMgYSBzaG9ydGhhbmQgc3ludGF4IGZvciBjYWxsaW5nIGEgPGNvZGU+Q2FsbGFibGU8L2NvZGU+IHN0b3JlZCBpbiBhIHZhcmlhYmxlLiBUaGlzIDxlbT5zaG91bGQ8L2VtPiBiZSBzdXBwb3J0ZWQgYnkgdGhlIFBIUCBwYXJzZXIgYW5kIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+LCBidXQgaXQgaXNu4oCZdC4gSXQgd291bGQgbmVlZCBhbiB1cGRhdGUgYXQgbGVhc3QgdG8gdGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgdG8gaGFuZGxlLiBHaXZlbiB0aGF0IGl0IGlzIGFuIG9kZCBjb25zdHJ1Y3Qgd2l0aCBhIHNlbWFudGljYWxseS1lcXVpdmFsZW50IGNvdW50ZXJwYXJ0LCBpdCB3YXMgbW9kaWZpZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNjE2MjQiPls2MTYyNF08L2E+IHRvIHByZXZlbnQgaXQgZnJvbSBiZWNvbWluZyBhbiBpbW1lZGlhdGUgaXNzdWUgZ29pbmcgZm9yd2FyZC48L2xpdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0gIC1jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc0F1Z3VzdCAyNywgMjAyNSDigJQgbmVhcmx5IGrCqOKAoFs2MDY4ODRdIGludHJvZHVjZXMgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9jaGFuZ2VzZXQvNjA2ODQiPjwvYT5hbm9ueW1vdXMgY2xhc3Nlcy5vcmcvY2hhbmdlc2V0LzYwNjg0Ij5bNjA2ODRdPC9hPiBpbnRyb2R1Y2VzIGFub255bW91cyBjbGFzc2VzLCB3aGljaGFuZ2VzZXQvNjA2ODQiPls2MDY4NF08L2E+IGludHJvZHVjZXMgYW5vbnltb3VzIGNsYXNzZXMsIHdoaWNoYW5nZXNldC82MDY4NCI+WzYwNjg0XTwvYT4gaW50cm9kdWNlcyBhbm9ueW1vdXMgY2xhc3Nlcywgd2hpY2ggYFJlc2V0LzYwNjg0Ij5bNjA2ODRdPC9hPiBpbnRyb2R1Y2VzIGFub255bW91cyBjbGFzc2VzLCB3aGljaCBgUmVmbGVjdGlvbmA8Y29kZT48L2NvZGU+IGNhbuKAmXQgZ2VuZXJhdGUgaW50cm9kdWNlcyBhbm9ueW1vdXMgY2xhc3Nlcywgd2hpY2ggPGNvZGU+UmVmbGVjdGlvbjwvY29kZT4gY2Fu4oCZdCBnZW5lcmF0ZSBhIG5hbWUgZm9yLiBJdCBjYWxsbGVhZHMgdG8gYSBjcmFzaCB3aGVuIGBSZWxlZmxlY3Rpb25gPGNvZGU+PC9jb2RlPiB0cmllcyB0byBleHRyYWNsYXNzZXMsIHdoaWNoIGxlYWRzIHRvIGEgY3Jhc2ggd2hlbiA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiB0cmllcyB0byBleHRyYWN0IGl0cyBuYW1lLiBUaGVyZSBpcyBubyBuYW1lLCBzbyBpdCA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiB0cmllcyB0byBleHRyYWN0IGl0cyBuYW1lLiBUaGVyZSBpcyBubyBuYW1lLCBzbyBpdCBtdXN0IG1ha2Ugb25lIHVwOiBgY8Olw59zQGNsYXNzQGFub255bW8gZXh0cmFjdCBpdHMgbmFtZS4gVGhlcmUgaXMgbm8gbmFtZSwgc28gaXQgbXVzdCBtYWtlIG9uZSB1cDogYGNsYXNzQGFub255bW91c2A8b2RlPmM8L2NvZGU+LmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzSW4gdHdvIHllYXJzIHNpbmNlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gZmlyc3QgYnJva2UgdGhlcmUgaGF2ZSBvbmx5IGJlZW4gZm91ciBzeW50YXhuZXcgc3ludGF4IGNvbnN0cnVjdHMgdGhhdCBUaGVyZSBoYXZlIG9wbmx5IGJlZW4gZm91ciBuZXcga2lOUyBvZiBuZHMgb2Ygc3ludGF4IHRoYXQgYnJva2UgdGhlIGRvY3VtZW50YXRpb24gZ25lbmVyYXRpb24gaW5zaW5jZSBhbmQgaW5jbHVkaW5nIHRoZSBpdCBmaXJzdCBicm9rZSAsIGluY2x1ZGluZyB0aGUgZmlyc3QgLCBidXQgV29yZHRoZSBjb2RlIGluIFdvcmRQcmVzcyA3LjAgaW50cm9kdWNlcyBldmVyc2V2ZWFsIHJuZXcgc3ludGF4IGZvcm1zIHdoaWNoIG5lZWQgdXBkYXRpbmcgYmVmb3JlIHRoZSBkb2N1bWVudGF0aW9uIGNhbiBiZSByZWdlbmVyYXRlZDpjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3MtIG9yZGVyZWR2YWx1ZXNjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc1RoZSBBSSBjbGllbnQgaW50cm9kdWNlcyB2aXNpYmlsaXR5IG9uIGNsYXNzIHByb3BlcmNvbnN0YW50cywgb3B0aW9uYWwgdHlwZXMgZm9yIGNsYXNzIHByb3BlcnRpZXN1bGx0YWJsZSwgLmFuZCBjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc1RoZSBjb2xsYWJvcmF0aW9uIGZlYXR1cmXCoMuGbnRyb2R1aW50cmlvZHVjZSBhcnJheSBpbml0aWFsaXphdGlvbiBvZiBjbGFzcyBwcm9wZXJ0aWVzLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzV29yayBoYXMgYWxyZWFkeSBiZWVuIGV4cGxvcmVkIGZvciBtYWtpbmcgYW5vdGhlciBpbmNyZW1lbnRhbCBzdHAgZXRvIHVwZGF0ZSB0aGUgdW5kZXJseWluZyBQSFAgcGFyc2VyLCBhbmQgdGhpcyBzaG91bGQgaG9wZWZ1bGx5IHJlc29sdmUgdGhlc2VlZXNlIG5ldyBicmVha2FnZXMuY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzLSBvcmRlcmVkdmFsdWVzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3NKdWx5IDEzLCAyMDI1IOKAlCBXb3JrIHN0YXJ0cyB0byByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gaW4gW1BSIzI0NyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZHJlc3MvcGhwZG9jLXBhcnNlci9wdWxsLzI0NyI+UDwvYT53aXRoIGEgbmV3IHBhcnNlciwgYSBuZXcgYWRhcHRld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiB3aXRoIGEgbmV3IHBhcnNlciwgYSBuZXcgYWRhcHRlciwgYW5kIGEgbmV3IHJ1bm50YXRpb24gZ2VuZXJhdGlvbiB3aXRoIGEgbmV3IHBhcnNlciwgYSBuZXcgYWRhcHRlciwgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JhdGlvbiB3aXRoIGEgbmV3IHBhcnNlciwgYSBuZXcgYWRhcHRlciwgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JrIGlvbiB3aXRoIGEgbmV3IHBhcnNlciwgYSBuZXcgYWRhcHRlciwgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JrIGluY29ycG9yYXRlcyBQSFBTdGFuIHNvIHRoYXQgYWRhcHRlciwgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JrIGluY29ycG9yYXRlcyBQSFBTdGFuIHNvIHRoYXQgdGhlIG1vciwgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JrIGluY29ycG9yYXRlcyBQSFBTdGFuIHNvIHRoYXQgdGhlIG1vcmUgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JrIGluY29ycG9yYXRlcyBQSFBTdGFuIHNvIHRoYXQgdGhlIG1vcmUgYW5kIGEgbmV3IHJ1bm5lci4gVGhpcyB3b3JrIGluY29ycG9yYXRlcyBQSFBTdGFuIHNvIHRoYXQgdGhlIG1vcmUgYWR2YW5jZWQgdHlwZXMgYXBwZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uLCAuIEl0YW4gc28gdGhhdCB0aGUgbW9yZSBhZHZhbmNlZCB0eXBlcyBhcHBlYXIgaW4gdGhlIGRvY3VtZW50YXRpb24uIEl04oCZcyBzbyB0aGF0IHRoZSBtb3JlIGFkdmFuY2VkIHR5cGVzIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSXTigJlzIGhhcmQgdG8gdGhlIG1vcmUgYWR2YW5jZWQgdHlwZXMgYXBwZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uLiBJdOKAmXMgaGFyZCB0byBhc3Nlc3MgdGhlIG92ZXJ3YWFsbCBjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc0ZlYnJ1YXJ5IDExLCAyMDI2IOKAlCBNaW5pbWFsIHVwZGF0ZXMgYXJlIHByb3Bvc2VkIGluIFBSIzI1MCBzPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRyZXNzL3BocGRvYy1wYXJzZXIvcHVsbC8yNTAiPlA8L2E+dG8gdXBkYXRlIHRoZSB1Yi5jb20vV29yZFByZXNzL3BocGRvYy1wYXJzZXIvcHVsbC8yNTAiPlBSIzI1MDwvYT4gdG8gdXBkYXRlIHRoZSB1bmRlcmx5aW5nIGBuaWtpYy9waHAtcGFyc2VyYDxjb2RlPjwvY29kZT4gZGVwZW5kZW5jeSBhbmQgdW5zdGljayB0aGUgdXBkYXRlIHRoZSB1bmRlcmx5aW5nIDxjb2RlPm5pa2ljL3BocC1wYXJzZXI8L2NvZGU+IGRlcGVuZGVuY3kgYW5kIHVuc3RpY2sgdGhlIGxpYmVyYXRlIHRvIHVwZGF0ZSB0aGUgdW5kZXJseWluZyA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBkZXBlbmRlbmN5IGFuZCBsaWJlcmF0ZSB0byB1cGRhdGUgdGhlIHVuZGVybHlpbmcgPGNvZGU+bmlraWMvcGhwLXBhcnNlcjwvY29kZT4gZGVwZW5kZW5jeSBhbmQgbGliZXJhdGUgdGhlIHBkYXRlIHRoZSB1bmRlcmx5aW5nIDxjb2RlPm5pa2ljL3BocC1wYXJzZXI8L2NvZGU+IGRlcGVuZGVuY3kgYW5kIGxpYmVyYXRlIHRoZSBwcm9jZSB0aGUgdW5kZXJseWluZyA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBkZXBlbmRlbmN5IGFuZCBsaWJlcmF0ZSB0aGUgcHJvY2Vzcy4gVGhlIGBSZWZsZWN0aW9uYDxjb2RlPjwvY29kZT4gbGlicmFyeSBpcyBmb3JrZWQgZnJvbSBpdHMgZGVwZW5kZW5jeSBhbmQgbGliZXJhdGUgdGhlIHByb2Nlc3MuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGlzIGZvcmtlZCBmcm9tIGl0cyBvbGRlbmRlbmN5IGFuZCBsaWJlcmF0ZSB0aGUgcHJvY2Vzcy4gVGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgaXMgZm9ya2VkIGZyb20gaXRzIG9sZGVyIHZlcnNpb25kIGxpYmVyYXRlIHRoZSBwcm9jZXNzLiBUaGUgPGNvZGU+UmVmbGVjdGlvbjwvY29kZT4gbGlicmFyeSBpcyBmb3JrZWQgZnJvbSBpdHMgb2xkZXIgdmVyc2lvbiB0byBhZG9wdGUgdGhlIHByb2Nlc3MuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGlzIGZvcmtlZCBmcm9tIGl0cyBvbGRlciB2ZXJzaW9uIHRvIGFkb3B0IHRvbmx5IHByb2Nlc3MuIFRoZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGlzIGZvcmtlZCBmcm9tIGl0cyBvbGRlciB2ZXJzaW9uIHRvIGFkb3B0IG9ubHkgdGhvY2Vzcy4gVGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgaXMgZm9ya2VkIGZyb20gaXRzIG9sZGVyIHZlcnNpb24gdG8gYWRvcHQgb25seSB0aG9zZXNzLiBUaGUgPGNvZGU+UmVmbGVjdGlvbjwvY29kZT4gbGlicmFyeSBpcyBmb3JrZWQgZnJvbSBpdHMgb2xkZXIgdmVyc2lvbiB0byBhZG9wdCBvbmx5IHRob3NlIGNoYW5nZSA8Y29kZT5SZWZsZWN0aW9uPC9jb2RlPiBsaWJyYXJ5IGlzIGZvcmtlZCBmcm9tIGl0cyBvbGRlciB2ZXJzaW9uIHRvIGFkb3B0IG9ubHkgdGhvc2UgY2hhbmdlcyBuZWNlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgaXMgZm9ya2VkIGZyb20gaXRzIG9sZGVyIHZlcnNpb24gdG8gYWRvcHQgb25seSB0aG9zZSBjaGFuZ2VzIG5lY2Vzc2FyeSB0byB1cGdyYWRlIGZhciBlbm91Z2ggdG8gc3VwcG9ydCBDb3Jl4oCZcyBvbGRlciB2ZXJzaW9uIHRvIGFkb3B0IG9ubHkgdGhvc2UgY2hhbmdlcyBuZWNlc3NhcnkgdG8gdXBncmFkZSBmYXIgZW5vdWdoIHRvIHN1cHBvcnQgQ29yZeKAmXMgb2xkZXIgdmVyc2lvbiB0byBhZG9wdCBvbmx5IHRob3NlIGNoYW5nZXMgbmVjZXNzYXJ5IHRvIHVwZ3JhZGUgZmFyIGVub3VnaCB0byBzdXBwb3J0IENvcmXigJlzIGNvZGVyIHZlcnNpb24gdG8gYWRvcHQgb25seSB0aG9zZSBjaGFuZ2VzIG5lY2Vzc2FyeSB0byB1cGdyYWRlIGZhciBlbm91Z2ggdG8gc3VwcG9ydCBDb3Jl4oCZcyBjb2RlciB2ZXJzaW9uIHRvIGFkb3B0IG9ubHkgdGhvc2UgY2hhbmdlcyBuZWNlc3NhcnkgdG8gdXBncmFkZSBmYXIgZW5vdWdoIHRvIHN1cHBvcnQgQ29yZeKAmXMgY29kZS4oYW5kIFBSIzI1MV0pIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjUxIj5QPC9hPmluICAgUFIjMjQ5IGFuZDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjQ5Ij5QPC9hPmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzU2VwdGVtYmVyIDI4LCAyMDI1IOKAlCBBbiBhdHRlbXB0IGlzIG1hZGUgaW4gUFIjMjQ4PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRyZXNzL3BocGRvYy1wYXJzZXIvcHVsbC8yNDgiPlA8L2E+IHRvIGZpbHRlciBvdXRodWIuY29tL1dvcmRQcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjQ4Ij5QUiMyNDg8L2E+IHRvIGZpbHRlciBvdXQgdWIuY29tL1dvcmRQcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjQ4Ij5QUiMyNDg8L2E+IHRvIGZpbHRlciBvdXQgdW5zdXBwb3J0ZWRQcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjQ4Ij5QUiMyNDg8L2E+IHRvIGZpbHRlciBvdXQgdW5zdXBwb3J0ZWQgc3ludGF4IHVzaW5nIFBDUkUgYXB1bGwvMjQ4Ij5QUiMyNDg8L2E+IHRvIGZpbHRlciBvdXQgdW5zdXBwb3J0ZWQgc3ludGF4IHVzaW5nIFBDUkUgYXB0dGVybnBhdHRlcm5zLj4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QXVndXN0IDI3LCAyMDI1IOKAlCA8YSBocmVmPSJodHRwczovL2NvcmUudHJhYy53b3JkcHJlc3Mub3JnL2NoYW5nZXNldC82MDY4NCI+WzYwNjg0XTwvYT4gaW50cm9kdWNlcyBhbm9ueW1vdXMgY2xhc3Nlcywgd2hpY2ggbGVhZHMgdG8gYSBjcmFzaCB3aGVuIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IHRyaWVzIHRvIGV4dHJhY3QgaXRzIG5hbWUuIFRoZXJlIGlzIG5vIG5hbWUsIHNvIGl0IG11c3QgbWFrZSBvbmUgdXA6IDxjb2RlPmNsYXNzQGFub255bW91czwvY29kZT4uPC9saXQtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXJlIGhhdmUgb25seSBiZWVuIGZvdXIgbmV3IGtpbmRzIG9mIHN5bnRheCB0aGF0IGJyb2tlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gc2luY2UgaXQgZmlyc3QgYnJva2UsIGJ1dCB0aGUgY29kZSBpbiBXb3JkUHJlc3MgNy4wIGludHJvZHVjZXMgc2V2ZXJhbCBuZXcgc3ludGF4IGZvcm1zIHdoaWNoIG5lZWQgdXBkYXRpbmcgYmVmb3JlIHRoZSBkb2N1bWVudGF0aW9uIGNhbiBiZSByZWdlbmVyYXRlZDo8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPlRoZSBBSSBjbGllbnQgaW50cm9kdWNlcyB2aXNpYmlsaXR5IG9uIGNsYXNzIGNvbnN0YW50cywgYW5kIG51bGxhYmxlIHR5cGVzIGZvciBjbGFzcyBwcm9wZXJ0aWVzLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+VGhlIGNvbGxhYm9yYXRpb24gZmVhdHVyZcKgaW50cm9kdWNlIGFycmF5IGluaXRpYWxpemF0aW9uIG9mIGNsYXNzIHByb3BlcnRpZXMuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V29yayBoYXMgYWxyZWFkeSBiZWVuIGV4cGxvcmVkIGZvciBtYWtpbmcgYW5vdGhlciBpbmNyZW1lbnRhbCBzdGVwIHRvIHVwZGF0ZSB0aGUgdW5kZXJseWluZyBQSFAgcGFyc2VyLCBhbmQgdGhpcyBzaG91bGQgaG9wZWZ1bGx5IHJlc29sdmUgdGhlc2UgbmV3IGJyZWFrYWdlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkp1bHkgMTMsIDIwMjUg4oCUIFdvcmsgc3RhcnRzIGluIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGhwZG9jLXBhcnNlci9wdWxsLzI0NyI+UFIjMjQ3PC9hPiB0byByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gd2l0aCBhIG5ldyBwYXJzZXIsIGEgbmV3IGFkYXB0ZXIsIGFuZCBhIG5ldyBydW5uZXIuIFRoaXMgd29yayBpbmNvcnBvcmF0ZXMgUEhQU3RhbiBzbyB0aGF0IHRoZSBtb3JlIGFkdmFuY2VkIHR5cGVzIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbi48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPlNlcHRlbWJlciAyOCwgMjAyNSDigJQgQW4gYXR0ZW1wdCBpcyBtYWRlIGluIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGhwZG9jLXBhcnNlci9wdWxsLzI0OCI+UFIjMjQ4PC9hPiB0byBmaWx0ZXIgb3V0IHVuc3VwcG9ydGVkIHN5bnRheCB1c2luZyBQQ1JFIHBhdHRlcm5zLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+RmVicnVhcnkgMTEsIDIwMjYg4oCUIE1pbmltYWwgdXBkYXRlcyBhcmUgcHJvcG9zZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjUwIj5QUiMyNTA8L2E+IChhbmQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9waHBkb2MtcGFyc2VyL3B1bGwvMjQ5Ij5QUiMyNDk8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BocGRvYy1wYXJzZXIvcHVsbC8yNTEiPlBSIzI1MTwvYT4pIHRvIHVwZGF0ZSB0aGUgdW5kZXJseWluZyA8Y29kZT5uaWtpYy9waHAtcGFyc2VyPC9jb2RlPiBkZXBlbmRlbmN5IGFuZCBsaWJlcmF0ZSB0aGUgcHJvY2Vzcy4gVGhlIDxjb2RlPlJlZmxlY3Rpb248L2NvZGU+IGxpYnJhcnkgaXMgZm9ya2VkIGZyb20gaXRzIG9sZGVyIHZlcnNpb24gdG8gYWRvcHQgb25seSB0aG9zZSBjaGFuZ2VzIG5lY2Vzc2FyeSB0byB1cGdyYWRlIGZhciBlbm91Z2ggdG8gc3VwcG9ydCBDb3Jl4oCZcyBjb2RlLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tICAtY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3NGZWJ1cnJ1YXJ5IDE3LCAyMDI2IOKAlCBVcGRhdGVzIHRvIHRoZSBgNi45VGhlIEpTT04gYmxvYiB3aGljaCByZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBkb2N1bWVudGF0aW4gb2lzIGdlbmVyYXRlZCBmcm9tIGA2LjkuMWA8Y29kZT48L2NvZGU+4oCUMTnigJMxOSBhbmQgZGlmZmVyZT4gYW5kIGRpZmZlcmVuY2VzIGZyb20gdGhlbmNlcyBmcm9tIHRoZSBsYXRlc3Qtd29ya2luZyB2ZXN0LXdvcmtpbmcgdmVyc2lvbiBhcmUgaXJvbmVkIG91dC5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc0ZlYnJ1YXJleSAyMywgMjAyNiDigJQgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZWZlcmVuY2UgaXMgdXBkYXRlZCB3aXRoIGRvY3VtZW50YXRpb24gZm9yIFdvcmRQcmXCtHNzcyBhcyBvZiBgNi45LjFgPGNvZGU+PC9jb2RlPi4+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkZlYnJ1YXJ5IDE34oCTMTksIDIwMjYg4oCUIFRoZSBKU09OIGJsb2Igd2hpY2ggcmVwcmVzZW50cyB0aGUgY29udGVudCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmF0ZWQgZnJvbSA8Y29kZT42LjkuMS9jb2RlPiBhbmQgZGlmZmVyZW5jZXMgZnJvbSB0aGUgbGF0ZXN0LXdvcmtpbmcgdmVyc2lvbiBhcmUgaXJvbmVkIG91dC48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkZlYnJ1YXJ5IDIzLCAyMDI2IOKAlCBodHRwczovL2RldmVsb3Blci53b3JkcHJlc3Mub3JnL3JlZmVyZW5jZSBpcyB1cGRhdGVkIHdpdGggZG9jdW1lbnRhdGlvbiBmb3IgV29yZFByZXNzIGFzIG9mIDxjb2RlPjYuOS4xPC9jb2RlPi48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLSAgLWNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzIyMgbGV2ZWxGdXR1cmUgZGlyZWN0aW9uY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzVGhlIHN0YXRlIG9mIHRoaXMgcHJvY2VzcyBpcyBkaXJlIG5lZWQgdG9vZiBoZWxwLiBBdCBBIGZldyBhdHRlbXB0cyBoYXZlIGJlZW4gbWFkZSB0byBnZW5lcmF0ZSBhIFBsYXlncm91bmQgbGluayBmb3IgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gc2VlIHRoZSBpbXBhY3Qgb2YgdGhlaXIgY2hhbmdlcyBiZWZvcmUgd29yZFdvcmRQcmVzcyByZWxlYXNlcywgd2hpY2ggaXMgd2hlbiBob3cgbG9uZyBub3JtYWxseSBob3cgbG9uZyBvbmUgbXVzdCB3YWl0IHRvIHNlZSB1cGRhdGVzLiBUaGUgZXhpc3RpbmcgcHJvY2VzcyBpcyBub3QgdGhhdCBlYXN5IHRvIGlzb2xhdGUgYW5kIHJlcGxpY2F0ZSwgaG91bmZvcnV0bmF0ZWx5LHUgbFdXaGF0IGNvbWVzIG5leHQgaXMgbWFraW5nIHN1cmUgdGhhdCBXb3JkUHJlc3MgNy4wIGNhbiBzaGlwIHdpdGggdXBkYXRlZCBlZnJlZmVyZW5jZSBkb2N1bWVudGF0aW9uLiBUaGF04oCZcyBlc3NlbnRpYWwuIGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc0FGdGVyIHRoYXQsZiB3b3JrIHdpbGwgbGlrZWNvbnRpbnVlIG9uIHN1cHBvcnRpbmcgUEhQU3RhbiB0eXBlIGFubm90YXRpb25zIGFuZCBvbiBiZWluZyBhYmxlIHRvIHBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIHByZXZpZXdzLiBJdOKAmXMgVGhlIGV4aXN0aW5nIHByb2Nlc3MgaXQgcyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIHByb2R1Y3Rpb24gc3lzdGVtIHdoaWNoIGhvc3RzIHRoZSBkb2NzLiB1bWVudGF0aW9uLiBJdCBuZWVkcyB0byBiZSBpc2\/DpeKAoGVkIGFubGF0ZWQgaW50byBhIFBsYXlncm91bmQgYmx1ZXByaW50LCBhdCB3aGljaCBwb2ludCBhIHByZXZpZXcgY2FuIGJlIGduZWVuZXJhdGVkIG9uIGV2ZXJ5IFBSIGFuZCBkZXZlbG9wZXJzIHdpbGwgYmdlIGFibGUgdG8gc2VlIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcyBiZWZvcmUgdGhlIFdvcmRQcmVzcyByZWxlYXNlLi4sIGFuZCBob2VmdWxseSBwbm90aWNlIGFuZCBmaXggYW55IGlzc3VlcyB0aGF0IGFyaXNlY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzIGJlZm9yZSB0aGV5IGFyZSBwdWJsaXNoZWQgcHVibGljYWxseS4tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkZ1dHVyZSBkaXJlY3Rpb248L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPldoYXQgY29tZXMgbmV4dCBpcyBtYWtpbmcgc3VyZSB0aGF0IFdvcmRQcmVzcyA3LjAgY2FuIHNoaXAgd2l0aCB1cGRhdGVkIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uLiBUaGF04oCZcyBlc3NlbnRpYWwuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QWZ0ZXIgdGhhdCwgd29yayB3aWxsIGNvbnRpbnVlIG9uIHN1cHBvcnRpbmcgUEhQU3RhbiB0eXBlIGFubm90YXRpb25zIGFuZCBvbiBiZWluZyBhYmxlIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb24gcHJldmlld3MuIFRoZSBleGlzdGluZyBwcm9jZXNzIGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgcHJvZHVjdGlvbiBzeXN0ZW0gd2hpY2ggaG9zdHMgdGhlIGRvY3VtZW50YXRpb24uIEl0IG5lZWRzIHRvIGJlIGlzb2xhdGVkIGludG8gYSBQbGF5Z3JvdW5kIGJsdWVwcmludCwgYXQgd2hpY2ggcG9pbnQgYSBwcmV2aWV3IGNhbiBiZSBnZW5lcmF0ZWQgb24gZXZlcnkgUFIgYW5kIGRldmVsb3BlcnMgd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUgaW1wYWN0IG9mIGNoYW5nZXMgYmVmb3JlIHRoZSBXb3JkUHJlc3MgcmVsZWFzZSwgYW5kIGhvcGVmdWxseSBub3RpY2UgYW5kIGZpeCBhbnkgaXNzdWVzIHRoYXQgYXJpc2UgYmVmb3JlIHRoZXkgYXJlIHB1Ymxpc2hlZCBwdWJsaWNseS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLSAgLWNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc1VsdGltYXRlbHkgVGhlIHByb2Nlc3MgZm9yIGdlbmVyYXRpbmcgYW5kIGRlcGxveWluZyBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgaXMgaW4gZGlyZSBuZWVkIHRvIG9vZiBpdHMgb3duIGRvY3VtZW50YXRpb24uICBBIGNoQSBjaGFsbGVuZ2UgaW4gdGhpcyBjdXJyZW50IGNyaXNzIGlzIGhhcyBlYmVlbiBrbm93aW5nIHdoYXQgd2hlcmUgdG8gcnVuIHVwZGF0ZXMgYW5kIHdoYXQgdXBkYXRlcyB0byBydW4uIEl04oCZcyBvbmUgdGhpbmcgdG8gcGFyc2UgdGhlIHNvdXJjZSBjb2RlIGFuZCBwcm9kdWNlIHRoZSByYXcgY29udGVudCwgYnV0IGFub3RoZXIgdGhpbmcgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZlcnMgd2hpY2ggbmVlZCB0byBydW4gdGh0byBhbmQgYXdhcmVuZXMgb2YgdGhlIHMgcyBvZiB0aGUgc2VydmVycyBwdWJsaWMgc2VydmVycy5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NGaW5hbGx5LCB0aGVyZSB3ZXJlIHVsdGltYXRlbEEgY29udHJpYnV0aW5nIGFjdG9mYWN0b3IgdG8gdGhlIGJyZWFrZG93biBpbiB0aGlzIGJyZWFrZG93biB3YXMgYSBmYWlsdXJlIHRvIG5vdGlmeSBkZXZlbG9wZXJzIHdoZW4gc291cmNlIGNvZGUgY2hhbmdlcyBicm9rZSB0aGUgbGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiBwcm9jZXNzLiBBIG5ldyBDSSBqb2IgdG8gcnVuIHRoZSBwYXJzZXIgY291bGQgaGlnaGxpZ2h0IHRoZXNlIGlzc3VlcyBhbmQgYnJpbnJhaXNlIGF3YXJlbmVzcyBiZWZvcmUgcHJvYmxlbXMgZXNjYWxhdGUgb3IgY2FzY2FkZS4gVGhhdCBob2VwZnVsbHkgZXdpbGwgbm90IGludm9sdmUgdG9vIG11Y2ggd29yaywgYmVjdWF1dCBuZWVkcyB0byBiZSB1bmRlcnRha2VuIGJ5IHNvbWVvbmUgd2lsbGluZyB0byBwdXNoIHRocm91Z2ggdGhlIGNoYW5nZXMuY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzRmluYWxseSAsIHRoZXJlIGlzIGEgYmFja2xvZyBvZiBmZWF0dXJlIHJlcXVlc3RzIGZvciB0aGUgZG9jdW1lbnRhdGlvbjogbmV3IGFsZXJ0cywgc3VwcG9ydGluZyBwYXN0cy1ieS1yZWZlcmVuY2UgcGFyYW10ZXJldHNyZXJzLSwgaW1wcm92aW5nIHJlZ29jZ29vZ25penRpb24gb2YgYXJlcmUgbXJhcmUgciBjb2RlIHBhdHRlcm5zLCBldGPigKYgT25jZSB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIHNtb290aGx5IGFuZCBlZGRkZXZlbG9wZXJzIGFyZSBhYmxlIHRvIHJlY3JlYXRlIHRoZSBzeXN0ZW0gb24gbG9jYWxseSAsIHRoZSBvdmVyYWxsIGRldmVsb3AgY3ljbGUgd3Nob3VsZCByZXN0YXJ0IC5ub3JtYSBubW9ybW5vcm1hbGVzdW1lLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGUgcHJvY2VzcyBmb3IgZ2VuZXJhdGluZyBhbmQgZGVwbG95aW5nIGRvY3VtZW50YXRpb24gdXBkYXRlcyBpcyBpbiBkaXJlIG5lZWQgb2YgaXRzIG93biBkb2N1bWVudGF0aW9uLiBBIGNoYWxsZW5nZSBpbiB0aGlzIGN1cnJlbnQgY3Jpc2lzIGhhcyBiZWVuIGtub3dpbmcgd2hlcmUgdG8gcnVuIHVwZGF0ZXMgYW5kIHdoYXQgdXBkYXRlcyB0byBydW4uIEl04oCZcyBvbmUgdGhpbmcgdG8gcGFyc2UgdGhlIHNvdXJjZSBjb2RlIGFuZCBwcm9kdWNlIHRoZSByYXcgY29udGVudCwgYnV0IGFub3RoZXIgdGhpbmcgdG8gaGF2ZSBhY2Nlc3MgdG8gYW5kIGF3YXJlbmVzcyBvZiB0aGUgcHVibGljIHNlcnZlcnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QSBjb250cmlidXRpbmcgZmFjdG9yIHRvIHRoaXMgYnJlYWtkb3duIHdhcyBhIGZhaWx1cmUgdG8gbm90aWZ5IGRldmVsb3BlcnMgd2hlbiBzb3VyY2UgY29kZSBjaGFuZ2VzIGJyb2tlIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gcHJvY2Vzcy4gQSBuZXcgQ0kgam9iIHRvIHJ1biB0aGUgcGFyc2VyIGNvdWxkIGhpZ2hsaWdodCB0aGVzZSBpc3N1ZXMgYW5kIHJhaXNlIGF3YXJlbmVzcyBiZWZvcmUgcHJvYmxlbXMgZXNjYWxhdGUgb3IgY2FzY2FkZS4gVGhhdCBob3BlZnVsbHkgd2lsbCBub3QgaW52b2x2ZSB0b28gbXVjaCB3b3JrLCBidXQgbmVlZHMgdG8gYmUgdW5kZXJ0YWtlbiBieSBzb21lb25lIHdpbGxpbmcgdG8gcHVzaCB0aHJvdWdoIHRoZSBjaGFuZ2VzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkZpbmFsbHksIHRoZXJlIGlzIGEgYmFja2xvZyBvZiBmZWF0dXJlIHJlcXVlc3RzIGZvciB0aGUgZG9jdW1lbnRhdGlvbjogbmV3IGFsZXJ0cywgc3VwcG9ydGluZyBwYXNzLWJ5LXJlZmVyZW5jZSBwYXJhbWV0ZXJzLCBpbXByb3ZpbmcgcmVjb2duaXRpb24gb2YgcmFyZXIgY29kZSBwYXR0ZXJucywgZXRj4oCmIE9uY2UgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBzbW9vdGhseSBhbmQgZGV2ZWxvcGVycyBhcmUgYWJsZSB0byByZWNyZWF0ZSB0aGUgc3lzdGVtIGxvY2FsbHksIHRoZSBub3JtYWwgZGV2ZWxvcCBjeWNsZSBzaG91bGQgcmVzdW1lLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tICAtLSAgLWhlcmUgd2FzIGEgcHJlLWV4aXN0aW5nIGJ1ZyB3aGljaCB3aGVyZSB0aGUgc291cmNlIHNuaXBwZXRzIGZvciBtYW55IHN5bWJvbHMgd2VyZSBvZmZzZXQ7IHRoaXMgaGFzIGJlZW4gbGZpeGVmaXhlc2QgaW4gdGh0b2RheeKAmXMgdXBkYXRld2EgYSByLXh1ZyB3aHJ0aHN1cmlwcHRzZnIgbWF5eW1ibHMgd2VmZnN0OyB0aXNoYXMgYmVlbiBmeGRvZGF54oCZc3VwZGF0LSAgLVNvdXJjZSBibG9jayBmb3IgPGNvZGU+d3BfaW50ZXJhY3Rpdml0eSgpPC9jb2RlPiBhZnRlciB0aGUgdXBkYXRlLgUHCAQIBggFCAcIBwgGCA4IDggLCAZIAQYIBBgWEx8aIBsvKgkZISIWCAoIBAgGIQgHBApHAAs3HisVByskAwcQAgEIBwQKRwALBCwLAgEkIywEGTMLJhKEAQgHBApHAAsEAwcCBAMECA8GAxQTCUsCCAcECkMABwQCCA8LCAcECkMABwQCCA8LBAcEBwYREgYHBQ4GERIGBwgJAb4RGa8GGbYCDAcMB0EACAcECkcACz89QgADCBFBAAI2KYwBBAgHBApHAAs4AQYBFBsSDysgA0EACkEAMwYTCAcECkcACwIXECRBhwIFBwUHuQGXAb8RAU8FAQ8HBApHAAurAwMXAgEHBApHAAs7AgGKBQcKCwcIBAYDFBMJSwIHBAoDBwQCCA8LBwQKAwcEAggPCwYREgYgERIGDwkBmAkHAwIBAgECQQACQQECAQIBBgEDQQBEAEEFBUEDQgAFAQYBBEEAAkEBAkECAkEAAgECQQQFAkEBB6AGGa8GGbYCQQBDAAcECkcAC78DjAEEBwQKRwALOQYBgQE6IANBAAuNAQcECkcACwIXECSJBLkBlwG\/EQgPCA8IDwgPCA8IDwgPAQgPoQscAaEECwRBAAMXBQ4DQQEIBw8ECgeIBAcLCAcPBAoHgQQHAb4BAQcLCAcPBAoGAxQTBwlLAAYISwEIBw8ECkMAB4kBBAIIDwsIBw8ECkMAB4IBBAIIDwsIBw8ECgeQBwcLCAcPBAoHhAQHCwgHDwQKB4sEBwsIBw8ESgAICwgHDwQKBwgFCwgHDwQKBwYLCAcPBAoHvAWZAgsIBw8ECge+AZcBCxAHowIGCqACCQGpAqoCAacCAgufAgoBqQKqAgUBEaoCFxIGkwEFGIEBFxo0Cw4BBgcMG4sBFhABBgcFswELpgEMHJcBGwSvAQMKqQEJDaYBDAKxAQELqAEKD6QBHSCTAR8HrAEGC6gBCwGyAQ+kAQ6zARiZARsCsQEBC6gBDQmqAQgGrQEFhAEVGkEBgAEECAcECgcLDwcMKw8EGCcYCAkBBgcYAooBAWYACUUAHZQBQQCSAQ6FAQIWCIUBCAMBBgcFLjQ5BpwBBaIBE40BDAEGBwoLpAEKD6ABDgOsAQMJpgEIDKMBDReYAQxBAAoQnwEPB6gBBgGuASmGAQkGAQYHNQW3AQQKsgEJgAETKRMCQQAHOgQMggWOARCqBKQJCQUOA0ECCAcECgcLEgoIDCMXBBAGOQUBPgQ7AxclAwgBBgcPFjYpDQEGBw8kKCMgLCQ+QQAMAkEABQcBCAcECgcLCAcECkcAC7cBDAEUBiwBCgIGEg4XBgQlRAADAZEBCAcECkcACwIHBggHBAoHCy0GCwUBAhsDAQQCAQQIBwQKBwsaBwQBLwgHBAoHCwgHBApHAAuAAQIBiQEEEggHBApHAAsCBwYIBwQKBwscBCQDQQAFASAeBB4RMhAMNwsDgAECHCcbBzwGAoEBQQCCAS0WLgOAAQIIOwc1DhUIBwQKBws0AQUCFQseBA4zAw0KEQEGBxuQAQgBjwEEjAEDBIwBAy4iCAsBBgcbBJkBAwmUAQgJlAEIBpcBBgOaAUIAmwEBB5YBRgCXAQUtMCwBnAEDmgECAZwBnQEBBEEABQECIB4EAkECBQEDIB4ECAcECgcLKwEFEw0eEQKBAQEKOQkVLhSBAQIFCa0EoiBBABRBAggHBAoHCwMCCAkTPQIBEgEFAQYFAkMACw0BDA4EDQ4VCAcECgcLBwGgAQIJAQUBBgcBkQKyBEECCAcECgcLCAcECkcACwMFEAgHBApHAAuxBQcBA4gBAioBCAcECkcAC0EACQELBIUBASEFFgI+Ax4HhAECKgGAAQIIBwEkCAcECkcACyFBAQKvDEECCAcECkcASwCPAQQaBSACBwENBZQCIw8KCQgPCAcECkcACx0PBAoRlQEBogEEPEEABgEhBIkBCAcECkcACwcBmgEBFANCAAMBDgIBAgQBCAIEAQQBPwMrAwcBBQEIDgEIBwEFAQUGBasSQQYcBoYBBQQBBQIOAgNBAQUBAgECAwIBBAEDBQMEAgpBAAYFQQKCAQ8BDQANAQIASwEBABcBAQDWAUIBAQBBAAIAQQACAEEAAAJBAAIAQQACAEEAAgBBAAIAQQACQABBAAIAQQACAEEAAAJBAAIAQQACAEEAAgBBAAIAQQACQABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQgBeQR0VQgABAgM9BUEAAkECCp4CARwEBg8LBwQOggEGAzNBERFBIC5BAA1BCpACAZ0CQQMukwEYQQBFAAgDARoBBEECBAESCEIAAQIBQgANAwEFAQIPQQIeQbwDB0GgAgP3BwB9AX2G9PsMfQB3BG9wZW53AHl3AHcIc3RhbmRhcmR3AHcAeXl3AHl9AHl5dwB3AHh5dgIYaW1hZ2VfZ2VuZXJhdG9yX3NldHRpbmdzdgQIdGVtcGxhdGV3B2hpZ2h3YXkQZGVmYXVsdF9pbWFnZV9pZH0ABGZvbnR3AAdlbmFibGVkeQd2ZXJzaW9ufQJ1AHh3DmNvcmUvcGFyYWdyYXBoeXh3DmNvcmUvcGFyYWdyYXBoeXh3BWxhcmdldwxjb3JlL2dhbGxlcnl1AHUAdwRpY29udQB4eXh5dwRhdXRveHcKY29yZS9pbWFnZXdCaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4MzUzLTEucG5ndzlodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMi5wbmd9uewOdwVsYXJnZXcFbWVkaWF4dwpjb3JlL2ltYWdld0JodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzNzktMS5wbmd3OWh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0zLnBuZ3267A53BWxhcmdldwVtZWRpYXcEZmlsZXcFZHJhZnR1AX2XEncTMjAyNi0wMi0yNFQyMDo0NDozOXd5VGhlIHN0YWxlIHNvdXJjZSBibG9jayBzdGFydGVkIGFuZCBlbmRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgRG9jQmxvY2sgY29tbWVudCwgc2hvd2luZyBub3RoaW5nIG9mIHRoZSBhc3NvY2lhdGVkIGZ1bmN0aW9uLndXSW4gdGhlIHVwZGF0ZXMgdGhlIHNvdXJjZSBibG9jayBzdGFydHMgYW5kIGVuZHMgd2l0aCB0aGUgc3ltYm9sIGRlZmluaXRpb24gYXMgZXhwZWN0ZWQueHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5AQCyCgB3JDA3NWZiM2Y0LTBhYzYtNGJiZS04YTc1LTUyZjQyN2VjNzc1N3eVAjxwPkZvciB0aG9zZSB1bmF3YXJlLCB0aGUgZG9jdW1lbnRhdGlvbiBhdCBodHRwczovL2RldmVsb3Blci53b3JkcHJlc3Mub3JnL3JlZmVyZW5jZSBoYXNu4oCZdCBiZWVuIHVwZGF0ZWQgc2luY2UgV29yZFByZXNzIDYuNCDigJQgdGhhdOKAmXMgb3ZlciB0d28geWVhcnMgYWdvISBUb2RheSwgdGhhbmtmdWxseSwgdGhpcyBwb3N0IGlzIGFubm91bmNpbmcgdGhhdCB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gaXMgbm93IHVwZGF0ZWQgYXMgb2YgV29yZFByZXNzIDYuOS4xLjwvcD53JDk3OWQzOWI2LTMzZDAtNDMxYi1iNTMzLWIwZTQyYTM4OGVkZHeRAzxwPldvcmRQcmVzcyBoYXMgc2VlbiBzaWduaWZpY2FudCBjaGFuZ2Ugc2luY2UgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiBwcm9jZXNzIHN0b3BwZWQgd29ya2luZywgc28gaWYgeW91IGZvdW5kIHRoYXQgc29tZXRoaW5nIHdhcyBtaXNzaW5nIHRoZW4gaXQgd2FzbuKAmXQganVzdCB5b3UuIFRob3NlIG5ldyBpbnRlcmZhY2VzLCBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIGFuZCBob29rcyBzaG91bGQgYmUgdGhlcmUgbm93LiBGdXJ0aGVyLCBiZWZvcmUgdGhlIHByb2Nlc3Mgc3RvcHBlZCBlbnRpcmVseSwgc29tZXRoaW5nIGhhZCBiZWVuIGxlYWRpbmcgdG8gY29kZSBibG9ja3Mgc2hvd2luZyB0aGUgd3Jvbmcgc291cmNlIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHJlZmVyZW5jZS48L3A+dyQyYTMxZmIzMS05NjMxLTQ3MjUtYThmOC1lNzQ4M2ZiZmNjMjh3WTxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWdhbGxlcnkgaGFzLW5lc3RlZC1pbWFnZXMgY29sdW1ucy1kZWZhdWx0IGlzLWNyb3BwZWQiPgoKPC9maWd1cmU+dyQwYmZhODQ2Zi0zNWZhLTQ4MjUtOGE3NS05YjBlMjBjOTRmYWR34AM8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMi5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzNTMtMS5wbmciIGFsdD0iVGhlIHN0YWxlIHNvdXJjZSBibG9jayBzdGFydGVkIGFuZCBlbmRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgRG9jQmxvY2sgY29tbWVudCwgc2hvd2luZyBub3RoaW5nIG9mIHRoZSBhc3NvY2lhdGVkIGZ1bmN0aW9uLiIgY2xhc3M9IndwLWltYWdlLTEyMTY1NyIgLz48L2E+PGZpZ2NhcHRpb24gY2xhc3M9IndwLWVsZW1lbnQtY2FwdGlvbiI+U291cmNlIGJsb2NrIGZvciA8Y29kZT53cF9pbnRlcmFjdGl2aXR5KCk8L2NvZGU+IG92ZXIgdGhlIHBhc3QgdHdvIHllYXJzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT53JGEzYzJmN2ZmLTYyMDktNGNjOC04NDA1LTA0MzIyZGVjY2MxM3e3AzxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0zLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDM3OS0xLnBuZyIgYWx0PSJJbiB0aGUgdXBkYXRlcyB0aGUgc291cmNlIGJsb2NrIHN0YXJ0cyBhbmQgZW5kcyB3aXRoIHRoZSBzeW1ib2wgZGVmaW5pdGlvbiBhcyBleHBlY3RlZC4iIGNsYXNzPSJ3cC1pbWFnZS0xMjE2NTgiIC8+PC9hPjxmaWdjYXB0aW9uIGNsYXNzPSJ3cC1lbGVtZW50LWNhcHRpb24iPlNvdXJjZSBibG9jayBmb3IgPGNvZGU+d3BfaW50ZXJhY3Rpdml0eSgpPC9jb2RlPiBhZnRlciB0aGUgdXBkYXRlLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT53JDE0OTM4NWJjLWJhMTAtNGRmMi1iM2Q4LWZhMTI1OTc3NGNlN3fZAzxwPlRoaXMgd29yayB3YXMgdGhlIHJlc3VsdCBvZiBjb2xsYWJvcmF0aW9uIGJldHdlZW4gbWFueSBwZW9wbGUsIG1vc3Qgb2Ygd2hvbSBoYXZlIG5ldmVyIHdvcmtlZCB3aXRoIHRoaXMgcHJvY2VzcyBpbiB0aGUgcGFzdC4gQGpvaG5iaWxsaW9uLCBAam9uc3VycmVsbCwgYW5kIEB0bWRrIGFsbCB3b3JrZWQgb24gZGlmZmVyZW50IGFwcHJvYWNoZXMgdG8gcmVzdG9yaW5nIHRoZSBhYmlsaXR5IHRvIHBhcnNlIFdvcmRQcmVzc+KAmSBzb3VyY2UgY29kZTsgYW5kIEBkZDMyIGFuZCBAY29mZmVlMmNvZGUgbWFkZSBzdXJlIHRoYXQgdGhlIHVwZGF0ZXMgcmVhY2hlZCB0aGUgcHVibGljIHdlYnNpdGU7IGFuZCBvZiBjb3Vyc2UsIG51bWVyb3VzIHBlb3BsZSBpbiB0aGUgI2RvY3MgdGVhbSByZXBvcnRlZCBhbmQgdHJpYWdlZCBidWcgcmVwb3J0cyB0aGF0IHdlcmUgc3ltcHRvbXMgb2YgdGhpcyBwcm9jZXNzIGJyZWFrZG93bi48L3A+dyQxNTgwZDkyOC03ODAwLTQwZTEtOTMzNy0wMzRiNDExYzgwMDZ3jQI8cD5UaGVyZSBpcyBzdGlsbCBzaWduaWZpY2FudCB3b3JrIHRvIGRvLCBhcyB0aGVyZSBpcyBubyB3YXkgKGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyBub3RlKSB0byBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHVwY29taW5nIFdvcmRQcmVzcyA3LjAgcmVsZWFzZSwgYnV0IGFzIHRoZSBuZXcgaXNzdWVzIGFyZSBpcm9uZWQgb3V0LCB5b3UgY2FuIGV4cGVjdCB0aGUgdXBkYXRlcyB0byBjb21lIG11Y2ggc29vbmVyIHRoYW4gMjAyOCDwn5iJPC9wPnckMDU5YzFmOGMtY2Q4MC00NDFlLWI3MzctZjBhYTZlYjliYTE5d5ICPHA+VGhlcmUgc3RpbGwgcmVtYWluIGEgbnVtYmVyIG9mIGtub3duIGlzc3VlcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gUEhQU3RhbiB0eXBlIGFubm90YXRpb25zLiBXb3JrIGlzIG9uZ29pbmcgdG8gaW1wcm92ZSB0aGUgb3ZlcmFsbCBidWlsZCBwcm9jZXNzIGFuZCB0cnkgdG8gcmVkdWNlIHRoZSBmZWVkYmFjayBsb29wIGJldHdlZW4gbWFraW5nIGNvZGUgY2hhbmdlcyBhbmQgc2VlaW5nIHRob3NlIHJlZmxlY3RlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvbmxpbmUuPC9wPn94dw5jb3JlL3BhcmFncmFwaHl4dw5jb3JlL3BhcmFncmFwaHl4dwVsYXJnZXcMY29yZS9nYWxsZXJ5dQB1AHcEaWNvbnUAeHl4eXcEYXV0b3h3CmNvcmUvaW1hZ2V3Qmh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDM1My0xLnBuZ3c5aHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTIucG5nfbnsDncFbGFyZ2V3BW1lZGlheHcKY29yZS9pbWFnZXdCaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4Mzc5LTEucG5ndzlodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMy5wbmd9uuwOdwVsYXJnZXcFbWVkaWF3BGZpbGV3eVRoZSBzdGFsZSBzb3VyY2UgYmxvY2sgc3RhcnRlZCBhbmQgZW5kZWQgaW4gdGhlIG1pZGRsZSBvZiBhIERvY0Jsb2NrIGNvbW1lbnQsIHNob3dpbmcgbm90aGluZyBvZiB0aGUgYXNzb2NpYXRlZCBmdW5jdGlvbi53V0luIHRoZSB1cGRhdGVzIHRoZSBzb3VyY2UgYmxvY2sgc3RhcnRzIGFuZCBlbmRzIHdpdGggdGhlIHN5bWJvbCBkZWZpbml0aW9uIGFzIGV4cGVjdGVkLnh3DmNvcmUvcGFyYWdyYXBoeXh3DmNvcmUvcGFyYWdyYXBoeXh3DmNvcmUvcGFyYWdyYXBoeXckMDc1ZmIzZjQtMGFjNi00YmJlLThhNzUtNTJmNDI3ZWM3NzU3d5UCPHA+Rm9yIHRob3NlIHVuYXdhcmUsIHRoZSBkb2N1bWVudGF0aW9uIGF0IGh0dHBzOi8vZGV2ZWxvcGVyLndvcmRwcmVzcy5vcmcvcmVmZXJlbmNlIGhhc27igJl0IGJlZW4gdXBkYXRlZCBzaW5jZSBXb3JkUHJlc3MgNi40IOKAlCB0aGF04oCZcyBvdmVyIHR3byB5ZWFycyBhZ28hIFRvZGF5LCB0aGFua2Z1bGx5LCB0aGlzIHBvc3QgaXMgYW5ub3VuY2luZyB0aGF0IHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpcyBub3cgdXBkYXRlZCBhcyBvZiBXb3JkUHJlc3MgNi45LjEuPC9wPnckOTc5ZDM5YjYtMzNkMC00MzFiLWI1MzMtYjBlNDJhMzg4ZWRkd5EDPHA+V29yZFByZXNzIGhhcyBzZWVuIHNpZ25pZmljYW50IGNoYW5nZSBzaW5jZSB0aGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uIHByb2Nlc3Mgc3RvcHBlZCB3b3JraW5nLCBzbyBpZiB5b3UgZm91bmQgdGhhdCBzb21ldGhpbmcgd2FzIG1pc3NpbmcgdGhlbiBpdCB3YXNu4oCZdCBqdXN0IHlvdS4gVGhvc2UgbmV3IGludGVyZmFjZXMsIGNsYXNzZXMsIG1ldGhvZHMsIGZ1bmN0aW9ucywgYW5kIGhvb2tzIHNob3VsZCBiZSB0aGVyZSBub3cuIEZ1cnRoZXIsIGJlZm9yZSB0aGUgcHJvY2VzcyBzdG9wcGVkIGVudGlyZWx5LCBzb21ldGhpbmcgaGFkIGJlZW4gbGVhZGluZyB0byBjb2RlIGJsb2NrcyBzaG93aW5nIHRoZSB3cm9uZyBzb3VyY2UgZm9yIGVhY2ggaXRlbSBpbiB0aGUgcmVmZXJlbmNlLjwvcD53JDJhMzFmYjMxLTk2MzEtNDcyNS1hOGY4LWU3NDgzZmJmY2MyOHdZPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2stZ2FsbGVyeSBoYXMtbmVzdGVkLWltYWdlcyBjb2x1bW5zLWRlZmF1bHQgaXMtY3JvcHBlZCI+Cgo8L2ZpZ3VyZT53JDBiZmE4NDZmLTM1ZmEtNDgyNS04YTc1LTliMGUyMGM5NGZhZHfgAzxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0yLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDM1My0xLnBuZyIgYWx0PSJUaGUgc3RhbGUgc291cmNlIGJsb2NrIHN0YXJ0ZWQgYW5kIGVuZGVkIGluIHRoZSBtaWRkbGUgb2YgYSBEb2NCbG9jayBjb21tZW50LCBzaG93aW5nIG5vdGhpbmcgb2YgdGhlIGFzc29jaWF0ZWQgZnVuY3Rpb24uIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjU3IiAvPjwvYT48ZmlnY2FwdGlvbiBjbGFzcz0id3AtZWxlbWVudC1jYXB0aW9uIj5Tb3VyY2UgYmxvY2sgZm9yIDxjb2RlPndwX2ludGVyYWN0aXZpdHkoKTwvY29kZT4gb3ZlciB0aGUgcGFzdCB0d28geWVhcnMuPC9maWdjYXB0aW9uPjwvZmlndXJlPnckYTNjMmY3ZmYtNjIwOS00Y2M4LTg0MDUtMDQzMjJkZWNjYzEzd7cDPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTMucG5nIj48aW1nIHNyYz0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4Mzc5LTEucG5nIiBhbHQ9IkluIHRoZSB1cGRhdGVzIHRoZSBzb3VyY2UgYmxvY2sgc3RhcnRzIGFuZCBlbmRzIHdpdGggdGhlIHN5bWJvbCBkZWZpbml0aW9uIGFzIGV4cGVjdGVkLiIgY2xhc3M9IndwLWltYWdlLTEyMTY1OCIgLz48L2E+PGZpZ2NhcHRpb24gY2xhc3M9IndwLWVsZW1lbnQtY2FwdGlvbiI+U291cmNlIGJsb2NrIGZvciA8Y29kZT53cF9pbnRlcmFjdGl2aXR5KCk8L2NvZGU+IGFmdGVyIHRoZSB1cGRhdGUuPC9maWdjYXB0aW9uPjwvZmlndXJlPnckMTQ5Mzg1YmMtYmExMC00ZGYyLWIzZDgtZmExMjU5Nzc0Y2U3d9kDPHA+VGhpcyB3b3JrIHdhcyB0aGUgcmVzdWx0IG9mIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBtYW55IHBlb3BsZSwgbW9zdCBvZiB3aG9tIGhhdmUgbmV2ZXIgd29ya2VkIHdpdGggdGhpcyBwcm9jZXNzIGluIHRoZSBwYXN0LiBAam9obmJpbGxpb24sIEBqb25zdXJyZWxsLCBhbmQgQHRtZGsgYWxsIHdvcmtlZCBvbiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byByZXN0b3JpbmcgdGhlIGFiaWxpdHkgdG8gcGFyc2UgV29yZFByZXNz4oCZIHNvdXJjZSBjb2RlOyBhbmQgQGRkMzIgYW5kIEBjb2ZmZWUyY29kZSBtYWRlIHN1cmUgdGhhdCB0aGUgdXBkYXRlcyByZWFjaGVkIHRoZSBwdWJsaWMgd2Vic2l0ZTsgYW5kIG9mIGNvdXJzZSwgbnVtZXJvdXMgcGVvcGxlIGluIHRoZSAjZG9jcyB0ZWFtIHJlcG9ydGVkIGFuZCB0cmlhZ2VkIGJ1ZyByZXBvcnRzIHRoYXQgd2VyZSBzeW1wdG9tcyBvZiB0aGlzIHByb2Nlc3MgYnJlYWtkb3duLjwvcD53JDE1ODBkOTI4LTc4MDAtNDBlMS05MzM3LTAzNGI0MTFjODAwNneNAjxwPlRoZXJlIGlzIHN0aWxsIHNpZ25pZmljYW50IHdvcmsgdG8gZG8sIGFzIHRoZXJlIGlzIG5vIHdheSAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIG5vdGUpIHRvIGdlbmVyYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgdXBjb21pbmcgV29yZFByZXNzIDcuMCByZWxlYXNlLCBidXQgYXMgdGhlIG5ldyBpc3N1ZXMgYXJlIGlyb25lZCBvdXQsIHlvdSBjYW4gZXhwZWN0IHRoZSB1cGRhdGVzIHRvIGNvbWUgbXVjaCBzb29uZXIgdGhhbiAyMDI4IPCfmIk8L3A+dyQwNTljMWY4Yy1jZDgwLTQ0MWUtYjczNy1mMGFhNmViOWJhMTl3kgI8cD5UaGVyZSBzdGlsbCByZW1haW4gYSBudW1iZXIgb2Yga25vd24gaXNzdWVzLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBQSFBTdGFuIHR5cGUgYW5ub3RhdGlvbnMuIFdvcmsgaXMgb25nb2luZyB0byBpbXByb3ZlIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHRyeSB0byByZWR1Y2UgdGhlIGZlZWRiYWNrIGxvb3AgYmV0d2VlbiBtYWtpbmcgY29kZSBjaGFuZ2VzIGFuZCBzZWVpbmcgdGhvc2UgcmVmbGVjdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9ubGluZS48L3A+f3cTMjAyNi0wMi0yNFQyMTozMzowMnckODkyMGViNGEtN2MyMy00ODBiLWFhY2YtOThhMGFlZmQ5MTU1eHeVAjxwPkZvciB0aG9zZSB1bmF3YXJlLCB0aGUgZG9jdW1lbnRhdGlvbiBhdCBodHRwczovL2RldmVsb3Blci53b3JkcHJlc3Mub3JnL3JlZmVyZW5jZSBoYXNu4oCZdCBiZWVuIHVwZGF0ZWQgc2luY2UgV29yZFByZXNzIDYuNCDigJQgdGhhdOKAmXMgb3ZlciB0d28geWVhcnMgYWdvISBUb2RheSwgdGhhbmtmdWxseSwgdGhpcyBwb3N0IGlzIGFubm91bmNpbmcgdGhhdCB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gaXMgbm93IHVwZGF0ZWQgYXMgb2YgV29yZFByZXNzIDYuOS4xLjwvcD53DmNvcmUvcGFyYWdyYXBoeXckNDA5MTVmZjQtZjc0NS00YzU3LWFhZDctNmEwYTRkMDk2YWEyeHeRAzxwPldvcmRQcmVzcyBoYXMgc2VlbiBzaWduaWZpY2FudCBjaGFuZ2Ugc2luY2UgdGhlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiBwcm9jZXNzIHN0b3BwZWQgd29ya2luZywgc28gaWYgeW91IGZvdW5kIHRoYXQgc29tZXRoaW5nIHdhcyBtaXNzaW5nIHRoZW4gaXQgd2FzbuKAmXQganVzdCB5b3UuIFRob3NlIG5ldyBpbnRlcmZhY2VzLCBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIGFuZCBob29rcyBzaG91bGQgYmUgdGhlcmUgbm93LiBGdXJ0aGVyLCBiZWZvcmUgdGhlIHByb2Nlc3Mgc3RvcHBlZCBlbnRpcmVseSwgc29tZXRoaW5nIGhhZCBiZWVuIGxlYWRpbmcgdG8gY29kZSBibG9ja3Mgc2hvd2luZyB0aGUgd3Jvbmcgc291cmNlIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHJlZmVyZW5jZS48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDc2ZmI3NmM1LTljNDMtNDIyOC1iOTA5LTVmZDc3ZTIxZDhlM3h3WTxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWdhbGxlcnkgaGFzLW5lc3RlZC1pbWFnZXMgY29sdW1ucy1kZWZhdWx0IGlzLWNyb3BwZWQiPgoKPC9maWd1cmU+dwxjb3JlL2dhbGxlcnl1AHUAdwRpY29udQB4eXh3BGZpbGV3BWxhcmdleXcEYXV0b3ckNmQxYjZkZGUtMGU2MC00NmU1LWI1YzAtYmY4YzRiNjJhYjAxeHfgAzxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0yLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDM1My0xLnBuZyIgYWx0PSJUaGUgc3RhbGUgc291cmNlIGJsb2NrIHN0YXJ0ZWQgYW5kIGVuZGVkIGluIHRoZSBtaWRkbGUgb2YgYSBEb2NCbG9jayBjb21tZW50LCBzaG93aW5nIG5vdGhpbmcgb2YgdGhlIGFzc29jaWF0ZWQgZnVuY3Rpb24uIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjU3IiAvPjwvYT48ZmlnY2FwdGlvbiBjbGFzcz0id3AtZWxlbWVudC1jYXB0aW9uIj5Tb3VyY2UgYmxvY2sgZm9yIDxjb2RlPndwX2ludGVyYWN0aXZpdHkoKTwvY29kZT4gb3ZlciB0aGUgcGFzdCB0d28geWVhcnMuPC9maWdjYXB0aW9uPjwvZmlndXJlPncKY29yZS9pbWFnZXdCaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTEwMjR4MzUzLTEucG5nd3lUaGUgc3RhbGUgc291cmNlIGJsb2NrIHN0YXJ0ZWQgYW5kIGVuZGVkIGluIHRoZSBtaWRkbGUgb2YgYSBEb2NCbG9jayBjb21tZW50LCBzaG93aW5nIG5vdGhpbmcgb2YgdGhlIGFzc29jaWF0ZWQgZnVuY3Rpb24udzlodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMi5wbmd9uewOdwVsYXJnZXcFbWVkaWF3JGQ0ZjdiNmQxLThiZjctNDJkNS04YzU1LWMyNzQzZTI3MzkyNHh3twM8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMy5wbmciPjxpbWcgc3JjPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzNzktMS5wbmciIGFsdD0iSW4gdGhlIHVwZGF0ZXMgdGhlIHNvdXJjZSBibG9jayBzdGFydHMgYW5kIGVuZHMgd2l0aCB0aGUgc3ltYm9sIGRlZmluaXRpb24gYXMgZXhwZWN0ZWQuIiBjbGFzcz0id3AtaW1hZ2UtMTIxNjU4IiAvPjwvYT48ZmlnY2FwdGlvbiBjbGFzcz0id3AtZWxlbWVudC1jYXB0aW9uIj5Tb3VyY2UgYmxvY2sgZm9yIDxjb2RlPndwX2ludGVyYWN0aXZpdHkoKTwvY29kZT4gYWZ0ZXIgdGhlIHVwZGF0ZS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+dwpjb3JlL2ltYWdld0JodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL2ZpbGVzLzIwMjYvMDIvaW1hZ2UtMTAyNHgzNzktMS5wbmd3V0luIHRoZSB1cGRhdGVzIHRoZSBzb3VyY2UgYmxvY2sgc3RhcnRzIGFuZCBlbmRzIHdpdGggdGhlIHN5bWJvbCBkZWZpbml0aW9uIGFzIGV4cGVjdGVkLnc5aHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY29yZS9maWxlcy8yMDI2LzAyL2ltYWdlLTMucG5nfbrsDncFbGFyZ2V3BW1lZGlhdyQyMjVlYWUzZS0xNzY0LTRjMzUtOWFlYi0yZmEzYzU2ZmExYmN4d9kDPHA+VGhpcyB3b3JrIHdhcyB0aGUgcmVzdWx0IG9mIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBtYW55IHBlb3BsZSwgbW9zdCBvZiB3aG9tIGhhdmUgbmV2ZXIgd29ya2VkIHdpdGggdGhpcyBwcm9jZXNzIGluIHRoZSBwYXN0LiBAam9obmJpbGxpb24sIEBqb25zdXJyZWxsLCBhbmQgQHRtZGsgYWxsIHdvcmtlZCBvbiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byByZXN0b3JpbmcgdGhlIGFiaWxpdHkgdG8gcGFyc2UgV29yZFByZXNz4oCZIHNvdXJjZSBjb2RlOyBhbmQgQGRkMzIgYW5kIEBjb2ZmZWUyY29kZSBtYWRlIHN1cmUgdGhhdCB0aGUgdXBkYXRlcyByZWFjaGVkIHRoZSBwdWJsaWMgd2Vic2l0ZTsgYW5kIG9mIGNvdXJzZSwgbnVtZXJvdXMgcGVvcGxlIGluIHRoZSAjZG9jcyB0ZWFtIHJlcG9ydGVkIGFuZCB0cmlhZ2VkIGJ1ZyByZXBvcnRzIHRoYXQgd2VyZSBzeW1wdG9tcyBvZiB0aGlzIHByb2Nlc3MgYnJlYWtkb3duLjwvcD53DmNvcmUvcGFyYWdyYXBoeXckNjcxZTY3OTItOTU4NC00MDBhLTkyYjktOGViNjJhNDAzOThkeHeNAjxwPlRoZXJlIGlzIHN0aWxsIHNpZ25pZmljYW50IHdvcmsgdG8gZG8sIGFzIHRoZXJlIGlzIG5vIHdheSAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIG5vdGUpIHRvIGdlbmVyYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgdXBjb21pbmcgV29yZFByZXNzIDcuMCByZWxlYXNlLCBidXQgYXMgdGhlIG5ldyBpc3N1ZXMgYXJlIGlyb25lZCBvdXQsIHlvdSBjYW4gZXhwZWN0IHRoZSB1cGRhdGVzIHRvIGNvbWUgbXVjaCBzb29uZXIgdGhhbiAyMDI4IPCfmIk8L3A+dw5jb3JlL3BhcmFncmFwaHl3JDM3ZTkzZjIyLWRjODktNGI1Yi05MDMwLTcwNzg4M2E5OWNlNHh3kgI8cD5UaGVyZSBzdGlsbCByZW1haW4gYSBudW1iZXIgb2Yga25vd24gaXNzdWVzLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBQSFBTdGFuIHR5cGUgYW5ub3RhdGlvbnMuIFdvcmsgaXMgb25nb2luZyB0byBpbXByb3ZlIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHRyeSB0byByZWR1Y2UgdGhlIGZlZWRiYWNrIGxvb3AgYmV0d2VlbiBtYWtpbmcgY29kZSBjaGFuZ2VzIGFuZCBzZWVpbmcgdGhvc2UgcmVmbGVjdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9ubGluZS48L3A+dw5jb3JlL3BhcmFncmFwaHl3JDI1ODQ2MmQyLTRmZGYtNDY3ZC04NGQ5LTVlNjY0NmU5OWM1N3h3CzwhLS1tb3JlLS0+dwljb3JlL21vcmV3AHl3JGRkZGE2Y2I4LTc1OTYtNDA2ZC1hNzU4LWUzYzQwZmYwOGFmMHh3KjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+VGltZWxpbmU8L2gyPncMY29yZS9oZWFkaW5nfQJ3JDFiODQyOTM5LTdjZWMtNDFhYy1hZGUwLWM1N2FlMTZkZTc2ZXh3ITx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+Cgo8L3VsPncJY29yZS9saXN0eXcAdyQyYmYxYzRiYy01ZjY4LTQ4NDItYTQ4ZC02YjY1OGNiOGIwZGV4d98EPGxpPkF1Z3VzdCAxLCAyMDIzIOKAlCA8YSBocmVmPSJodHRwczovL2NvcmUudHJhYy53b3JkcHJlc3Mub3JnL2NoYW5nZXNldC81NjM0NSI+WzU2MzQ1XTwvYT4gaW50cm9kdWNlcyBhIGNvZGUtc3R5bGluZyBjaGFuZ2UgdG8gcmVwbGFjZSA8Y29kZT5hcnJheV9rZXlfZXhpc3RzKCk8L2NvZGU+IHdpdGggPGNvZGU+aXNzZXQoKTwvY29kZT4uIFRoaXMgd2FzIGtub3duIHRvIGJlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGhwZG9jLXBhcnNlci9pc3N1ZXMvMTk5Ij51bnN1cHBvcnRlZCBieSB0aGUgZG9jcyBwYXJzZXI8L2E+IGJ1dCB0aGVyZSB3YXMgbm8gaW5kaWNhdGlvbiB0aGF0IHRoZSB1cGRhdGluZyBwcm9jZXNzIHdhcyBicm9rZW4uIEJlY2F1c2Ugb2YgYSBwYXJzaW5nIGVycm9yIHRoZSBwcm9jZXNzIHdhcyBibG9ja2VkOyB0aGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgbmVlZGVkIHRvIHVwZGF0ZSBpdHMgdW5kZXJseWluZyBkZXBlbmRlbmN5IG9uIDxjb2RlPm5pa2ljL3BocC1wYXJzZXI8L2NvZGU+IHdoaWNoIGlzIHdoYXQgdHVybnMgc291cmNlIGNvZGUgaW50byBhIHN0cnVjdHVyZSB0byBiZSBhbmFseXplZC48L2xpPncOY29yZS9saXN0LWl0ZW13JDgwODdhM2VjLTIwZDYtNDk5ZC04ZjhlLWEyOTdjNjM2YmQzZXh34AE8bGk+QXByaWwgMTUsIDIwMjQg4oCUIDxhIGhyZWY9Imh0dHBzOi8vY29yZS50cmFjLndvcmRwcmVzcy5vcmcvY2hhbmdlc2V0LzU4MDA5Ij5bNTgwMDldPC9hPiBpbnRyb2R1Y2VzIHR5cGUgYW5ub3RhdGlvbnMgZm9yIG9wdGlvbmFsIHR5cGVzLCA8Y29kZT4\/YXJyYXk8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+YXJyYXk8L2NvZGU+LCB3aGljaCB0aGUgcGFyc2VyIGNvdWxkIG5vdCA8L2xpPncOY29yZS9saXN0LWl0ZW13JGVlYWU0MGQwLTE1ZTctNDljNS1hNGNmLWE4NzJjMTc5MTVhN3h3DmNvcmUvbGlzdC1pdGVtdxMyMDI2LTAyLTI0VDIxOjQ2OjI2dyRiYTlhYTQyZC04ZjE3LTQxZTgtYmQzMy0wOTE3YTgxMTQ5MmJ4dw5jb3JlL2xpc3QtaXRlbXckMDQwN2NkZmUtZDUzNC00ODU3LWEyMTAtMTdhNjNkMjFlNDBieHcOY29yZS9saXN0LWl0ZW13JDY2MWMwZDUyLTEwNmEtNDE3ZS1hMjdlLTIxYTMxNDUxNTEyMXckMjRlMzE3ZmYtMjM3Zi00Yjc5LWJmMGQtYmQ5NzdhNTJkZjFleHcOY29yZS9wYXJhZ3JhcGh5dyQ4MDdiM2VlOC0yMWVlLTRiZjEtOWNmMy0yZDc1OWU1YzM0OGR4dw5jb3JlL3BhcmFncmFwaHl3JGMxZDgyMjFhLTYzZWYtNDZlZC05ZTg5LWVhNjAyYmRlOTQ3NncJY29yZS9saXN0eXcAdyRiZjM5Mjc5YS01MGEwLTQzM2ItOWM3OC1kZjI1OTZjZmY2NzZ4dw5jb3JlL2xpc3QtaXRlbXckZGJkZThhZmMtODFhMS00YmI1LThiZDMtOGQ1MzFhNGVmYjU5eHcOY29yZS9saXN0LWl0ZW13JDA0MDc0MGE1LTk3ZGYtNDYyNi1iM2I3LWZlZjllYmEwNDg4N3h3DmNvcmUvbGlzdC1pdGVtdyQ3OTRkZDViOC02OGM1LTRhMDMtYjUxZC02YWYwZWIyYTU1YjN3JDYwYjNkMjU3LWNlZjEtNDk4MS04N2Y5LWUyNTQxMzU4NzJkZHh3DmNvcmUvcGFyYWdyYXBoeXckNzMwNmE1MDMtYzdiNi00NWRiLThkMDgtOTFjZmZkNDhlYjc5eHcOY29yZS9wYXJhZ3JhcGh5dyQ1ODlkN2NjYi0xNDk1LTQ4NzUtYjE4YS02NDllYTkzMmM1NWZ3CWNvcmUvbGlzdHl3AHckMWRmYWMwM2YtNWY3Yy00ODcwLWExN2MtZTA1MjA1ZWNkNzE3eHcOY29yZS9saXN0LWl0ZW13JGQ1NjMxY2VkLTA2ZDMtNGM0Ni04YjJlLTY2ODE4YjhmMjcxNXh3DmNvcmUvbGlzdC1pdGVtdyQzNWE2MzQ4OS0xNGM0LTQ3YmEtOTE2Zi0yMTkxZWM0YTc1MWF4dw5jb3JlL2xpc3QtaXRlbXcTMjAyNi0wMi0yNFQyMjoxMDo0MnckMzIwNTBlYmQtM2JmMy00Zjk5LWI3YzAtMDI1OTEwYmVkYzAweHcOY29yZS9saXN0LWl0ZW13JGYxMTI2NmE2LWE2NTctNDRiMi1iNTQ2LTQ3NDFmNjNjMmM4N3h3DmNvcmUvbGlzdC1pdGVtdxMyMDI2LTAyLTI0VDIyOjEzOjMwdyRjNjE3NWUxZS0wMzZhLTQ2MDYtOTc3NC1lNjgzNGJlMzA4ZGV4dw5jb3JlL2xpc3QtaXRlbXckODVmNDZmZjEtODQwMC00NjFiLWFjY2EtNjUxNWJjNjlkMDMwdyQ2Y2ViZWFiMi1jMDdhLTRhY2QtOTk4YS1mMmFiY2Y3MDUwMGV4dw5jb3JlL3BhcmFncmFwaHl3JGY2NGY3MzYxLTBlMzYtNDRmNy1iZjYxLWJhZjkwNTU1Nzk5OHcMY29yZS9oZWFkaW5nfQJ3JDg2MDQ1NzllLThmYmQtNGZiYS1hMjI2LTQ0NDZkNzA0MGRiM3h3DmNvcmUvcGFyYWdyYXBoeXckODJiYjRlODYtMTI0Mi00MTRkLTg5ZGMtMWI0NTk3ZWJiNWYweHcOY29yZS9wYXJhZ3JhcGh5dyRmYmJhNjY5OS1kMjQxLTQyODQtOTRlZi04ZDcyY2JjZDQ0Y2N4dw5jb3JlL3BhcmFncmFwaHl3EzIwMjYtMDItMjRUMjI6MTc6MjB3JGU5MjY5OTQwLWYzOWMtNDIwYi04MjhjLTllZTczYzVjNTdlYXh3DmNvcmUvcGFyYWdyYXBoeXckMGEyOGUzZjEtNTI3NC00Y2E0LWFhOTMtMzVkN2UxNjYyOTdkeHcOY29yZS9wYXJhZ3JhcGh5dyQwNzY5ZTVkZi0xNWFmLTQ1ZTUtOWY2YS1mOWU0OGEzMWY3YTR4dw5jb3JlL3BhcmFncmFwaHl3EzIwMjYtMDItMjRUMjI6MjE6NDl3EzIwMjYtMDItMjRUMjI6MjE6NTJ3EzIwMjYtMDItMjRUMjI6MjM6MDN7QnnJG\/rpIAB9puLKgQ1\/f393Qmh0dHBzOi8vbWFrZS53b3JkcHJlc3Mub3JnL2NvcmUvZmlsZXMvMjAyNi8wMi9pbWFnZS0xMDI0eDM3OS0xLnBuZ3dXSW4gdGhlIHVwZGF0ZXMgdGhlIHNvdXJjZSBibG9jayBzdGFydHMgYW5kIGVuZHMgd2l0aCB0aGUgc3ltYm9sIGRlZmluaXRpb24gYXMgZXhwZWN0ZWQufbrsDgO8gMvJDwYBARkAAQAhtxkBAQGxEOq48McKAQAAprHlwAaJAgDPCgHiBtgEBgMBAQEBAQIBAQABAQEBAQUBAgEABAMDAAEAAQQBAAEAAQECBAEFAQMCAQIAAwABAAIAAQEBAQMAAQAFAQEAAQa3CPUHzwoR4QUbAaACCwMCAhcEDgiaBAYBfXNEAQCYCACKA5gBhgFWAQ8HqAEKqAEB0gIBqAELqAEB1wIBEMEBEQZXGFcaZhv2AQtxHHEEcQpxDXECcQtxD4ABIHEHcQtyAXEP5AEYcwJxC3QJcQZxdABbEisqJ04CSiaqAQFRDlwIYi5sBsIBE3ALbQ9tA24JbQxvF28QbQdtAW0plwEFegp6QBI8AYoLBA4JGR0jKgY9AT0EPRdMFogBJEogTz4ADwAOBgl2DAAUBSwACgEGEQ4WBgMlA1oAAQABAQECNwULBAEBHgAEASYGBAAvBpUBAxMAAQABAQECKiMDAEkdEUEMQQNBHEEHQQJBAUEtQwNBCEE1IjsHFTozqwEBTgROBE4uXQRbCVsJWwZcA1sCWwdbBlstWwFbA1sBW2kARgCAAQUTOwJBCkEVQUEG2BIAARoKARESUgAFAAsEAwoNDBIMMQBgAQkABQDRAw0CAAEAAgABAhv7AkgBKgAJABUDRQAhBBYBPgIeBkQBKgBAATQHIQABALEGBggKTwMaBCABBwANBJQBIg8JCQcXHA8DChBVAGIDPAApA1gAWgAUAgIBAwAOAQEBBAAIBgQAPwIrAgcABgcOAAgGAQQBBLYJDRwFRgQEAAUBVAAGAw==\",\"updateId\":565664776}","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[3453,2636],"class_list":["post-121654","post","type-post","status-publish","format-standard","hentry","category-general","tag-developer-documentation","tag-docs","mentions-coffee2code","mentions-dd32","mentions-dmsnell","mentions-johnbillion","mentions-jonsurrell","mentions-tmdk","author-dmsnell"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vEa","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13597958"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121654"}],"version-history":[{"count":32,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654\/revisions"}],"predecessor-version":[{"id":121714,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654\/revisions\/121714"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":13597958,"name":"Dennis Snell","url":"https:\/\/fluffyandflakey.blog","description":"As a Code Wrangler at Automattic, Inc., I spend my days designing software. As a nomad, I own very few things and enjoy living simply. I love cooking, engineering, photography, and my faithful God, Jesus Christ.","link":"https:\/\/profiles.wordpress.org\/dmsnell\/","slug":"dmsnell","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13597958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"replies":[[{"id":48444,"parent":0,"author":148148,"author_name":"Dion Hulse","author_url":"https:\/\/dd32.id.au\/","date":"2026-03-04T02:32:56","content":{"rendered":"<p>To fix this going forward, I\u2019m pondering if we should look at replacing the current generation with Markdown documents, and then parse those markdown documents into whatever powers our document reference.<\/p>\n<p>This would have the benefit that we could have this running actively: daily, hourly, or even after every commit, and we\u2019ll have better ability to add unit testing \/ etc. Also decouples things a fair bit by having distinct processes that can be more easily run<\/p>\n<p>I\u2019m imagining something like:<\/p>\n<p><span tabindex=\"0\" class=\"glossary-item-container\">Core<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Core<\/span> <span class=\"glossary-item-description\">Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> &amp; <span tabindex=\"0\" class=\"glossary-item-container\">Gutenberg<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Gutenberg<\/span> <span class=\"glossary-item-description\">The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc. <a href=\"https:\/\/wordpress.org\/gutenberg\/\">https:\/\/wordpress.org\/gutenberg\/<\/a><\/span><\/span><\/span> do exactly what they currently do, have <span tabindex=\"0\" class=\"glossary-item-container\">PHPDoc<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">PHPDoc<\/span> <span class=\"glossary-item-description\">(<strong>docblock<\/strong>, <strong>inline docs<\/strong>)<\/span><\/span><\/span> as present, JSDoc, or what ever they want<br \/>\n<span tabindex=\"0\" class=\"glossary-item-container\">PHP<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">PHP<\/span> <span class=\"glossary-item-description\">The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span> Script, <span tabindex=\"0\" class=\"glossary-item-container\">JS<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">JS<\/span> <span class=\"glossary-item-description\">JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.<\/span><\/span><\/span> script, heck C++ if you want to go that way<br \/>\n   Parses wordpress-develop code, parses <span tabindex=\"0\" class=\"glossary-item-container\">github<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">GitHub<\/span> <span class=\"glossary-item-description\">GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the \u2018pull request\u2019 where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. <a href=\"https:\/\/github.com\/\">https:\/\/github.com\/<\/a><\/span><\/span><\/span> code, parses anything that is part of a \u201cWordPress\u201d<br \/>\n   Generates a markdown document consisting of:<br \/>\n    Function \/ Method \/ Class \/ Hook name<br \/>\n    Function definition<br \/>\n    Docs, including Args, returns, etc. Parsed out of the PHPDoc into structured fields<br \/>\n    Has a section that can be updated by the same script with a list of \u201cUsed by\u201d things<br \/>\n     Includes a list of Source locations (<span tabindex=\"0\" class=\"glossary-item-container\">SVN<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">SVN<\/span> <span class=\"glossary-item-description\">Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase.<\/span><\/span><\/span>, <span tabindex=\"0\" class=\"glossary-item-container\">Trac<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">Trac<\/span> <span class=\"glossary-item-description\">An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.<\/span><\/span><\/span>, Github\/wordpress-develop, Github\/gutenberg, external Github\/whomever\/whatever, etc)<\/p>\n<p>  Could run it on GitHub Actions (or locally, or on something else) but pushes to a github repo changes for that day\/hour\/commit.<br \/>\nFix up wporg-developer to instead of reading the <span tabindex=\"0\" class=\"glossary-item-container\">JSON<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">JSON<\/span> <span class=\"glossary-item-description\">JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.<\/span><\/span><\/span> blob we currently generate, read those markdown files that are standardised, and already have their PHPDoc parsed and standardised<\/p>\n<p>The major change is that we\u2019re moving from an opaque unreadable JSON blob to something that could be tracked in a human-readable format that\u2019s visually obvious what has been extracted \/ generated for a function.   AI would love that documentation, but as would real humans. <\/p>\n<p>This is also something that doesn\u2019t require really worrying about the existing parser, how it works, what it\u2019s shortcomings are, or even trying to use it with deveoper.w.org. The final step is the only part where we\u2019ll have to deal with some awkwardness of trying to make our existing theme and data-store match the new data input. As a stop-gap we could add a Markdown -&gt; JSON step.. but at least we\u2019d have something that can parse the content again.<\/p>\n<p>This would also then be something that other plugins could utilise for themselves.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48444","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/62ed6669556644a294591975f01137cd76ea6d1dcd8bf8b3328c1e2bf6e2a80d?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/62ed6669556644a294591975f01137cd76ea6d1dcd8bf8b3328c1e2bf6e2a80d?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/62ed6669556644a294591975f01137cd76ea6d1dcd8bf8b3328c1e2bf6e2a80d?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/148148"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}]}},{"id":48435,"parent":48420,"author":23149404,"author_name":"Mary Hubbard","author_url":"http:\/\/mary.blog","date":"2026-03-02T21:29:28","content":{"rendered":"<p>Thank you <a href=\"https:\/\/profiles.wordpress.org\/dmsnell\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>dmsnell<\/a> and all of you that helped get it done!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48435","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/118da268a0c363731e91a800b9cbd55a95988ea50d8762452f0e1fdcf1c2365b?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/118da268a0c363731e91a800b9cbd55a95988ea50d8762452f0e1fdcf1c2365b?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/118da268a0c363731e91a800b9cbd55a95988ea50d8762452f0e1fdcf1c2365b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/23149404"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48420"}]}},{"id":48433,"parent":48431,"author":13597958,"author_name":"Dennis Snell","author_url":"https:\/\/fluffyandflakey.blog","date":"2026-03-02T18:06:58","content":{"rendered":"<p>I\u2019m unable to speak to the comparison to services like Mintlify, but if any platform helps people write more useful documentation then I am encouraged by it.<\/p>\n<p>Of note, the docs that were restored are those coming directly out of WordPress\u2019 <span tabindex=\"0\" class=\"glossary-item-container\">PHP<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">PHP<\/span> <span class=\"glossary-item-description\">The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher<\/span><\/span><\/span>. For those of us who worked on this, we were primarily concerned with the staleness of the reference information and how it was misleading people and AI tooling.<\/p>\n<p>Function-level documentation has always been something I consider to be valuable mostly when you know what you are looking for, but limited in its ability to lead you to that thing. Something like <a href=\"https:\/\/developer.wordpress.org\/block-editor\/\" rel=\"nofollow ugc\">the Block Editor handbook<\/a> (built on WordPress) or <a href=\"https:\/\/wordpress.github.io\/wordpress-playground\/\" rel=\"nofollow ugc\">the WordPress Playground docs<\/a> (built on Docusaurus) look more similar in structure and guidance to the docs Mintlify generates.<\/p>\n<p>While the PHP and <span tabindex=\"0\" class=\"glossary-item-container\">JavaScript<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">JavaScript<\/span> <span class=\"glossary-item-description\">JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user\u2019s browser. <a href=\"https:\/\/www.javascript.com\/\">https:\/\/www.javascript.com\/<\/a>.<\/span><\/span><\/span> code remains the ultimate source of truth, I consider these docs to be the training material and the context used by humans and AI tooling (for example, <a>context7<\/a>); I wouldn\u2019t expect any process, whether human-driven or agent-driven, to be able to make helpful or meaningful documentation with information that\u2019s multiple years out of date though.<\/p>\n<blockquote><p>\nwhat about internationalization?\n<\/p><\/blockquote>\n<p>This is another good question. I\u2019ve not seen any major systems to translate function-level docs for any language (even Java), other than third-party platforms which start by copying them into something akin to Glotpress. The <em>developer guide<\/em>-style docs seem easier to internationalize since they are sourced from documents rather than code.<\/p>\n<p>It would seem like a valuable contribution if someone wanted to add multilingual support to the reference docs, mirror them into Glotpress, or let loose AI tooling on them. I\u2019m really happy that these things are possible once again, now that the extraction process has been restored.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48433","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13597958"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48431"}]}},{"id":48431,"parent":0,"author":1,"author_name":"Matt Mullenweg","author_url":"http:\/\/ma.tt\/","date":"2026-03-01T15:19:16","content":{"rendered":"<p>How would you compare the state of these docs to say what a service like <a href=\"https:\/\/www.mintlify.com\/\" rel=\"nofollow ugc\">https:\/\/www.mintlify.com\/<\/a> provides? That\u2019s the standard we should aim for.<\/p>\n<p>Also, what about internationalization? Part of the reason I\u2019ve heard is that it\u2019s hard to get <span tabindex=\"0\" class=\"glossary-item-container\">WP-CLI<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">WP-CLI<\/span> <span class=\"glossary-item-description\">WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is <a href=\"http:\/\/wp-cli.org\/\">http:\/\/wp-cli.org\/<\/a> <a href=\"https:\/\/make.wordpress.org\/cli\/\">https:\/\/make.wordpress.org\/cli\/<\/a><\/span><\/span><\/span> or other project documentation onto .org is that we have poor internationalization support, which seems very fixable, especially in an AI age.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48431","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/33252cd1f33526af53580fcb1736172f06e6716f32afdd1be19ec3096d15dea5?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/33252cd1f33526af53580fcb1736172f06e6716f32afdd1be19ec3096d15dea5?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/33252cd1f33526af53580fcb1736172f06e6716f32afdd1be19ec3096d15dea5?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48431"}]}},{"id":48428,"parent":0,"author":1260288,"author_name":"Peter Wilson","author_url":"","date":"2026-02-25T21:29:34","content":{"rendered":"<p>Great work all, thank you so much for your persistence figuring this out.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48428","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/24a5ca8b960821795fd5f6c0f70ce94a84e0ee71fea4beeee394fa66995ae838?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/24a5ca8b960821795fd5f6c0f70ce94a84e0ee71fea4beeee394fa66995ae838?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/24a5ca8b960821795fd5f6c0f70ce94a84e0ee71fea4beeee394fa66995ae838?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/1260288"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}]}},{"id":48427,"parent":0,"author":186678,"author_name":"Weston Ruter","author_url":"https:\/\/weston.ruter.net\/","date":"2026-02-25T20:13:00","content":{"rendered":"<blockquote><p>After that, work will continue on supporting PHPStan type annotations and on being able to generate documentation previews.<\/p><\/blockquote>\n<p>Very exciting. Thank you so much!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48427","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/63b496ec3806485229b4f934b26643dad6e734ca6e6ef7b38c846205b01cd37f?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/63b496ec3806485229b4f934b26643dad6e734ca6e6ef7b38c846205b01cd37f?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/63b496ec3806485229b4f934b26643dad6e734ca6e6ef7b38c846205b01cd37f?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/186678"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}]}},{"id":48426,"parent":0,"author":4552240,"author_name":"Jonathan Desrosiers","author_url":"https:\/\/jonathandesrosiers.com","date":"2026-02-25T20:11:32","content":{"rendered":"<p>Thank you, <a href=\"https:\/\/profiles.wordpress.org\/dmsnell\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>dmsnell<\/a>, and everyone who helped get this working again!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48426","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/18f4f7ebdcd48383951a52a88f401bd6460ae74b626016010b1f0604cac90826?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/18f4f7ebdcd48383951a52a88f401bd6460ae74b626016010b1f0604cac90826?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/18f4f7ebdcd48383951a52a88f401bd6460ae74b626016010b1f0604cac90826?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/4552240"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}]}},{"id":48425,"parent":48424,"author":13597958,"author_name":"Dennis Snell","author_url":"https:\/\/fluffyandflakey.blog","date":"2026-02-25T19:53:51","content":{"rendered":"<p>If you hadn\u2019t, then I would have the following June \ud83e\udd37\u200d\u2642\ufe0f<\/p>\n<p>In any case, there was no indication that this occurred and you would have had no way to know unless you had already known to seek it out and figured out how to get this thing running, and knew that the failure to get it to run was because of the <span tabindex=\"0\" class=\"glossary-item-container\">patch<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">patch<\/span> <span class=\"glossary-item-description\">A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a <strong>diff<\/strong>. A patch can be <em>applied<\/em> to a codebase for testing.<\/span><\/span><\/span>.<\/p>\n<p>There were updates I made in <span tabindex=\"0\" class=\"glossary-item-container\">DocBlock<span class=\"glossary-item-hidden-content\"><span class=\"glossary-item-header\">docblock<\/span> <span class=\"glossary-item-description\">(phpdoc, xref, inline docs)<\/span><\/span><\/span> comments that turned out corrupted on the public docs, and I only learned after waiting months to see the updated docs after a release.<\/p>\n<p>We solve these problems by addressing the systematic factors and coming to every developer in every PR, not by laying blame and expecting developers to seek out what they aren\u2019t aware of.<\/p>\n<p>Would rather have your contributions and fix our parser than to miss out on what you have shared with WordPress.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48425","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13597958"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}],"in-reply-to":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48424"}]}},{"id":48424,"parent":0,"author":1457643,"author_name":"S\u00f6ren W\u00fcnsch","author_url":"https:\/\/profiles.wordpress.org\/soean\/","date":"2026-02-25T19:46:11","content":{"rendered":"<p>Thanks for the update, and sorry for breaking the process.<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48424","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/f46487378e3682e0d5f0846f26ed46310740fc1c161b3282b99e5444d742f36a?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/f46487378e3682e0d5f0846f26ed46310740fc1c161b3282b99e5444d742f36a?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/f46487378e3682e0d5f0846f26ed46310740fc1c161b3282b99e5444d742f36a?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/1457643"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48424"}]}},{"id":48423,"parent":0,"author":11048819,"author_name":"Miguel Fonseca","author_url":"","date":"2026-02-25T19:04:30","content":{"rendered":"<p>Kudos, everyone!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48423","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/fa9bb9feab2f2f97662e7b07c9deaf0aca3ec7c037840a8cc3563ec022f77048?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/11048819"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}]}},{"id":48421,"parent":0,"author":20811757,"author_name":"Andrea Roenning","author_url":"https:\/\/andrearoenning.com","date":"2026-02-25T16:14:57","content":{"rendered":"<p>Thank you so much for working on this!<\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48421","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/a27a6d11672af559c57e5d2bf533d369c22d7d42bc594246f11051c1c1309b8f?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/a27a6d11672af559c57e5d2bf533d369c22d7d42bc594246f11051c1c1309b8f?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/a27a6d11672af559c57e5d2bf533d369c22d7d42bc594246f11051c1c1309b8f?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/20811757"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}]}},{"id":48420,"parent":0,"author":13597958,"author_name":"Dennis Snell","author_url":"https:\/\/fluffyandflakey.blog","date":"2026-02-25T15:49:06","content":{"rendered":"<p><a href=\"\/\/make.wordpress.org\/docs\/\" class=\"po-xpost\">+make.wordpress.org\/docs\/<\/a><\/p>\n"},"link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/developer-documentation-restored\/#comment-48420","type":"comment","author_avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/b5292a7fb1ae9f9cce40615cb7715e799a69d78bad79b99ca9d14494c90a1b8b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments\/48420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13597958"}],"up":[{"embeddable":true,"post_type":"post","href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121654"}],"children":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?parent=48420"}]}}]],"wp:term":[[{"id":1175,"link":"https:\/\/make.wordpress.org\/core\/category\/general\/","name":"General","slug":"general","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":3453,"link":"https:\/\/make.wordpress.org\/core\/tag\/developer-documentation\/","name":"developer-documentation","slug":"developer-documentation","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/3453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=3453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":2636,"link":"https:\/\/make.wordpress.org\/core\/tag\/docs\/","name":"docs","slug":"docs","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121670,"date":"2026-02-25T06:37:10","date_gmt":"2026-02-25T06:37:10","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121670"},"modified":"2026-02-25T06:44:12","modified_gmt":"2026-02-25T06:44:12","slug":"dev-chat-agenda-february-25-2026","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/02\/25\/dev-chat-agenda-february-25-2026\/","title":{"rendered":"Dev Chat Agenda \u2013 February 25, 2026"},"content":{"rendered":"<p class=\"wp-block-paragraph\">The next WordPress Developers Chat will take place on <a href=\"https:\/\/www.timeanddate.com\/worldclock\/fixedtime.html?iso=20260225T1500\"><abbr class=\"date\" title=\"2026-02-25T15:00:00+00:00\">Wednesday, February 25, 2026, at 15:00 UTC<\/abbr><\/a> in the\u00a0<a href=\"https:\/\/wordpress.slack.com\/messages\/core\/\">core<\/a>\u00a0channel on\u00a0<a href=\"https:\/\/make.wordpress.org\/chat\/\">Make WordPress Slack<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The live meeting will focus on the discussion for upcoming releases, and have an open floor section.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The various curated agenda sections below refer to additional items. If you have\u00a0<span tabindex='0' class='glossary-item-container'>ticket<span class='glossary-item-hidden-content'><span class='glossary-item-header'>ticket<\/span> <span class='glossary-item-description'>Created for both bug reports and feature development on the bug tracker.<\/span><\/span><\/span>\u00a0requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.<\/p>\n\n\n\n<h2 id=\"announcements-1\" class=\"wp-block-heading\">Announcements \ud83d\udce2<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span tabindex='0' class='glossary-item-container'>Core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> Team Reps for 2026<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/24\/introducing-core-team-reps-for-2026\/\" data-type=\"post\" data-id=\"121520\">The 2026 Core Team Reps have been announced.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">WordPress 7.0 Updates<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/12\/wordpress-7-0-release-party-schedule\/\">WordPress 7.0 Release Party Schedule<\/a> was published.<\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/01\/27\/bug-scrub-schedule-for-wordpress-7-0\/\">7.0 bug scrubs<\/a> are still running twice a week on the <a href=\"https:\/\/make.wordpress.org\/core\/tag\/core\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>core<\/a> <span tabindex='0' class='glossary-item-container'>Slack<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Slack<\/span> <span class='glossary-item-description'>Slack is a Collaborative Group Chat Platform <a href=\"https:\/\/slack.com\/\">https:\/\/slack.com\/<\/a>. The WordPress community has its own Slack Channel at <a href=\"https:\/\/make.wordpress.org\/chat\/\">https:\/\/make.wordpress.org\/chat\/<\/a>.<\/span><\/span><\/span> channel.<\/li>\n\n\n\n<li>A <a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/18\/wordpress-7-0-product-review-meeting-with-matt\/\" data-type=\"post\" data-id=\"121525\">WP 7.0 product review meeting<\/a> was held, and the <a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/18\/wordpress-7-0-product-review-meeting-with-matt\/#comment-48403\">meeting notes<\/a> were published. The <a href=\"https:\/\/youtu.be\/7hiIKDiGqLI\">recording<\/a> is publicly available.<\/li>\n\n\n\n<li>After a <a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/19\/wordpress-7-0-beta-1-delayed\/\" data-type=\"post\" data-id=\"121537\">24-hour delay<\/a>, 7.0 <span tabindex='0' class='glossary-item-container'>beta<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Beta<\/span> <span class='glossary-item-description'>A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process.<\/span><\/span><\/span> 1 was <a href=\"https:\/\/wordpress.org\/news\/2026\/02\/wordpress-7-0-beta-1\/\">released<\/a>.<\/li>\n\n\n\n<li>Beta 2 is scheduled tomorrow on Thursday.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 id=\"discussions\" class=\"wp-block-heading\">Discussions \ud83d\udcac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AI Connectors update: Pinging <a href=\"https:\/\/profiles.wordpress.org\/flixos90\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>flixos90<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jason_the_adams\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jason_the_adams<\/a> <a href=\"https:\/\/profiles.wordpress.org\/isotropic\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>isotropic<\/a> for this item, if they are able to attend this meeting it would be nice to share the current status of this feature.<br>See ticket <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64591\">#64591<\/a>.<\/li>\n\n\n\n<li>Real Time Collaboration \u2013 These issues were opened by <a href=\"https:\/\/profiles.wordpress.org\/smithjw1\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>smithjw1<\/a> as a follow-up to the 7.0 product review meeting:\n<ul class=\"wp-block-list\">\n<li>[Interface] Show local user\u2019s\u00a0<span tabindex='0' class='glossary-item-container'>avatar<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Avatar<\/span> <span class='glossary-item-description'>An avatar is an image or illustration that specifically refers to a character that represents an online user. It\u2019s usually a square box that appears next to the user\u2019s name.<\/span><\/span><\/span>\u00a0by cursor during collaborative sessions\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/75838\">#75838<\/a><\/li>\n\n\n\n<li>Auto-disable collaboration when classical\u00a0<span tabindex='0' class='glossary-item-container'>meta<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Meta<\/span> <span class='glossary-item-description'>Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.<\/span><\/span><\/span>\u00a0boxes are detected; provide compatibility\u00a0<span tabindex='0' class='glossary-item-container'>filter<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Filter<\/span> <span class='glossary-item-description'>Filters are one of the two types of Hooks <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Hooks\">https:\/\/codex.wordpress.org\/Plugin_API\/Hooks<\/a>. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.<\/span><\/span><\/span>\u00a0and documentation\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/75839\">#75839<\/a><\/li>\n\n\n\n<li>Optional role-based restrictions for collaborative editing sessions\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/75840\">#75840<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 id=\"tickets-for-assistance\" class=\"wp-block-heading\">Open floor \u00a0\ud83c\udf99\ufe0f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.<br><br>Please include details of tickets \/ PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.<\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/agenda\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>agenda<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-chat\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-chat<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F02%2F25%2Fdev-chat-agenda-february-25-2026%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>The next WordPress Developers Chat will take place on in the\u00a0core\u00a0channel on\u00a0Make WordPress Slack. The live meeting will focus on the discussion for upcoming releases, and have an open floor section. The various curated agenda sections below refer to additional items. If you have\u00a0ticketticket Created for both bug reports and feature development on the bug [&hellip;]<\/p>\n","protected":false},"author":8670591,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4194],"tags":[5676,31,2325,92],"class_list":["post-121670","post","type-post","status-publish","format-standard","hentry","category-devchat","tag-7-0","tag-agenda","tag-core","tag-dev-chat","mentions-flixos90","mentions-isotropic","mentions-jason_the_adams","mentions-smithjw1","author-audrasjb"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vEq","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/8670591"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121670"}],"version-history":[{"count":3,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121670\/revisions"}],"predecessor-version":[{"id":121673,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121670\/revisions\/121673"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":8670591,"name":"Jb Audras","url":"https:\/\/jeanbaptisteaudras.com","description":"I hail from Ard\u00e8che, France and I'm currently CTO at Whodunit, the #1 French WordPress agency in terms of open-source contribution to WordPress.\r\n\r\nI\u2019m a WordPress Core Committer and one of the two Core team representatives.\r\n\r\nI\u2019m currently WordPress 6.2 Core Tech co-Lead.","link":"https:\/\/profiles.wordpress.org\/audrasjb\/","slug":"audrasjb","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/6f505c6be9a951929a99becb6b413dcfa583a5ca3dd0f7320766fee1481f0f82?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/6f505c6be9a951929a99becb6b413dcfa583a5ca3dd0f7320766fee1481f0f82?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/6f505c6be9a951929a99becb6b413dcfa583a5ca3dd0f7320766fee1481f0f82?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/8670591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"wp:term":[[{"id":4194,"link":"https:\/\/make.wordpress.org\/core\/category\/devchat\/","name":"Devchat","slug":"devchat","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/4194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=4194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":5676,"link":"https:\/\/make.wordpress.org\/core\/tag\/7-0\/","name":"7-0","slug":"7-0","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/5676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=5676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":31,"link":"https:\/\/make.wordpress.org\/core\/tag\/agenda\/","name":"agenda","slug":"agenda","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":2325,"link":"https:\/\/make.wordpress.org\/core\/tag\/core\/","name":"core","slug":"core","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":92,"link":"https:\/\/make.wordpress.org\/core\/tag\/dev-chat\/","name":"dev chat","slug":"dev-chat","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}},{"id":121650,"date":"2026-02-24T18:32:23","date_gmt":"2026-02-24T18:32:23","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121650"},"modified":"2026-02-24T18:32:23","modified_gmt":"2026-02-24T18:32:23","slug":"performance-chat-summary-24-february-2026","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/02\/24\/performance-chat-summary-24-february-2026\/","title":{"rendered":"Performance Chat Summary: 24 February 2026"},"content":{"rendered":"<p class=\"wp-block-paragraph\">ll chat log is available beginning <a href=\"https:\/\/wordpress.slack.com\/archives\/C02KGN5K076\/p1771948834743789\">here on Slack<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>WordPress Performance <span tabindex='0' class='glossary-item-container'>Trac<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Trac<\/span> <span class='glossary-item-description'>An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.<\/span><\/span><\/span> tickets<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> shared a newly opened <span tabindex='0' class='glossary-item-container'>ticket<span class='glossary-item-hidden-content'><span class='glossary-item-header'>ticket<\/span> <span class='glossary-item-description'>Created for both bug reports and feature development on the bug tracker.<\/span><\/span><\/span> <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64696\">#64696<\/a> and noted that if real-time collaboration ends up disabling object caching for posts on the frontend, this would be a serious concern.<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> also shared that there are four other performance-focused tickets in the <a href=\"https:\/\/core.trac.wordpress.org\/query?status=accepted&amp;status=assigned&amp;status=new&amp;status=reopened&amp;status=reviewing&amp;keywords=!~fixed-major&amp;focuses=~performance&amp;milestone=6.9.2&amp;milestone=7.0&amp;group=milestone&amp;col=id&amp;col=summary&amp;col=status&amp;col=keywords&amp;col=owner&amp;col=type&amp;col=priority&amp;col=changetime&amp;order=changetime\" data-type=\"link\" data-id=\"https:\/\/core.trac.wordpress.org\/query?status=accepted&amp;status=assigned&amp;status=new&amp;status=reopened&amp;status=reviewing&amp;keywords=!~fixed-major&amp;focuses=~performance&amp;milestone=6.9.2&amp;milestone=7.0&amp;group=milestone&amp;col=id&amp;col=summary&amp;col=status&amp;col=keywords&amp;col=owner&amp;col=type&amp;col=priority&amp;col=changetime&amp;order=changetime\">current milestone<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> asked <a href=\"https:\/\/profiles.wordpress.org\/pbearne\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>pbearne<\/a> about ticket <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64087\">#64087<\/a> and noted that it appeared related to PR <a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/pull\/10898\" data-type=\"link\" data-id=\"https:\/\/github.com\/WordPress\/wordpress-develop\/pull\/10898\">#10898<\/a>, which <a href=\"https:\/\/profiles.wordpress.org\/pbearne\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>pbearne<\/a> had opened for ticket <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64620\">#64620<\/a>. \n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> asked whether <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64087\">#64087<\/a> and <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/64620\">#64620<\/a> were duplicates (or vice versa). <\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/pbearne\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>pbearne<\/a> responded that they look like duplicates and shared that the <span tabindex='0' class='glossary-item-container'>patch<span class='glossary-item-hidden-content'><span class='glossary-item-header'>patch<\/span> <span class='glossary-item-description'>A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a <strong>diff<\/strong>. A patch can be <em>applied<\/em> to a codebase for testing.<\/span><\/span><\/span> should fix both issues. <\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> replied that he asked the reporter of the other ticket to test the patch.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Performance Lab <span tabindex='0' class='glossary-item-container'>Plugin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Plugin<\/span> <span class='glossary-item-description'>A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https:\/\/wordpress.org\/plugins\/ or can be cost-based plugin from a third-party<\/span><\/span><\/span> (and other performance plugins)<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> shared that a <span tabindex='0' class='glossary-item-container'>security issue<span class='glossary-item-hidden-content'><span class='glossary-item-header'>security issue<\/span> <span class='glossary-item-description'>A security issue is a type of bug that can affect the security of WordPress installations. Specifically, it is a report of a bug that you have found in the WordPress core code, and that you have determined can be used to gain some level of access to a site running WordPress that you should not have.<\/span><\/span><\/span> had been responsibly disclosed for the Embed Optimizer plugin and that a fix was released the previous Friday.<\/li>\n\n\n\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> also mentioned that there are several updates across the Performance Lab plugins that would be good to include in a new release. \n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/profiles.wordpress.org\/westonruter\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>westonruter<\/a> suggested targeting a release for Thursday and proposed wrapping up any issues and pull requests that are nearly ready before then.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Our next chat will be held on <a href=\"https:\/\/www.timeanddate.com\/worldclock\/fixedtime.html?iso=20260310T1600\"><abbr class=\"date\" title=\"2026-03-10T16:00:00+00:00\">Tuesday, March 10, 2026 at 16:00 UTC<\/abbr><\/a> in the <a href=\"https:\/\/wordpress.slack.com\/messages\/core-performance\/\">#core-performance channel<\/a> in <a href=\"https:\/\/make.wordpress.org\/chat\/\">Slack<\/a><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/core-performance\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>core-performance<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/hosting\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>hosting<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/performance\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>performance<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/performance-chat\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>performance-chat<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/summary\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>summary<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F02%2F24%2Fperformance-chat-summary-24-february-2026%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>ll chat log is available beginning here on Slack. WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets Performance Lab PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. [&hellip;]<\/p>\n","protected":false},"author":22004791,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AAAHw7S3pgLUBKQEGgELVKoBBgEAKuQBqAEBAQgASAJCCooDAwIS7gOYBAECCgJCSgC4AQECCgBKEAIBAgoCGGQAqB4BAgoCTACmCQECCgJMkgUCAQIKAEoQAgECCgJMAL4FAQIKAkwAoAYBAgoCTMQSuBYBAgoCTNg\/okUBAgoCQkoAoAIBAgoAShACAQIKAkyIBgIBAgoAShACAQIKAkwAqAUBAgoCTMQMjhEBAgoCTACgBQECCgJMmAcCAQIKAEoQAgECCgJM7B62IwECCgJCSgCIAQECCgBKEAIBAgoCTIwHAgECCgBKEAIBAgoCTACMAwECCgJMAJwGAQIKAkzaEZIaAQIKAqoBEAIEwgJKzo8BAqqXAeySAQQCvosBEAboaqZykgkCDlCWBAL0ngG8ngEBAQhICq4CAwEEAwMOnAH+AQMBBAMDqgEC+ASIHgEBCEgKHAqEARgCGgIGAh4CCgIkAgaIAQyaAYICBOwDDN4FihYBAQgCSsgWCp4eAQEIAEgOAgEBCAKcAuYCAJ4IAQEIAogD0gMAggYBAQgCSroCAQIKAkyIBgIBAgoAShACAQIKAkwAqAUBAgoCTNqxAaS2AQECCgJM1qUBtqoBAQIKAkyYBwIBAgoAShACAQIKAkzUGMYGlCgBAgpKDgIBAgoAShACAQEISFa+BMoFrAkBAQhI7Am6CQECCgJM+AmqDgEBCABIDgIBAgoCTOidAZiiAQEBCABI1rICRgI0uAEaqAMEAr6LARAGkBEBAPZ7joMBAwEEAwOqAcyFAbCjAQz8owGaKY4RoAXuFgCW1wHcCccEKAInAigGJwAoDycABACEAcQBKACoAAcAKAInASgAJwCoACgABACEBYcAKAMnAQQAKAAnAIcAKAMnACgBJwAHACgDJwEEAIQAJwCHACgDJwEEACcAhwAoAycBBAAnAAcAKAMnACgBJwAHACgDJwEEACcAhwAoAycBBAAnAIcAKAMnAQQAJwCHACgDJwEEACcAhwAoAycBBAAoACcAhwAoAycAKAEnAAcAKAMnAQQAJwAHACgDJwAoAScABwAoAycBBAAnAIcAKAMnAQQAJwCHACgDJwEEACcAhwAoAycBBAAnAAcAKAMnACgBJwAHACgDJwEEACcAhwAoAycBBAAoACcAhwAoAycAKAEnAAcAKAMnAQQAJwAHACgDJwAoAScABwAoAycBBAAnAIcAKAMnAQQAJwCHACgDJwEEACcAhwAoAycBBACEAygAJwCoAsQFhATEAscAKAInAgQAhAvECoQAxwAoAicCBACEFMQBxwAoAicBBAAnAKgABwAoAicAKAEnAAcAKAInAQQAhAAnAIcAKAInAQQAhAAnAIcAKAInAQQAJwBHACgDJwEEACcABwAoAycAKAEnAAcAKAMnAQQAJwCHACgDJwEEACcAxwAoAycBBAAnAMcAKAMnAQQAJwAHACgDJwAoAScABwAoAycBBAAnAIQAxwAoAycCBwAoAycAKAEnAAcAKAInAgQAhADHACgCJwLHACgDJwEEACcAqABHACgCJwAoAScABwAoAycBBAAnAIcAKAInASgAJwAEAKgBKJuJAc6EAXN0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZWRvY3VtZW50Y29udGVudGRvY3VtZW50ZXhjZXJwdGRvY3VtZW50YXV0aG9yZG9jdW1lbnRmZWF0dXJlZF9tZWRpYWRvY3VtZW50Y29tbWVudF9zdGF0dXNkb2N1bWVudHBpbmdfc3RhdHVzZG9jdW1lbnRzdGlja3lkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRmb3JtYXRkb2N1bWVudG1ldGFhZHZhbmNlZF9zZW9fZGVzY3JpcHRpb25qZXRwYWNrX3Nlb19odG1sX3RpdGxlamV0cGFja19zZW9fbm9pbmRleGpldHBhY2tfcG9zdF93YXNfZXZlcl9wdWJsaXNoZWRfamV0cGFja19uZXdzbGV0dGVyX2FjY2Vzc19qZXRwYWNrX2RvbnRfZW1haWxfcG9zdF90b19zdWJzX2pldHBhY2tfbmV3c2xldHRlcl90aWVyX2lkX2pldHBhY2tfbWVtYmVyc2hpcHNfY29udGFpbnNfcGF5d2FsbGVkX2NvbnRlbnRfamV0cGFja19tZW1iZXJzaGlwc19jb250YWluc19wYWlkX2NvbnRlbnRmb290bm90ZXNqZXRwYWNrX3B1YmxpY2l6ZV9tZXNzYWdlamV0cGFja19wdWJsaWNpemVfZmVhdHVyZV9lbmFibGVkamV0cGFja19zb2NpYWxfcG9zdF9hbHJlYWR5X3NoYXJlZGpldHBhY2tfc29jaWFsX29wdGlvbnNkb2N1bWVudGNhdGVnb3JpZXNkb2N1bWVudHRhZ3Nkb2N1bWVudGJsb2Nrc1BlcmZvcm1hbmNlIENoYXQgU3VtbWFyeTogMTAgRmVicnVhcnkgMjAyNiAyNGRvY3VtZW50c2x1Z2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc29yaWdpbmFsQ29udGVudGxsIGNoYXQgbG9nIGlzIGF2YWlsYWJsZSBiZWdpbm5pbmcgPGEgaHJlZj0iaHR0cHM6Ly93b3JkcHJlc3Muc2xhY2suY29tL2FyY2hpdmVzL0MwMktHTjVLMDc2L3AxNzcwNzM5MjUyOTMwMTU5Ij5oZXJlIG9uIFNsYWNrPC9hPi5jbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPldvcmRQcmVzcyBQZXJmb3JtYW5jZSBUcmFjIHRpY2tldHM8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgc2hhcmVkIHF1ZXJ5LCBub3RpbmcgdGhhdCB0aGVyZSBhcmUgY3VycmVudGx5IDEyIHRvdGFsIHRpY2tldHMgd2hlbiBpbmNsdWRpbmcgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9xdWVyeT9zdGF0dXM9YWNjZXB0ZWQmYW1wO3N0YXR1cz1hc3NpZ25lZCZhbXA7c3RhdHVzPW5ldyZhbXA7c3RhdHVzPXJlb3BlbmVkJmFtcDtzdGF0dXM9cmV2aWV3aW5nJmFtcDtrZXl3b3Jkcz0hfmZpeGVkLW1ham9yJmFtcDtmb2N1c2VzPX5wZXJmb3JtYW5jZSZhbXA7bWlsZXN0b25lPTYuOS4xJmFtcDttaWxlc3RvbmU9Ny4wJmFtcDtncm91cD1taWxlc3RvbmUmYW1wO2NvbD1pZCZhbXA7Y29sPXN1bW1hcnkmYW1wO2NvbD1zdGF0dXMmYW1wO2NvbD1rZXl3b3JkcyZhbXA7Y29sPW93bmVyJmFtcDtjb2w9dHlwZSZhbXA7Y29sPXByaW9yaXR5JmFtcDtjb2w9Y2hhbmdldGltZSZhbXA7b3JkZXI9Y2hhbmdldGltZSI+ZGVmZWN0cyBhbmQgZW5oYW5jZW1lbnRzPC9hPiwgYW5kIDkgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9xdWVyeT9zdGF0dXM9YWNjZXB0ZWQmYW1wO3N0YXR1cz1hc3NpZ25lZCZhbXA7c3RhdHVzPW5ldyZhbXA7c3RhdHVzPXJlb3BlbmVkJmFtcDtzdGF0dXM9cmV2aWV3aW5nJmFtcDtrZXl3b3Jkcz0hfmZpeGVkLW1ham9yJmFtcDtmb2N1c2VzPX5wZXJmb3JtYW5jZSZhbXA7dHlwZT0hZGVmZWN0KyhidWcpJmFtcDttaWxlc3RvbmU9Ni45LjEmYW1wO21pbGVzdG9uZT03LjAmYW1wO2dyb3VwPW1pbGVzdG9uZSZhbXA7Y29sPWlkJmFtcDtjb2w9c3VtbWFyeSZhbXA7Y29sPXN0YXR1cyZhbXA7Y29sPWtleXdvcmRzJmFtcDtjb2w9b3duZXImYW1wO2NvbD10eXBlJmFtcDtjb2w9cHJpb3JpdHkmYW1wO2NvbD1jaGFuZ2V0aW1lJmFtcDtvcmRlcj1jaGFuZ2V0aW1lIj5ub24tZGVmZWN0PC9hPiB0aWNrZXRzIHNwZWNpZmljYWxseS5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBwb2ludGVkIG91dCB0aGF0IFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDg1NSIgZGF0YS10eXBlPSJsaW5rIiBkYXRhLWlkPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3dvcmRwcmVzcy1kZXZlbG9wL3B1bGwvMTA4NTUiPiMxMDg1NTwvYT4sIHdoaWNoIGltcHJvdmVzIHRoZSByb2J1c3RuZXNzIG9mIHBhZ2UgY2FjaGUgZGV0ZWN0aW9uIGxvZ2ljIGluIFNpdGUgSGVhbHRoLCBjb3VsZCB1c2UgYW5vdGhlciByZXZpZXcuaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAc3BhY2VkbW9ua2V5IHNoYXJlZCB0aGF0IFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDUzMSI+IzEwNTMxPC9hPiBoYWQganVzdCBiZWVuIGFwcHJvdmVkIGFuZCB3b3VsZCBiZSBjb21taXR0ZWQgc2hvcnRseS5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QHdlc3RvbnJ1dGVyIGFza2VkIGFib3V0IGEgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy93b3JkcHJlc3MtZGV2ZWxvcC9wdWxsLzEwNTMxI2Rpc2N1c3Npb25fcjI3MDM1MTE2OTkiPnJldmlldyBjb21tZW50PC9hPiBvbiB0aGF0IFBSIHJlZ2FyZGluZyBwYXNzd29yZC1wcm90ZWN0ZWQgcG9zdHMuaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAc3BhY2VkbW9ua2V5IHJlcGxpZWQgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhY2NvdW50IGZvciBwYXNzd29yZC1wcm90ZWN0ZWQgcG9zdHMsIGJ1dCBmdW5jdGlvbmFsbHkgYmVoYXZlcyB0aGUgc2FtZSBhcyBiZWZvcmUsIHdoaWxlIG5vdyBiZW5lZml0aW5nIGZyb20gdXNpbmcgPGNvZGU+V1BfUXVlcnk8L2NvZGU+LmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QHNwYWNlZG1vbmtleSBhZGRlZCB0aGF0IHN3aXRjaGluZyB0byA8Y29kZT5XUF9RdWVyeTwvY29kZT4gb3BlbnMgdXAgYWRkaXRpb25hbCBwb3NzaWJpbGl0aWVzIGJleW9uZCBjYWNoaW5nLCBpbmNsdWRpbmcgZmlsdGVycyBhbmQgZXh0ZW5zaWJpbGl0eS5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBhbHNvIGhpZ2hsaWdodGVkIHRoYXQgdGhlIFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC85MjYwIj4jOTI2MDwvYT4gYXBwZWFycyByZWFkeSBmb3IgY29tbWl0IGFuZCBzaGFyZWQgcGxhbnMgdG8gY29tbWl0IGl0IGxhdGVyIHRoYXQgZGF5LmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5QZXJmb3JtYW5jZSBMYWIgUGx1Z2luIChhbmQgb3RoZXIgcGVyZm9ybWFuY2UgcGx1Z2lucyk8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgc2hhcmVkIHRoYXQgdGhlcmUgaGFkIGJlZW4gbm8gcmVzcG9uc2VzIHlldCBvbiB0aGUgUGVyZm9ybWFuY2UgTGFiIDxjb2RlPkNPREVPV05FUlM8L2NvZGU+IGF1ZGl0IGlzc3VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGVyZm9ybWFuY2UvaXNzdWVzLzIzNzQiPiMyMzc0PC9hPi5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QGIxaW5rMCBzaGFyZWQgdGhhdCB0aGV5IHdvdWxkIGxpa2UgdG8gYmUgYWRkZWQgYXMgYSA8Y29kZT5DT0RFT1dORVI8L2NvZGU+IGZvciB0aGUgTW9kZXJuIEltYWdlIEZvcm1hdHMgcGx1Z2luLCBhcyB3ZWxsIGFzIGZvciBTaXRlIEhlYWx0aCB0ZXN0cyB0aGV5IGhhZCBhZGRlZCBvciB1cGRhdGVkLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QHdlc3RvbnJ1dGVyIHJlcGxpZWQgdGhhdCB0aGlzIHNvdW5kZWQgZ29vZCBhbmQgYXNrZWQgQGIxaW5rMCB0byB1cGRhdGUgdGhlIDxjb2RlPkNPREVPV05FUlM8L2NvZGU+IGZpbGUgZGlyZWN0bHkgaW4gdGhlIFBSIHRvIGFkZCB0aGVtc2VsdmVzIGFzIGFwcHJvcHJpYXRlLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QHdlc3RvbnJ1dGVyIG1lbnRpb25lZCBpbnRlcmVzdCBpbiBtZXJnaW5nIHRoZSBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BlcmZvcm1hbmNlL3B1bGwvMjM1MiI+IzIzNTI8L2E+IHRvIGJldHRlciBvYnNlcnZlIENvcGlsb3TigJlzIGltcGFjdCBpbiBwcmFjdGljZS5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBwb2ludGVkIG91dCB0aGF0IHRoZXJlIGFyZSBzZXZlcmFsIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGVyZm9ybWFuY2UvcHVsbHM\/cT1pcyUzQW9wZW4raXMlM0FwcitsYWJlbCUzQSUyMiU1QlBsdWdpbiU1RCtWaWV3K1RyYW5zaXRpb25zJTIyIj5vcGVuPC9hPiBWaWV3IFRyYW5zaXRpb25zIHBsdWdpbiBQUnMgdGhhdCBzdGlsbCBuZWVkIHJldmlldy5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QGIxaW5rMCBzaGFyZWQgdGhhdCB0aGV5IHBsYW4gdG8gYWRkcmVzcyByZWNlbnQgZmVlZGJhY2sgb24gUFIgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9wdWxsLzIzMzYiPiMyMzM2PC9hPiBieSB0aGUgZW5kIG9mIHRoZSB3ZWVrLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5PcGVuIEZsb29yPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QHdlc3RvbnJ1dGVyIHJhaXNlZCBhIHF1ZXN0aW9uIGFib3V0IHdoZXRoZXIgdGhlIEdpdEh1YiBTbGFjayBpbnRlZ3JhdGlvbiBmb3IgdGhlIFBlcmZvcm1hbmNlIHJlcG9zaXRvcnkgaXMgcHJvdmluZyBoZWxwZnVsIG9yIGlmIGl0IGlzIGJlY29taW5nIHRvbyBub2lzeSwgbm90aW5nIGEgcGVyc29uYWwgaW1wcmVzc2lvbiB0aGF0IGl0IG1heSBiZSBtb3JlIG5vaXNlIHRoYW4gc2lnbmFsLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAYjFpbmswIHNoYXJlZCB0aGF0IHRoZSBpbnRlZ3JhdGlvbiBmZWVscyBub2lzeSwgcGFydGljdWxhcmx5IGR1ZSB0byBEZXBlbmRhYm90IHB1bGwgcmVxdWVzdHMuaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgZXhwZXJpbWVudGVkIGR1cmluZyB0aGUgbWVldGluZyB3aXRoIHN1YnNjcmliaW5nIGFuZCB1bnN1YnNjcmliaW5nIGZyb20gdGhlIEdpdEh1YiBpbnRlZ3JhdGlvbiBhbmQgb2JzZXJ2ZWQgdGhhdCBTbGFjayBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBmaWx0ZXJpbmcgb3V0IERlcGVuZGFib3Qgbm90aWZpY2F0aW9ucy5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBzdWdnZXN0ZWQgdGhhdCBjcmVhdGluZyBhIHNlcGFyYXRlIOKAnGZpcmVob3Nl4oCdIGNoYW5uZWwgY291bGQgYmUgYW4gb3B0aW9uIGlmIHRoZSB0ZWFtIHdhbnRzIHRvIHByZXNlcnZlIHZpc2liaWxpdHkgd2l0aG91dCBvdmVyd2hlbG1pbmcgdGhlIG1haW4gY2hhbm5lbCwgd2hpbGUgYWxzbyBub3RpbmcgdGhhdCB0aGV5IGFyZSBhbHJlYWR5IHN1YnNjcmliZWQgdG8gYWxsIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBkaXJlY3RseSBpbiB0aGUgcmVwb3NpdG9yeS5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+T3VyIG5leHQgY2hhdCB3aWxsIGJlIGhlbGQgb24gW3RpbWVdVHVlc2RheSwgRmVicnVhcnkgMjQsIDIwMjYgYXQgMTY6MDAgVVRDWy90aW1lXSBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93b3JkcHJlc3Muc2xhY2suY29tL21lc3NhZ2VzL2NvcmUtcGVyZm9ybWFuY2UvIj4jY29yZS1wZXJmb3JtYW5jZSBjaGFubmVsPC9hPiBpbiA8YSBocmVmPSJodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jaGF0LyI+U2xhY2s8L2E+PC9zdHJvbmc+LmRyb3BDYXBpbm5lckJsb2NrczE5NDg4MzQ0NzhNYXJjaDEwIHNoYXJlZCBhIG5ld2x5IG9wZW5lZCB0aWNrZXQgIzY0Njk2IHJlZ2FyZGluZyByZWFsLXRpbWUgY29sbGFib3JhdGlvbiBlZmZlY3RpdmVseSBkaXNhYmxpbmcgcGVyc2lzdGVudCBwb3N0IGNhY2hlcyB3aGlsZSBhbiBlZGl0b3IgaXMgb3Blbi4gVGhlIGlzc3VlIGRlc2NyaWJlcyBob3cgZnJlcXVlbnQgdXBkYXRlcyB0byB0aGUgd3Bfc3luY19hd2FyZW5lc3MgbWV0YSBrZXkgY2F1c2UgdGhlIHBvc3RzIOKAnGxhc3RfY2hhbmdlZOKAnSB2YWx1ZSB0byBiZSB1cGRhdGVkIGNvbnRpbnVvdXNseSwgd2hpY2ggaW52YWxpZGF0ZXMgcGVyc2lzdGVudCBXUF9RdWVyeSBjYWNoZXMuIEB3ZXN0b25ydXRlciBub3RlZCB0aGF0IGlmIHJlYWwtdGltZSBjb2xsYWJvcmF0aW9uIGVuZHMgdXAgZGlzYWJsaW5nIG9iamVjdCBjYWNoaW5nIGZvciBwb3N0cyBvbiB0aGUgZnJvbnRlbmQsIHRoaXMgd291bGQgYmUgYSBzZXJpb3VzIGNvbmNlcm4uIGFkbmQgY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3NAd2VzdG9ucnV0ZXIgYWxzbyBzaGFyZWQgdGhhdCB0aGVyZSBhcmUgZm91ciBvdGhlciBwZXJmb3JtYW5jZS1mb2N1c2VkIHRpY2tldHMgaW4gdGhlIGN1cnJlbnQgbWlsZXN0b25lICg2LjkuMiBhbmQgNy4wKSBhbmQgbGlua2VkIHRvIHRoZSBUcmFjIHF1ZXJ5Li48YSBocmVmPSJodHRwczovL29yZS50cmFjLndvcmRwcmVzcy5vcmcvcWV5P3N0YXR1cz1hY2NlcHRlZCZhbXA7c3RhdHVzPWFzc2lnbmVkJmFtcDtzdGF0dXM9bmV3JmFtcDtzdGF0dXM9b3BlZWQmYW1wO3NhdHVzPXJldmlld2luZyZhbXA7a2V5d29yZHM9IX5maXhlZC1tYWpvciZhbXA7Zm9jdXNlcz1+cGVyZm9ybWFuY2UmYW1wO21pbGVzdG9uZT02LjkuMiZhbXA7bWlsZXN0b25lPTcuMCZhbXA7Z3JvdXA9bWlsZXN0b25lJmFtcDtjb2w9aWQmYW1wO2NvbD1zdW1tYXJ5JmFtcDtjb2w9c3RhdHVzJmFtcDtjb2w9a2V5d29yZHMmYW1wO2NvbD1vd25lciZhbXA7Y29sPXR5cGUmYW1wO2NvbD1wcmlvcml0eSZhbXA7Y29sPWNoYW5nZXRpbWUmYW1wO29yZGVyPWNoYW5nZXRpbWUiZGF0YS10eXBlPSJsaW5rIiBkYXRhLWlkPSJodHRwczovL2NvcmUudHJhYy53b3JkcHJlc3Mub3JnL3F1ZXJ5P3N0YXR1cz1hY2NlcHRlZCZhcDtzdGF0dXM9YXNzZ25lZCZhbXA7c3RhdHVzPW5ldyZhbXA7c3RhdHVzPXJlb3BlbmVkJmFtcDtzdGF0dXM9cmV2aWV3aW5nJmFtcDtrZXl3b3Jkcz0hfmZpeGVkLW1ham9yJmFtcDtmb2N1c2VzPX5wZXJmb3JtYW5jZSZhbXA7bWk9NjkuMiZhbXA7bWlsZXN0b25lPTcuMCZhbXA7Z3JvdXA9bWlsZXN0b25lJmFtcDtjb2w9aWQmYW1wO2NvbD1zdW1tYXJ5JmFtcDtjb2w9c3RhdHVzJmFtcDtjb2w9a2V5d29yZHMmYW1wO2NvbD1vd25lciZhbXA7Y29sPXR5cGUmYW1wO2NvbD1wcmlvcml0eSZhbXA7Y29sPWNoYW5nZXRpbWUmYW1wO29yZGVyPWNoYW5nZXRpbWUiPmN1cnJlbnQgbWlsZXN0b25lPC9hPi5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc0B3ZXN0b25ydXRlciB0aGVuIGFza2VkIEBwYmVhcm5lIGFib3V0IHRpY2tldCAjNjQwODcgKGRlcHJlY2F0ZWQgdXJsZW5jb2RlKCkgcGFzc2luZyBudWxsIHdhcm5pbmcgZHVyaW5nIGxvYWQtc3R5bGVzLnBocCkgYW5kIG5vdGVkIHRoYXQgaXQgYXBwZWFyZWQgcmVsYXRlZCB0byBQUiAjMTA4OTgsIHdoaWNoIEBwYmVhcm5lIGhhZCBvcGVuZWQgZm9yIHRpY2tldCAjNjQ2MjAgKGZ1bmN0aW9uIHJlYWRfanNvbl9maWxlIHRocm93cyBhbiBlcnJvciBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nKS4gQHdlc3RvbnJ1dGVyIGFza2VkIHdoZXRoZXIgIzY0MDg3IGFuZCAjNjQ2MjAgd2VyZSBkdXBsaWNhdGVzIChvciB2aWNlIHZlcnNhKS4gQHBiZWFybmUgcmVzcG9uZGVkIHRoYXQgdGhleSBsb29rIGxpa2UgZHVwbGljYXRlcyBhbmQgc2hhcmVkIHRoYXQgdGhlIHBhdGNoIHNob3VsZCBmaXggYm90aCBpc3N1ZXMuIEB3ZXN0b25ydXRlciByZXBsaWVkIHRoYXQgaGUgYXNrZWQgdGhlIHJlcG9ydGVyIG9mIHRoZSBvdGhlciB0aWNrZXQgdG8gdGVzdCB0aGUgcGF0Y2guPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy93b3JkcHJlc3MtZGV2ZWxvcC9wdWxsLzEwODk4IiBkYXRhLXR5cGU9ImxpbmsiIGRhdGEtaWQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDg5OCI+PC9hPmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBhc2tlZCB3aGV0aGVyICM2NDA4NyBhbmQgIzY0NjIwIHdlcmUgZHVwbGljYXRlcyAob3IgdmljZSB2ZXJzYSkuIEBwYmVhcm5lIHJlc3BvbmRlZCB0aGF0IHRoZXkgbG9vayBsaWtlIGR1cGxpY2F0ZXMgYW5kIHNoYXJlZCB0aGF0IHRoZSBwYXRjaCBzaG91bGQgZml4IGJvdGggaXNzdWVzLiBAd2VzdG9ucnV0ZXIgcmVwbGllZCB0aGF0IGhlIGFza2VkIHRoZSByZXBvcnRlciBvZiB0aGUgb3RoZXIgdGlja2V0IHRvIHRlc3QgdGhlIHBhdGNoLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgYXNrZWQgd2hldGhlciAjNjQwODcgYW5kICM2NDYyMCB3ZXJlIGR1cGxpY2F0ZXMgKG9yIHZpY2UgdmVyc2EpLiBAcGJlYXJuZSByZXNwb25kZWQgdGhhdCB0aGV5IGxvb2sgbGlrZSBkdXBsaWNhdGVzIGFuZCBzaGFyZWQgdGhhdCB0aGUgcGF0Y2ggc2hvdWxkIGZpeCBib3RoIGlzc3Vlcy4gQHdlc3RvbnJ1dGVyIHJlcGxpZWQgdGhhdCBoZSBhc2tlZCB0aGUgcmVwb3J0ZXIgb2YgdGhlIG90aGVyIHRpY2tldCB0byB0ZXN0IHRoZSBwYXRjaC5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEBwYmVhcm5lIHJlc3BvbmRlZCB0aGF0IHRoZXkgbG9vayBsaWtlIGR1cGxpY2F0ZXMgYW5kIHNoYXJlZCB0aGF0IHRoZSBwYXRjaCBzaG91bGQgZml4IGJvdGggaXNzdWVzLiBAd2VzdG9ucnV0ZXIgcmVwbGllZCB0aGF0IGhlIGFza2VkIHRoZSByZXBvcnRlciBvZiB0aGUgb3RoZXIgdGlja2V0IHRvIHRlc3QgdGhlIHBhdGNoLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QHdlc3RvbnJ1dGVyIHJlcGxpZWQgdGhhdCBoZSBhc2tlZCB0aGUgcmVwb3J0ZXIgb2YgdGhlIG90aGVyIHRpY2tldCB0byB0ZXN0IHRoZSBwYXRjaC5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBzaGFyZWQgdGhhdCB0aGVyZSBoYWQgYmVlbiBubyByZXNwb25zZXMgeWV0IG9uIHRoZSBQZXJmb3JtYW5jZSBMYWIgPGNvZGU+Q09ERU9XTkVSUzwvY29kZT4gYXVkaXQgaXNzdWUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9pc3N1ZXMvMjM3NCI+IzIzNzQ8L2E+LmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAYjFpbmswIHNoYXJlZCB0aGF0IHRoZXkgd291bGQgbGlrZSB0byBiZSBhZGRlZCBhcyBhIDxjb2RlPkNPREVPV05FUjwvY29kZT4gZm9yIHRoZSBNb2Rlcm4gSW1hZ2UgRm9ybWF0cyBwbHVnaW4sIGFzIHdlbGwgYXMgZm9yIFNpdGUgSGVhbHRoIHRlc3RzIHRoZXkgaGFkIGFkZGVkIG9yIHVwZGF0ZWQuaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgcmVwbGllZCB0aGF0IHRoaXMgc291bmRlZCBnb29kIGFuZCBhc2tlZCBAYjFpbmswIHRvIHVwZGF0ZSB0aGUgPGNvZGU+Q09ERU9XTkVSUzwvY29kZT4gZmlsZSBkaXJlY3RseSBpbiB0aGUgUFIgdG8gYWRkIHRoZW1zZWx2ZXMgYXMgYXBwcm9wcmlhdGUuaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgbWVudGlvbmVkIGludGVyZXN0IGluIG1lcmdpbmcgdGhlIFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGVyZm9ybWFuY2UvcHVsbC8yMzUyIj4jMjM1MjwvYT4gdG8gYmV0dGVyIG9ic2VydmUgQ29waWxvdOKAmXMgaW1wYWN0IGluIHByYWN0aWNlLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QHdlc3RvbnJ1dGVyIHBvaW50ZWQgb3V0IHRoYXQgdGhlcmUgYXJlIHNldmVyYWwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9wdWxscz9xPWlzJTNBb3BlbitpcyUzQXByK2xhYmVsJTNBJTIyJTVCUGx1Z2luJTVEK1ZpZXcrVHJhbnNpdGlvbnMlMjIiPm9wZW48L2E+IFZpZXcgVHJhbnNpdGlvbnMgcGx1Z2luIFBScyB0aGF0IHN0aWxsIG5lZWQgcmV2aWV3LmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAYjFpbmswIHNoYXJlZCB0aGF0IHRoZXkgcGxhbiB0byBhZGRyZXNzIHJlY2VudCBmZWVkYmFjayBvbiBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BlcmZvcm1hbmNlL3B1bGwvMjMzNiI+IzIzMzY8L2E+IGJ5IHRoZSBlbmQgb2YgdGhlIHdlZWsuaW5uZXJCbG9ja3NAd2VzdG9ucnV0ZXIgc2hhcmVkIHRoYXQgYSBzZWN1cml0eSBpc3N1ZSBoYWQgYmVlbiByZXNwb25zaWJseSBkaXNjbG9zZWQgZm9yIHRoZSBFbWJlZCBPcHRpbWl6ZXIgcGx1Z2luIGFuZCB0aGF0IGEgZml4IHdhcyByZWxlYXNlZCB0aGUgcHJldmlvdXMgRnJpZGF5LmNsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc0B3ZXN0b25ydXRlciBhbHNvIG1lbnRpb25lZCB0aGF0IHRoZXJlIGFyZSBzZXZlcmFsIHVwZGF0ZXMgYWNyb3NzIHRoZSBQZXJmb3JtYW5jZSBMYWIgcGx1Z2lucyB0aGF0IHdvdWxkIGJlIGdvb2QgdG8gaW5jbHVkZSBpbiBhIG5ldyByZWxlYXNlLiBAd2VzdG9ucnV0ZXIgc3VnZ2VzdGVkIHRhcmdldGluZyBhIHJlbGVhc2UgZm9yIFRodXJzZGF5IGFuZCBwcm9wb3NlZCB3cmFwcGluZyB1cCBhbnkgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIHRoYXQgYXJlIG5lYXJseSByZWFkeSBiZWZvcmUgdGhlbi5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEB3ZXN0b25ydXRlciBzdWdnZXN0ZWQgdGFyZ2V0aW5nIGEgcmVsZWFzZSBmb3IgVGh1cnNkYXkgYW5kIHByb3Bvc2VkIHdyYXBwaW5nIHVwIGFueSBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgdGhhdCBhcmUgbmVhcmx5IHJlYWR5IGJlZm9yZSB0aGVuLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRAd2VzdG9ucnV0ZXIgc3VnZ2VzdGVkIHRhcmdldGluZyBhIHJlbGVhc2UgZm9yIFRodXJzZGF5IGFuZCBwcm9wb3NlZCB3cmFwcGluZyB1cCBhbnkgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIHRoYXQgYXJlIG5lYXJseSByZWFkeSBiZWZvcmUgdGhlbi5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2NrczwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5sbCBjaGF0IGxvZyBpcyBhdmFpbGFibGUgYmVnaW5uaW5nIDxhIGhyZWY9Imh0dHBzOi8vd29yZHByZXNzLnNsYWNrLmNvbS9hcmNoaXZlcy9DMDJLR041SzA3Ni9wMTc3MTk0ODgzNDc0Mzc4OSI+aGVyZSBvbiBTbGFjazwvYT4uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Xb3JkUHJlc3MgUGVyZm9ybWFuY2UgVHJhYyB0aWNrZXRzPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkB3ZXN0b25ydXRlciBzaGFyZWQgYSBuZXdseSBvcGVuZWQgdGlja2V0ICM2NDY5NiBhbmQgbm90ZWQgdGhhdCBpZiByZWFsLXRpbWUgY29sbGFib3JhdGlvbiBlbmRzIHVwIGRpc2FibGluZyBvYmplY3QgY2FjaGluZyBmb3IgcG9zdHMgb24gdGhlIGZyb250ZW5kLCB0aGlzIHdvdWxkIGJlIGEgc2VyaW91cyBjb25jZXJuLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QHdlc3RvbnJ1dGVyIGFsc28gc2hhcmVkIHRoYXQgdGhlcmUgYXJlIGZvdXIgb3RoZXIgcGVyZm9ybWFuY2UtZm9jdXNlZCB0aWNrZXRzIGluIHRoZSA8YSBocmVmPSJodHRwczovL2NvcmUudHJhYy53b3JkcHJlc3Mub3JnL3F1ZXJ5P3N0YXR1cz1hY2NlcHRlZCZhbXA7c3RhdHVzPWFzc2lnbmVkJmFtcDtzdGF0dXM9bmV3JmFtcDtzdGF0dXM9cmVvcGVuZWQmYW1wO3N0YXR1cz1yZXZpZXdpbmcmYW1wO2tleXdvcmRzPSF+Zml4ZWQtbWFqb3ImYW1wO2ZvY3VzZXM9fnBlcmZvcm1hbmNlJmFtcDttaWxlc3RvbmU9Ni45LjImYW1wO21pbGVzdG9uZT03LjAmYW1wO2dyb3VwPW1pbGVzdG9uZSZhbXA7Y29sPWlkJmFtcDtjb2w9c3VtbWFyeSZhbXA7Y29sPXN0YXR1cyZhbXA7Y29sPWtleXdvcmRzJmFtcDtjb2w9b3duZXImYW1wO2NvbD10eXBlJmFtcDtjb2w9cHJpb3JpdHkmYW1wO2NvbD1jaGFuZ2V0aW1lJmFtcDtvcmRlcj1jaGFuZ2V0aW1lIiBkYXRhLXR5cGU9ImxpbmsiIGRhdGEtaWQ9Imh0dHBzOi8vY29yZS50cmFjLndvcmRwcmVzcy5vcmcvcXVlcnk\/c3RhdHVzPWFjY2VwdGVkJmFtcDtzdGF0dXM9YXNzaWduZWQmYW1wO3N0YXR1cz1uZXcmYW1wO3N0YXR1cz1yZW9wZW5lZCZhbXA7c3RhdHVzPXJldmlld2luZyZhbXA7a2V5d29yZHM9IX5maXhlZC1tYWpvciZhbXA7Zm9jdXNlcz1+cGVyZm9ybWFuY2UmYW1wO21pbGVzdG9uZT02LjkuMiZhbXA7bWlsZXN0b25lPTcuMCZhbXA7Z3JvdXA9bWlsZXN0b25lJmFtcDtjb2w9aWQmYW1wO2NvbD1zdW1tYXJ5JmFtcDtjb2w9c3RhdHVzJmFtcDtjb2w9a2V5d29yZHMmYW1wO2NvbD1vd25lciZhbXA7Y29sPXR5cGUmYW1wO2NvbD1wcmlvcml0eSZhbXA7Y29sPWNoYW5nZXRpbWUmYW1wO29yZGVyPWNoYW5nZXRpbWUiPmN1cnJlbnQgbWlsZXN0b25lPC9hPi48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkB3ZXN0b25ydXRlciBhc2tlZCBAcGJlYXJuZSBhYm91dCB0aWNrZXQgIzY0MDg3IGFuZCBub3RlZCB0aGF0IGl0IGFwcGVhcmVkIHJlbGF0ZWQgdG8gUFIgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy93b3JkcHJlc3MtZGV2ZWxvcC9wdWxsLzEwODk4IiBkYXRhLXR5cGU9ImxpbmsiIGRhdGEtaWQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDg5OCI+IzEwODk4PC9hPiwgd2hpY2ggQHBiZWFybmUgaGFkIG9wZW5lZCBmb3IgdGlja2V0ICM2NDYyMC4gPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QHdlc3RvbnJ1dGVyIGFza2VkIHdoZXRoZXIgIzY0MDg3IGFuZCAjNjQ2MjAgd2VyZSBkdXBsaWNhdGVzIChvciB2aWNlIHZlcnNhKS4gPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5AcGJlYXJuZSByZXNwb25kZWQgdGhhdCB0aGV5IGxvb2sgbGlrZSBkdXBsaWNhdGVzIGFuZCBzaGFyZWQgdGhhdCB0aGUgcGF0Y2ggc2hvdWxkIGZpeCBib3RoIGlzc3Vlcy4gPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5Ad2VzdG9ucnV0ZXIgcmVwbGllZCB0aGF0IGhlIGFza2VkIHRoZSByZXBvcnRlciBvZiB0aGUgb3RoZXIgdGlja2V0IHRvIHRlc3QgdGhlIHBhdGNoLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+UGVyZm9ybWFuY2UgTGFiIFBsdWdpbiAoYW5kIG90aGVyIHBlcmZvcm1hbmNlIHBsdWdpbnMpPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkB3ZXN0b25ydXRlciBzaGFyZWQgdGhhdCBhIHNlY3VyaXR5IGlzc3VlIGhhZCBiZWVuIHJlc3BvbnNpYmx5IGRpc2Nsb3NlZCBmb3IgdGhlIEVtYmVkIE9wdGltaXplciBwbHVnaW4gYW5kIHRoYXQgYSBmaXggd2FzIHJlbGVhc2VkIHRoZSBwcmV2aW91cyBGcmlkYXkuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5Ad2VzdG9ucnV0ZXIgYWxzbyBtZW50aW9uZWQgdGhhdCB0aGVyZSBhcmUgc2V2ZXJhbCB1cGRhdGVzIGFjcm9zcyB0aGUgUGVyZm9ybWFuY2UgTGFiIHBsdWdpbnMgdGhhdCB3b3VsZCBiZSBnb29kIHRvIGluY2x1ZGUgaW4gYSBuZXcgcmVsZWFzZS4gPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QHdlc3RvbnJ1dGVyIHN1Z2dlc3RlZCB0YXJnZXRpbmcgYSByZWxlYXNlIGZvciBUaHVyc2RheSBhbmQgcHJvcG9zZWQgd3JhcHBpbmcgdXAgYW55IGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyB0aGF0IGFyZSBuZWFybHkgcmVhZHkgYmVmb3JlIHRoZW4uPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPk91ciBuZXh0IGNoYXQgd2lsbCBiZSBoZWxkIG9uIFt0aW1lXVR1ZXNkYXksIE1hcmNoIDEwLCAyMDI2IGF0IDE2OjAwIFVUQ1svdGltZV0gaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vd29yZHByZXNzLnNsYWNrLmNvbS9tZXNzYWdlcy9jb3JlLXBlcmZvcm1hbmNlLyI+I2NvcmUtcGVyZm9ybWFuY2UgY2hhbm5lbDwvYT4gaW4gPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY2hhdC8iPlNsYWNrPC9hPjwvc3Ryb25nPi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT5kb2N1bWVudE1ldGFzYXZlZEF0ZG9jdW1lbnRNZXRhc2F2ZWRCeQUHCAQIBggFCAcIBwgGCA4IDggLCAZIAQYIBBgWEx8aIBsvKgkZISIWCAoIBAgGGgMNAQIIBAgHBApHAAsPoQFBAgkUCAcPBAoHMwULCAcPBAoHBgsIBw8ECgcMgA8LCAcPBAoHqwQLCAcPBAoHogILCAcPBAoHBgsIBw8ECge3AgsIBw8ECgeIAwsIBw8ECgeSAgsIBw8ECge9AgsIBw8ECgeHAQULCAcPBAoHBgsIBw8ECge9AgsIBw8ECgcGCwgHDwQKB6wCCwgHDwQKB50CCwgHDwQKB6gCCwgHDwQKB6UDCwgHDwQKBwYLCAcPBAoHnQILCAcPBAoHGwULCAcPBAoHBgsIBw8ECgefAwsIBw8ECgcGCwgHDwQKB54BCwgHDwQKB4YDCwgHDwQKB5QECwgHDwQKBzUIAQKCAwcLBwECAQQCJKkEAQeBAgIBAwgHBAoHC5YBQQECQQMHLgERGAGAAQMIjASRAQy3AQKQAwgHBAoHCw0FIgwBDQEDAQ8BBQESAQMkBi2BAQKIBJkCBAgHBAoHiAQLCAcECgcGCwgHBAoHjgG6AgsIBwQKB6QBlgELCAcECgeWAQsIBw8ECge9AgsIBw8ECgcGCwgHDwQKB6wCCwgHDwQKB50CCwgHDwQKB6gCCwgHDwQKB6UDCwgHDwQKBwYLCAcPBAoHnQILmAIIBw8ECgcLCAcPBAoHBgsIBwQKBwuOApACCAcECgcLCAcPBAoHkAILCAcECgcGCwgHDwQKB5ACCwgHBApHAAukOgwHDAcOAQ0ADQECAAABAACtAwHIAUIBAQBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIACUEYBUGIAQRBYQHJBAB9AXcTMjAyNi0wMi0yNFQxODoxNjoxMXcKYXV0by1kcmFmdH23kP4UfQB3BG9wZW53AHl3AHcIc3RhbmRhcmR3AHcAeXl3AHl9AHl5dwB3AHh5dgIYaW1hZ2VfZ2VuZXJhdG9yX3NldHRpbmdzdgQIdGVtcGxhdGV3B2hpZ2h3YXkQZGVmYXVsdF9pbWFnZV9pZH0ABGZvbnR3AAdlbmFibGVkeQd2ZXJzaW9ufQJ1AHUAd1VodHRwczovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlLzIwMjYvMDIvMTAvcGVyZm9ybWFuY2UtY2hhdC1zdW1tYXJ5LTEwLWZlYnJ1YXJ5LTIwMjYvdylwZXJmb3JtYW5jZS1jaGF0LXN1bW1hcnktMTAtZmVicnVhcnktMjAyNncocGVyZm9ybWFuY2UtY2hhdC1zdW1tYXJ5LTEtZmVicnVhcnktMjAyNncncGVyZm9ybWFuY2UtY2hhdC1zdW1tYXJ5LS1mZWJydWFyeS0yMDI2dyhwZXJmb3JtYW5jZS1jaGF0LXN1bW1hcnktMi1mZWJydWFyeS0yMDI2dylwZXJmb3JtYW5jZS1jaGF0LXN1bW1hcnktMjQtZmVicnVhcnktMjAyNnckZWEzNzNmZTEtOTJiMi00OGNjLWIwZTUtYmE0ZmY3MTNmNmIweHcOY29yZS9wYXJhZ3JhcGh5dyRmYmNmMTU0Ny01OGY0LTQxNjQtOWZjYi0wODA0ZmY1YTM5OGJ3iQE8cD5sbCBjaGF0IGxvZyBpcyBhdmFpbGFibGUgYmVnaW5uaW5nIDxhIGhyZWY9Imh0dHBzOi8vd29yZHByZXNzLnNsYWNrLmNvbS9hcmNoaXZlcy9DMDJLR041SzA3Ni9wMTc3MDczOTI1MjkzMDE1OSI+aGVyZSBvbiBTbGFjazwvYT4uPC9wPnckM2I5ZjNkNzQtMzNiMS00ZDI2LTliODMtYjM1MzRmYzE1MmY4eHdVPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPldvcmRQcmVzcyBQZXJmb3JtYW5jZSBUcmFjIHRpY2tldHM8L3N0cm9uZz48L2gyPncMY29yZS9oZWFkaW5nfQJ3JGZkOWY4NGY1LWUyZTgtNGNmYi05ZGE5LWI0ZWMzMTg4ODAxM3h3JTx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+CgoKCgoKPC91bD53CWNvcmUvbGlzdHl3AHckNGFjNTc0ODgtZmJmNC00ZmZiLTlmYzQtMTMzYWRlOThjMzFkeHfVBzxsaT5Ad2VzdG9ucnV0ZXIgc2hhcmVkIHF1ZXJ5LCBub3RpbmcgdGhhdCB0aGVyZSBhcmUgY3VycmVudGx5IDEyIHRvdGFsIHRpY2tldHMgd2hlbiBpbmNsdWRpbmcgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9xdWVyeT9zdGF0dXM9YWNjZXB0ZWQmYW1wO3N0YXR1cz1hc3NpZ25lZCZhbXA7c3RhdHVzPW5ldyZhbXA7c3RhdHVzPXJlb3BlbmVkJmFtcDtzdGF0dXM9cmV2aWV3aW5nJmFtcDtrZXl3b3Jkcz0hfmZpeGVkLW1ham9yJmFtcDtmb2N1c2VzPX5wZXJmb3JtYW5jZSZhbXA7bWlsZXN0b25lPTYuOS4xJmFtcDttaWxlc3RvbmU9Ny4wJmFtcDtncm91cD1taWxlc3RvbmUmYW1wO2NvbD1pZCZhbXA7Y29sPXN1bW1hcnkmYW1wO2NvbD1zdGF0dXMmYW1wO2NvbD1rZXl3b3JkcyZhbXA7Y29sPW93bmVyJmFtcDtjb2w9dHlwZSZhbXA7Y29sPXByaW9yaXR5JmFtcDtjb2w9Y2hhbmdldGltZSZhbXA7b3JkZXI9Y2hhbmdldGltZSI+ZGVmZWN0cyBhbmQgZW5oYW5jZW1lbnRzPC9hPiwgYW5kIDkgPGEgaHJlZj0iaHR0cHM6Ly9jb3JlLnRyYWMud29yZHByZXNzLm9yZy9xdWVyeT9zdGF0dXM9YWNjZXB0ZWQmYW1wO3N0YXR1cz1hc3NpZ25lZCZhbXA7c3RhdHVzPW5ldyZhbXA7c3RhdHVzPXJlb3BlbmVkJmFtcDtzdGF0dXM9cmV2aWV3aW5nJmFtcDtrZXl3b3Jkcz0hfmZpeGVkLW1ham9yJmFtcDtmb2N1c2VzPX5wZXJmb3JtYW5jZSZhbXA7dHlwZT0hZGVmZWN0KyhidWcpJmFtcDttaWxlc3RvbmU9Ni45LjEmYW1wO21pbGVzdG9uZT03LjAmYW1wO2dyb3VwPW1pbGVzdG9uZSZhbXA7Y29sPWlkJmFtcDtjb2w9c3VtbWFyeSZhbXA7Y29sPXN0YXR1cyZhbXA7Y29sPWtleXdvcmRzJmFtcDtjb2w9b3duZXImYW1wO2NvbD10eXBlJmFtcDtjb2w9cHJpb3JpdHkmYW1wO2NvbD1jaGFuZ2V0aW1lJmFtcDtvcmRlcj1jaGFuZ2V0aW1lIj5ub24tZGVmZWN0PC9hPiB0aWNrZXRzIHNwZWNpZmljYWxseS48L2xpPncOY29yZS9saXN0LWl0ZW13JDNmNmUzNTBkLTgzZTctNDJkYS1hODQ1LWVkZTFlMTAzMGEwNXh3tAI8bGk+QHdlc3RvbnJ1dGVyIHBvaW50ZWQgb3V0IHRoYXQgUFIgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy93b3JkcHJlc3MtZGV2ZWxvcC9wdWxsLzEwODU1IiBkYXRhLXR5cGU9ImxpbmsiIGRhdGEtaWQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDg1NSI+IzEwODU1PC9hPiwgd2hpY2ggaW1wcm92ZXMgdGhlIHJvYnVzdG5lc3Mgb2YgcGFnZSBjYWNoZSBkZXRlY3Rpb24gbG9naWMgaW4gU2l0ZSBIZWFsdGgsIGNvdWxkIHVzZSBhbm90aGVyIHJldmlldy48L2xpPncOY29yZS9saXN0LWl0ZW13JDYwYTQ2NjJlLTJmOWQtNDkxZC04ZjkyLWMyZjA3ZjQ5Y2JmN3h3qwE8bGk+QHNwYWNlZG1vbmtleSBzaGFyZWQgdGhhdCBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3dvcmRwcmVzcy1kZXZlbG9wL3B1bGwvMTA1MzEiPiMxMDUzMTwvYT4gaGFkIGp1c3QgYmVlbiBhcHByb3ZlZCBhbmQgd291bGQgYmUgY29tbWl0dGVkIHNob3J0bHkuPC9saT53DmNvcmUvbGlzdC1pdGVtdyQwMTQxZTczMi00NmI2LTRjYjgtOWEwMy04YzM5MTMyYWY3Y2Z4dyM8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKCgo8L3VsPncJY29yZS9saXN0eXcAdyRmZmU0ODM0OC0xM2Y4LTQ0OTItYWRhMS0zYmJkOWIzNjJhZWV4d8ABPGxpPkB3ZXN0b25ydXRlciBhc2tlZCBhYm91dCBhIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvd29yZHByZXNzLWRldmVsb3AvcHVsbC8xMDUzMSNkaXNjdXNzaW9uX3IyNzAzNTExNjk5Ij5yZXZpZXcgY29tbWVudDwvYT4gb24gdGhhdCBQUiByZWdhcmRpbmcgcGFzc3dvcmQtcHJvdGVjdGVkIHBvc3RzLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckMDE3ZWJkYzQtMmQ3YS00NmMwLWFmZmUtM2Q2ZWJjYTIxN2NjeHfRATxsaT5Ac3BhY2VkbW9ua2V5IHJlcGxpZWQgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhY2NvdW50IGZvciBwYXNzd29yZC1wcm90ZWN0ZWQgcG9zdHMsIGJ1dCBmdW5jdGlvbmFsbHkgYmVoYXZlcyB0aGUgc2FtZSBhcyBiZWZvcmUsIHdoaWxlIG5vdyBiZW5lZml0aW5nIGZyb20gdXNpbmcgPGNvZGU+V1BfUXVlcnk8L2NvZGU+LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckYmM5NTcyZjgtZTIxNy00ZjdiLWE2MjUtMDdjYTlhOTc5OTk5eHebATxsaT5Ac3BhY2VkbW9ua2V5IGFkZGVkIHRoYXQgc3dpdGNoaW5nIHRvIDxjb2RlPldQX1F1ZXJ5PC9jb2RlPiBvcGVucyB1cCBhZGRpdGlvbmFsIHBvc3NpYmlsaXRpZXMgYmV5b25kIGNhY2hpbmcsIGluY2x1ZGluZyBmaWx0ZXJzIGFuZCBleHRlbnNpYmlsaXR5LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckNmFkOTkyYjItMTExNi00ZGJmLWI4ZjQtNGQwMzg3ZWUzNTZleHfGATxsaT5Ad2VzdG9ucnV0ZXIgYWxzbyBoaWdobGlnaHRlZCB0aGF0IHRoZSBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3dvcmRwcmVzcy1kZXZlbG9wL3B1bGwvOTI2MCI+IzkyNjA8L2E+IGFwcGVhcnMgcmVhZHkgZm9yIGNvbW1pdCBhbmQgc2hhcmVkIHBsYW5zIHRvIGNvbW1pdCBpdCBsYXRlciB0aGF0IGRheS48L2xpPncOY29yZS9saXN0LWl0ZW13JDU0ZjdjODVjLTc2NzQtNDRjMi05ODMzLWVkNTgxNmQ0ZTZhOHh3aTxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5QZXJmb3JtYW5jZSBMYWIgUGx1Z2luIChhbmQgb3RoZXIgcGVyZm9ybWFuY2UgcGx1Z2lucyk8L3N0cm9uZz48L2gyPncMY29yZS9oZWFkaW5nfQJ3JGYzYjA5NzI1LWUzYTgtNGEzZi1iODg4LTEyMzkxODU0MjExOXh3Izx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+CgoKCjwvdWw+dwljb3JlL2xpc3R5dwB3JDMxZDk5ZTFmLTBlY2YtNGJlNi1hZWVjLTkzZTI3NmYzNzVlOXh3xgE8bGk+QHdlc3RvbnJ1dGVyIHNoYXJlZCB0aGF0IHRoZXJlIGhhZCBiZWVuIG5vIHJlc3BvbnNlcyB5ZXQgb24gdGhlIFBlcmZvcm1hbmNlIExhYiA8Y29kZT5DT0RFT1dORVJTPC9jb2RlPiBhdWRpdCBpc3N1ZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BlcmZvcm1hbmNlL2lzc3Vlcy8yMzc0Ij4jMjM3NDwvYT4uPC9saT53DmNvcmUvbGlzdC1pdGVtdyQwOWNmODc1ZC05MzRkLTRlYjUtYjliOS04ZWVkYjYwY2I5MzF4dyE8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKPC91bD53CWNvcmUvbGlzdHl3AHckODdlOWVjNTYtYTJhNy00ZTVmLWE2YTEtNGQ1ZjM2MjNlZjFieHe1ATxsaT5AYjFpbmswIHNoYXJlZCB0aGF0IHRoZXkgd291bGQgbGlrZSB0byBiZSBhZGRlZCBhcyBhIDxjb2RlPkNPREVPV05FUjwvY29kZT4gZm9yIHRoZSBNb2Rlcm4gSW1hZ2UgRm9ybWF0cyBwbHVnaW4sIGFzIHdlbGwgYXMgZm9yIFNpdGUgSGVhbHRoIHRlc3RzIHRoZXkgaGFkIGFkZGVkIG9yIHVwZGF0ZWQuPC9saT53DmNvcmUvbGlzdC1pdGVtdyQ5Mzc1MmIwMi1iNTY4LTQxNWQtOWI2NC1mYjQwOTZkMWFiMDR4d6YBPGxpPkB3ZXN0b25ydXRlciByZXBsaWVkIHRoYXQgdGhpcyBzb3VuZGVkIGdvb2QgYW5kIGFza2VkIEBiMWluazAgdG8gdXBkYXRlIHRoZSA8Y29kZT5DT0RFT1dORVJTPC9jb2RlPiBmaWxlIGRpcmVjdGx5IGluIHRoZSBQUiB0byBhZGQgdGhlbXNlbHZlcyBhcyBhcHByb3ByaWF0ZS48L2xpPncOY29yZS9saXN0LWl0ZW13JDYyZjIzZWRlLWIxN2YtNGRkYS1iN2M5LWJhMWMyZjY1YzZkMnh3swE8bGk+QHdlc3RvbnJ1dGVyIG1lbnRpb25lZCBpbnRlcmVzdCBpbiBtZXJnaW5nIHRoZSBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BlcmZvcm1hbmNlL3B1bGwvMjM1MiI+IzIzNTI8L2E+IHRvIGJldHRlciBvYnNlcnZlIENvcGlsb3TigJlzIGltcGFjdCBpbiBwcmFjdGljZS48L2xpPncOY29yZS9saXN0LWl0ZW13JDdkZjcyNDU2LTBhZTUtNDg3NC04MGJiLTljYWI1M2Y0NDMwOXh37gE8bGk+QHdlc3RvbnJ1dGVyIHBvaW50ZWQgb3V0IHRoYXQgdGhlcmUgYXJlIHNldmVyYWwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9wdWxscz9xPWlzJTNBb3BlbitpcyUzQXByK2xhYmVsJTNBJTIyJTVCUGx1Z2luJTVEK1ZpZXcrVHJhbnNpdGlvbnMlMjIiPm9wZW48L2E+IFZpZXcgVHJhbnNpdGlvbnMgcGx1Z2luIFBScyB0aGF0IHN0aWxsIG5lZWQgcmV2aWV3LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckMWU4YWEzNDAtYmFiOS00ZmYwLWJiOTctMmY1MjFjM2E5ZjU2eHcfPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48L3VsPncJY29yZS9saXN0eXcAdyRiNjg1YjI2Ni01ZWI0LTQyM2UtYTU4ZC1jMWZiZjNhMzViZDl4d6YBPGxpPkBiMWluazAgc2hhcmVkIHRoYXQgdGhleSBwbGFuIHRvIGFkZHJlc3MgcmVjZW50IGZlZWRiYWNrIG9uIFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGVyZm9ybWFuY2UvcHVsbC8yMzM2Ij4jMjMzNjwvYT4gYnkgdGhlIGVuZCBvZiB0aGUgd2Vlay48L2xpPncOY29yZS9saXN0LWl0ZW13JGNiOGE1MmRjLTgyMTUtNDJjNy1hZmE4LWI4MDE5MWI2MTYwY3h3PTxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5PcGVuIEZsb29yPC9zdHJvbmc+PC9oMj53DGNvcmUvaGVhZGluZ30CdyRhNDAzNzE3Ni0wZGMyLTRmM2QtOTBkOC00OTk5NDg3OTEzOWZ4dx88dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwvdWw+dwljb3JlL2xpc3R5dwB3JDFkOTMwMWFjLThjZTctNDA2Zi04ZDhhLWVlOWI0MTM4YjM4YXh36AE8bGk+QHdlc3RvbnJ1dGVyIHJhaXNlZCBhIHF1ZXN0aW9uIGFib3V0IHdoZXRoZXIgdGhlIEdpdEh1YiBTbGFjayBpbnRlZ3JhdGlvbiBmb3IgdGhlIFBlcmZvcm1hbmNlIHJlcG9zaXRvcnkgaXMgcHJvdmluZyBoZWxwZnVsIG9yIGlmIGl0IGlzIGJlY29taW5nIHRvbyBub2lzeSwgbm90aW5nIGEgcGVyc29uYWwgaW1wcmVzc2lvbiB0aGF0IGl0IG1heSBiZSBtb3JlIG5vaXNlIHRoYW4gc2lnbmFsLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckMjFhMjQzY2QtOGU3Yi00YzkxLWFmMjctZjVhYjNhNDViZTYweHcjPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKPC91bD53CWNvcmUvbGlzdHl3AHckZTk4NDU1MTktZjMxNy00NmY4LWExZDYtNDM5NzJlZDZlZjc5eHdnPGxpPkBiMWluazAgc2hhcmVkIHRoYXQgdGhlIGludGVncmF0aW9uIGZlZWxzIG5vaXN5LCBwYXJ0aWN1bGFybHkgZHVlIHRvIERlcGVuZGFib3QgcHVsbCByZXF1ZXN0cy48L2xpPncOY29yZS9saXN0LWl0ZW13JDVkZjMyZDBjLTQzYzYtNDVjNy05ZGJjLTA4ZGY0ZTVkZjk0NXh3zwE8bGk+QHdlc3RvbnJ1dGVyIGV4cGVyaW1lbnRlZCBkdXJpbmcgdGhlIG1lZXRpbmcgd2l0aCBzdWJzY3JpYmluZyBhbmQgdW5zdWJzY3JpYmluZyBmcm9tIHRoZSBHaXRIdWIgaW50ZWdyYXRpb24gYW5kIG9ic2VydmVkIHRoYXQgU2xhY2sgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgZmlsdGVyaW5nIG91dCBEZXBlbmRhYm90IG5vdGlmaWNhdGlvbnMuPC9saT53DmNvcmUvbGlzdC1pdGVtdyRkN2QzZDAyOC0yYjljLTRhYTQtOWFkNi0yN2Y3M2RhN2U2NjV4d6ECPGxpPkB3ZXN0b25ydXRlciBzdWdnZXN0ZWQgdGhhdCBjcmVhdGluZyBhIHNlcGFyYXRlIOKAnGZpcmVob3Nl4oCdIGNoYW5uZWwgY291bGQgYmUgYW4gb3B0aW9uIGlmIHRoZSB0ZWFtIHdhbnRzIHRvIHByZXNlcnZlIHZpc2liaWxpdHkgd2l0aG91dCBvdmVyd2hlbG1pbmcgdGhlIG1haW4gY2hhbm5lbCwgd2hpbGUgYWxzbyBub3RpbmcgdGhhdCB0aGV5IGFyZSBhbHJlYWR5IHN1YnNjcmliZWQgdG8gYWxsIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBkaXJlY3RseSBpbiB0aGUgcmVwb3NpdG9yeS48L2xpPncOY29yZS9saXN0LWl0ZW13JDMwMjk1NTFhLTNlYWYtNDAyNy1hNjJmLWUyYzk3NGMzNTMwOXh3iQI8cD48c3Ryb25nPk91ciBuZXh0IGNoYXQgd2lsbCBiZSBoZWxkIG9uIFt0aW1lXVR1ZXNkYXksIEZlYnJ1YXJ5IDI0LCAyMDI2IGF0IDE2OjAwIFVUQ1svdGltZV0gaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vd29yZHByZXNzLnNsYWNrLmNvbS9tZXNzYWdlcy9jb3JlLXBlcmZvcm1hbmNlLyI+I2NvcmUtcGVyZm9ybWFuY2UgY2hhbm5lbDwvYT4gaW4gPGEgaHJlZj0iaHR0cHM6Ly9tYWtlLndvcmRwcmVzcy5vcmcvY2hhdC8iPlNsYWNrPC9hPjwvc3Ryb25nPi48L3A+dw5jb3JlL3BhcmFncmFwaHl1AX2VEnUBfalKdQJ9qUp9uSp1A32pSn25Kn2yAnUEfalKfbkqfbICfbM9dQV9qUp9uSp9sgJ9sz19thV3JGQ4YjlmMzY2LWUzNDItNDU4NC1hZWZjLTU0MDY4MjNjMDdiZXh3DmNvcmUvbGlzdC1pdGVtdyQ3ZTA2OGQ3Ny00MGNjLTRhZjUtOThjMy1iYjc2YmYxOGE2OWN4dw5jb3JlL2xpc3QtaXRlbXckMjM5N2ZjNzQtOWQzYy00MWE2LTkxMGQtMjI5YzNhYzA2NzMxeHcOY29yZS9saXN0LWl0ZW13JDRmMWRhNWYwLWVlYjUtNGEzMy1iNWIwLTQ0NjdlYWI2MzU4OXckYTA1YjFiN2YtZDlhNy00YTExLWIyNTYtZTQ4NmE0Mzk1NTI5eHcJY29yZS9saXN0eXcAdyQ2MDNhOTZlNi03MjYzLTQ5NTQtODVkNy04ZmZkZTk3NzlmZTJ4dw5jb3JlL2xpc3QtaXRlbXckMmJhMGEzOWYtZWIxMi00NjBmLWExMWQtMWQ5OTg1MzMxYWMxeHcOY29yZS9saXN0LWl0ZW13JDU2MWExYjI5LWZmYzUtNDM5OC1hNTE1LTI2NGYwMWJlYmU5MXh3DmNvcmUvbGlzdC1pdGVtdyQzMWQ5OWUxZi0wZWNmLTRiZTYtYWVlYy05M2UyNzZmMzc1ZTl4d8YBPGxpPkB3ZXN0b25ydXRlciBzaGFyZWQgdGhhdCB0aGVyZSBoYWQgYmVlbiBubyByZXNwb25zZXMgeWV0IG9uIHRoZSBQZXJmb3JtYW5jZSBMYWIgPGNvZGU+Q09ERU9XTkVSUzwvY29kZT4gYXVkaXQgaXNzdWUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9pc3N1ZXMvMjM3NCI+IzIzNzQ8L2E+LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckMDljZjg3NWQtOTM0ZC00ZWI1LWI5YjktOGVlZGI2MGNiOTMxeHchPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCjwvdWw+dwljb3JlL2xpc3R5dwB3JDg3ZTllYzU2LWEyYTctNGU1Zi1hNmExLTRkNWYzNjIzZWYxYnh3tQE8bGk+QGIxaW5rMCBzaGFyZWQgdGhhdCB0aGV5IHdvdWxkIGxpa2UgdG8gYmUgYWRkZWQgYXMgYSA8Y29kZT5DT0RFT1dORVI8L2NvZGU+IGZvciB0aGUgTW9kZXJuIEltYWdlIEZvcm1hdHMgcGx1Z2luLCBhcyB3ZWxsIGFzIGZvciBTaXRlIEhlYWx0aCB0ZXN0cyB0aGV5IGhhZCBhZGRlZCBvciB1cGRhdGVkLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckOTM3NTJiMDItYjU2OC00MTVkLTliNjQtZmI0MDk2ZDFhYjA0eHemATxsaT5Ad2VzdG9ucnV0ZXIgcmVwbGllZCB0aGF0IHRoaXMgc291bmRlZCBnb29kIGFuZCBhc2tlZCBAYjFpbmswIHRvIHVwZGF0ZSB0aGUgPGNvZGU+Q09ERU9XTkVSUzwvY29kZT4gZmlsZSBkaXJlY3RseSBpbiB0aGUgUFIgdG8gYWRkIHRoZW1zZWx2ZXMgYXMgYXBwcm9wcmlhdGUuPC9saT53DmNvcmUvbGlzdC1pdGVtdyQ2MmYyM2VkZS1iMTdmLTRkZGEtYjdjOS1iYTFjMmY2NWM2ZDJ4d7MBPGxpPkB3ZXN0b25ydXRlciBtZW50aW9uZWQgaW50ZXJlc3QgaW4gbWVyZ2luZyB0aGUgUFIgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9wdWxsLzIzNTIiPiMyMzUyPC9hPiB0byBiZXR0ZXIgb2JzZXJ2ZSBDb3BpbG904oCZcyBpbXBhY3QgaW4gcHJhY3RpY2UuPC9saT53DmNvcmUvbGlzdC1pdGVtdyQ3ZGY3MjQ1Ni0wYWU1LTQ4NzQtODBiYi05Y2FiNTNmNDQzMDl4d+4BPGxpPkB3ZXN0b25ydXRlciBwb2ludGVkIG91dCB0aGF0IHRoZXJlIGFyZSBzZXZlcmFsIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGVyZm9ybWFuY2UvcHVsbHM\/cT1pcyUzQW9wZW4raXMlM0FwcitsYWJlbCUzQSUyMiU1QlBsdWdpbiU1RCtWaWV3K1RyYW5zaXRpb25zJTIyIj5vcGVuPC9hPiBWaWV3IFRyYW5zaXRpb25zIHBsdWdpbiBQUnMgdGhhdCBzdGlsbCBuZWVkIHJldmlldy48L2xpPncOY29yZS9saXN0LWl0ZW13JDFlOGFhMzQwLWJhYjktNGZmMC1iYjk3LTJmNTIxYzNhOWY1Nnh3Hzx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PC91bD53CWNvcmUvbGlzdHl3AHckYjY4NWIyNjYtNWViNC00MjNlLWE1OGQtYzFmYmYzYTM1YmQ5eHemATxsaT5AYjFpbmswIHNoYXJlZCB0aGF0IHRoZXkgcGxhbiB0byBhZGRyZXNzIHJlY2VudCBmZWVkYmFjayBvbiBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL3BlcmZvcm1hbmNlL3B1bGwvMjMzNiI+IzIzMzY8L2E+IGJ5IHRoZSBlbmQgb2YgdGhlIHdlZWsuPC9saT53DmNvcmUvbGlzdC1pdGVtdyRkZmY3MGM4Ni1lMjFmLTQ0YWItYjUwYy02YmE1YzBiYTIzOTJ4d8YBPGxpPkB3ZXN0b25ydXRlciBzaGFyZWQgdGhhdCB0aGVyZSBoYWQgYmVlbiBubyByZXNwb25zZXMgeWV0IG9uIHRoZSBQZXJmb3JtYW5jZSBMYWIgPGNvZGU+Q09ERU9XTkVSUzwvY29kZT4gYXVkaXQgaXNzdWUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9pc3N1ZXMvMjM3NCI+IzIzNzQ8L2E+LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckMDljZjg3NWQtOTM0ZC00ZWI1LWI5YjktOGVlZGI2MGNiOTMxeHchPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCjwvdWw+dwljb3JlL2xpc3R5dwB3JDU3ZTQzMTQyLTNmZjYtNDIxYi1iNjgyLTNiZTQ1ZTVlMTk4ZHh3DmNvcmUvbGlzdC1pdGVtdyQ1N2U0MzE0Mi0zZmY2LTQyMWItYjY4Mi0zYmU0NWU1ZTE5OGR4dw5jb3JlL2xpc3QtaXRlbXckODUyMDAzYjQtMzc0Yi00Yzc2LTg4YTMtYTA2NTE3OTY2YTI4eHfGATxsaT5Ad2VzdG9ucnV0ZXIgc2hhcmVkIHRoYXQgdGhlcmUgaGFkIGJlZW4gbm8gcmVzcG9uc2VzIHlldCBvbiB0aGUgUGVyZm9ybWFuY2UgTGFiIDxjb2RlPkNPREVPV05FUlM8L2NvZGU+IGF1ZGl0IGlzc3VlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvcGVyZm9ybWFuY2UvaXNzdWVzLzIzNzQiPiMyMzc0PC9hPi48L2xpPncOY29yZS9saXN0LWl0ZW13JDJiMWVjNjg2LTY3MzMtNGU4ZC1hZmMxLWY5YjJlNzY1OTdlMHckMmFkMDgwOTAtOTQzYS00YThjLTk4M2YtOTcwMzg4NGJjNzJkeHcJY29yZS9saXN0eXcAdyQ3YzQwMjJiOC0xMDgwLTQyODEtYWM4Zi0xYzk3ZTA0MDg2Mjh4d8YBPGxpPkB3ZXN0b25ydXRlciBzaGFyZWQgdGhhdCB0aGVyZSBoYWQgYmVlbiBubyByZXNwb25zZXMgeWV0IG9uIHRoZSBQZXJmb3JtYW5jZSBMYWIgPGNvZGU+Q09ERU9XTkVSUzwvY29kZT4gYXVkaXQgaXNzdWUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9wZXJmb3JtYW5jZS9pc3N1ZXMvMjM3NCI+IzIzNzQ8L2E+LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXckOTFmYWE3YWItZGY4MS00YTBjLThkODgtYTZiNDY1ODI4ZTA2eHcOY29yZS9wYXJhZ3JhcGh5dxMyMDI2LTAyLTI0VDE4OjI4OjE3dwVkcmFmdHtCeckOjESwAH2DtLemAgGD2puTASUBARkBGwIQBAIAaQADCGy\/BwHTCVmVCQm\/BjwHAQHFAQM2qAIBBoMBAHEtqQYAEgQiCwEMAQIBDgEEAREBAldAAocCnQGOAl25AWtVZbwBAawHmQEABg+OAa4C\",\"updateId\":682115774}","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1173],"tags":[4777,2745,178,3955,1398],"class_list":["post-121650","post","type-post","status-publish","format-standard","hentry","category-meetings","tag-core-performance","tag-hosting","tag-performance","tag-performance-chat","tag-summary","mentions-pbearne","mentions-westonruter","author-b1ink0"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vE6","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/22004791"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121650"}],"version-history":[{"count":2,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121650\/revisions"}],"predecessor-version":[{"id":121653,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121650\/revisions\/121653"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]},"_embedded":{"author":[{"id":22004791,"name":"Aditya Dhade","url":"https:\/\/b1ink0.com","description":"WordPress Core Performance Team Rep","link":"https:\/\/profiles.wordpress.org\/b1ink0\/","slug":"b1ink0","avatar_urls":{"24":"https:\/\/secure.gravatar.com\/avatar\/0d9557bf3396560b348c3e32969208638fdd0cccdd1e28a5ce6e70c0cddd87cf?s=24&d=mm&r=g","48":"https:\/\/secure.gravatar.com\/avatar\/0d9557bf3396560b348c3e32969208638fdd0cccdd1e28a5ce6e70c0cddd87cf?s=48&d=mm&r=g","96":"https:\/\/secure.gravatar.com\/avatar\/0d9557bf3396560b348c3e32969208638fdd0cccdd1e28a5ce6e70c0cddd87cf?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/22004791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users"}]}}],"wp:term":[[{"id":1173,"link":"https:\/\/make.wordpress.org\/core\/category\/meetings\/","name":"Meetings","slug":"meetings","taxonomy":"category","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories\/1173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/category"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?categories=1173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}],[{"id":4777,"link":"https:\/\/make.wordpress.org\/core\/tag\/core-performance\/","name":"core-performance","slug":"core-performance","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/4777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=4777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":2745,"link":"https:\/\/make.wordpress.org\/core\/tag\/hosting\/","name":"hosting","slug":"hosting","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/2745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=2745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":178,"link":"https:\/\/make.wordpress.org\/core\/tag\/performance\/","name":"performance","slug":"performance","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":3955,"link":"https:\/\/make.wordpress.org\/core\/tag\/performance-chat\/","name":"performance-chat","slug":"performance-chat","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/3955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=3955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}},{"id":1398,"link":"https:\/\/make.wordpress.org\/core\/tag\/summary\/","name":"summary","slug":"summary","taxonomy":"post_tag","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags\/1398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts?tags=1398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}]]}}]