array( array( 'attr_spec_list' => array( '[href]' => array(), 'border' => array(), 'download' => array(), 'href' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'ftp', 'geo', 'http', 'https', 'mailto', 'maps', 'bbmi', 'fb-messenger', 'intent', 'line', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'twitter', 'viber', 'whatsapp', ), ), ), 'hreflang' => array(), 'media' => array(), 'name' => array(), 'referrerpolicy' => array(), 'rel' => array( 'blacklisted_value_regex' => '(^|\\s)(components|dns-prefetch|import|manifest|preconnect|prefetch|preload|prerender|serviceworker|stylesheet|subresource|)(\\s|$)', ), 'role' => array(), 'tabindex' => array(), 'target' => array( 'value_regex' => '(_blank|_self|_top)', ), 'type' => array( 'value_casei' => 'text/html', ), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#links', ), ), ), 'abbr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'acronym' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'address' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'amp-3q-player' => array( array( 'attr_spec_list' => array( 'autoplay' => array( 'value' => '', ), 'data-id' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-3q-player', ), ), ), ), 'amp-accordion' => array( array( 'attr_spec_list' => array( 'disable-session-states' => array( 'value' => '', ), 'expand-single-section' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-accordion', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-accordion', ), ), ), 'amp-ad' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'rtc-config' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'template' => array(), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag_warning' => array( 'amp-ad extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-ad', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ad', ), ), array( 'attr_spec_list' => array( 'alt' => array(), 'data-multi-size' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => '', ), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'rtc-config' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag_warning' => array( 'amp-ad extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', 'amp-carousel', 'amp-fx-flying-carpet', 'amp-lightbox', 'amp-sticky-ad', ), 'requires_extension' => array( 'amp-ad', ), 'spec_name' => 'amp-ad with data-multi-size attribute', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ad', ), ), array( 'attr_spec_list' => array( 'alt' => array(), 'data-enable-refresh' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => '', ), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag_warning' => array( 'amp-ad extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', 'amp-fx-flying-carpet', 'amp-lightbox', ), 'requires_extension' => array( 'amp-ad', ), 'spec_name' => 'amp-ad with data-enable-refresh attribute', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ad', ), ), ), 'amp-analytics' => array( array( 'attr_spec_list' => array( 'config' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'type' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-analytics', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-analytics', ), ), ), 'amp-anim' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'controls' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'alternative_names' => array( 'srcset', ), 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'http', 'https', ), ), ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-anim', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-anim', ), ), ), 'amp-animation' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'trigger' => array( 'value' => 'visibility', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-animation', ), ), ), ), 'amp-apester-media' => array( array( 'attr_spec_list' => array( 'data-apester-channel-token' => array( 'value_regex' => '[0-9a-zA-Z]+', ), 'data-apester-media-id' => array( 'value_regex' => '[0-9a-zA-Z]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-apester-media', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-apester-media', ), ), ), 'amp-app-banner' => array( array( 'attr_spec_list' => array( 'id' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-app-banner', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-app-banner', 'unique' => true, ), ), ), 'amp-audio' => array( array( 'attr_spec_list' => array( 'album' => array(), 'artist' => array(), 'artwork' => array(), 'autoplay' => array( 'value' => '', ), 'controls' => array(), 'controlslist' => array(), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'preload' => array( 'value_regex_casei' => '(auto|metadata|none|)', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-story', ), 'requires_extension' => array( 'amp-audio', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-audio', ), ), array( 'attr_spec_list' => array( 'album' => array(), 'artist' => array(), 'artwork' => array(), 'autoplay' => array( 'mandatory' => true, 'value' => '', ), 'controls' => array(), 'controlslist' => array(), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story', 'requires_extension' => array( 'amp-audio', ), 'spec_name' => 'amp-story >> amp-audio', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-audio', ), ), ), 'amp-auto-ads' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-auto-ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-auto-ads', ), ), ), 'amp-beopinion' => array( array( 'attr_spec_list' => array( 'data-account' => array( 'mandatory' => true, 'value_regex_casei' => '[0-9a-f]{24}', ), 'data-content' => array( 'value_regex_casei' => '[0-9a-f]{24}', ), 'data-my-content' => array( 'value_regex' => '0|1', ), 'data-name' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-beopinion', ), ), ), ), 'amp-bind-macro' => array( array( 'attr_spec_list' => array( 'arguments' => array(), 'expression' => array( 'mandatory' => true, ), 'id' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-bind', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-bind', ), ), ), 'amp-bodymovin-animation' => array( array( 'attr_spec_list' => array( 'loop' => array( 'value_regex_casei' => '(false|number|true)', ), 'noautoplay' => array( 'value' => '', ), 'src' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-bodymovin-animation', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-bodymovin-animation', ), ), ), 'amp-brid-player' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-outstream' => array( 'value_regex' => '[0-9]+', ), 'data-partner' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'data-player' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'data-playlist' => array( 'value_regex' => '[0-9]+', ), 'data-video' => array( 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-brid-player', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-brid-player', ), ), ), 'amp-brightcove' => array( array( 'attr_spec_list' => array( '[data-account]' => array(), '[data-embed]' => array(), '[data-player-id]' => array(), '[data-player]' => array(), '[data-playlist-id]' => array(), '[data-video-id]' => array(), 'data-account' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-brightcove', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-brightcove', ), ), ), 'amp-byside-content' => array( array( 'attr_spec_list' => array( 'data-label' => array( 'mandatory' => true, ), 'data-webcare-id' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-byside-content', ), ), ), ), 'amp-call-tracking' => array( array( 'attr_spec_list' => array( 'config' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-call-tracking', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-call-tracking', ), ), ), 'amp-carousel' => array( array( 'attr_spec_list' => array( '[slide]' => array(), 'arrows' => array( 'value' => '', ), 'autoplay' => array( 'value' => '', ), 'controls' => array(), 'delay' => array( 'value_regex' => '[0-9]+', ), 'dots' => array( 'value' => '', ), 'lightbox' => array(), 'lightbox-exclude' => array( 'value' => '', ), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'loop' => array( 'value' => '', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'type' => array( 'value_regex' => 'slides|carousel', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-carousel', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-carousel', ), ), ), 'amp-consent' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-consent', ), 'unique' => true, ), ), ), 'amp-dailymotion' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-endscreen-enable' => array( 'value_regex' => 'true|false', ), 'data-info' => array( 'value_regex' => 'true|false', ), 'data-mute' => array( 'value_regex' => 'true|false', ), 'data-sharing-enable' => array( 'value_regex' => 'true|false', ), 'data-start' => array( 'value_regex' => '[0-9]+', ), 'data-ui-highlight' => array( 'value_regex_casei' => '([0-9a-f]{3}){1,2}', ), 'data-ui-logo' => array( 'value_regex' => 'true|false', ), 'data-videoid' => array( 'mandatory' => true, 'value_regex_casei' => '[a-z0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-dailymotion', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-dailymotion', ), ), ), 'amp-date-picker' => array( array( 'attr_spec_list' => array( 'allow-blocked-ranges' => array( 'value' => '', ), 'blocked' => array(), 'day-size' => array( 'value_regex' => '[0-9]+', ), 'first-day-of-week' => array( 'value_regex' => '[0-6]', ), 'format' => array(), 'fullscreen' => array( 'value' => '', ), 'highlighted' => array(), 'input-selector' => array(), 'locale' => array(), 'max' => array(), 'media' => array(), 'min' => array(), 'mode' => array( 'value_casei' => 'static', ), 'month-format' => array(), 'noloading' => array( 'value' => '', ), 'number-of-months' => array( 'value_regex' => '[0-9]+', ), 'open-after-clear' => array( 'value' => '', ), 'open-after-select' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'type' => array( 'value_casei' => 'single', ), 'week-day-format' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-date-picker', ), 'spec_name' => 'amp-date-picker[type=single][mode=static]', ), ), array( 'attr_spec_list' => array( 'allow-blocked-ranges' => array( 'value' => '', ), 'blocked' => array(), 'day-size' => array( 'value_regex' => '[0-9]+', ), 'first-day-of-week' => array( 'value_regex' => '[0-6]', ), 'format' => array(), 'highlighted' => array(), 'input-selector' => array(), 'locale' => array(), 'max' => array(), 'media' => array(), 'min' => array(), 'mode' => array( 'mandatory' => true, 'value_casei' => 'overlay', ), 'month-format' => array(), 'noloading' => array( 'value' => '', ), 'number-of-months' => array( 'value_regex' => '[0-9]+', ), 'open-after-clear' => array( 'value' => '', ), 'open-after-select' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'type' => array( 'value_casei' => 'single', ), 'week-day-format' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-date-picker', ), 'spec_name' => 'amp-date-picker[type=single][mode=overlay]', ), ), array( 'attr_spec_list' => array( 'allow-blocked-ranges' => array( 'value' => '', ), 'blocked' => array(), 'day-size' => array( 'value_regex' => '[0-9]+', ), 'end-input-selector' => array(), 'first-day-of-week' => array( 'value_regex' => '[0-6]', ), 'format' => array(), 'fullscreen' => array( 'value' => '', ), 'highlighted' => array(), 'locale' => array(), 'max' => array(), 'media' => array(), 'min' => array(), 'mode' => array( 'value_casei' => 'static', ), 'month-format' => array(), 'noloading' => array( 'value' => '', ), 'number-of-months' => array( 'value_regex' => '[0-9]+', ), 'open-after-clear' => array( 'value' => '', ), 'open-after-select' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'start-input-selector' => array(), 'type' => array( 'mandatory' => true, 'value_casei' => 'range', ), 'week-day-format' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-date-picker', ), 'spec_name' => 'amp-date-picker[type=range][mode=static]', ), ), array( 'attr_spec_list' => array( 'allow-blocked-ranges' => array( 'value' => '', ), 'blocked' => array(), 'day-size' => array( 'value_regex' => '[0-9]+', ), 'end-input-selector' => array(), 'first-day-of-week' => array( 'value_regex' => '[0-6]', ), 'format' => array(), 'highlighted' => array(), 'locale' => array(), 'max' => array(), 'media' => array(), 'min' => array(), 'mode' => array( 'mandatory' => true, 'value_casei' => 'overlay', ), 'month-format' => array(), 'noloading' => array( 'value' => '', ), 'number-of-months' => array( 'value_regex' => '[0-9]+', ), 'open-after-clear' => array( 'value' => '', ), 'open-after-select' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'start-input-selector' => array(), 'type' => array( 'mandatory' => true, 'value_casei' => 'range', ), 'week-day-format' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-date-picker', ), 'spec_name' => 'amp-date-picker[type=range][mode=overlay]', ), ), ), 'amp-document-recommendations' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-document-recommendations', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-document-recommendations', ), ), ), 'amp-embed' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'rtc-config' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'template' => array(), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag_warning' => array( 'amp-ad extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-ad', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ad', ), ), array( 'attr_spec_list' => array( 'alt' => array(), 'data-multi-size' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => '', ), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'rtc-config' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag_warning' => array( 'amp-ad extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', 'amp-carousel', 'amp-fx-flying-carpet', 'amp-lightbox', 'amp-sticky-ad', ), 'requires_extension' => array( 'amp-ad', ), 'spec_name' => 'amp-embed with data-multi-size attribute', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ad', ), ), ), 'amp-experiment' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'requires_extension' => array( 'amp-experiment', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-experiment', 'unique' => true, ), ), ), 'amp-facebook' => array( array( 'attr_spec_list' => array( 'data-href' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-facebook', ), ), ), ), 'amp-facebook-comments' => array( array( 'attr_spec_list' => array( 'data-href' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-facebook-comments', ), ), ), ), 'amp-facebook-like' => array( array( 'attr_spec_list' => array( 'data-href' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-facebook-like', ), ), ), ), 'amp-facebook-page' => array( array( 'attr_spec_list' => array( 'data-href' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-facebook-page', ), ), ), ), 'amp-fit-text' => array( array( 'attr_spec_list' => array( 'max-font-size' => array(), 'media' => array(), 'min-font-size' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-fit-text', ), ), ), ), 'amp-font' => array( array( 'attr_spec_list' => array( 'font-family' => array( 'mandatory' => true, ), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'on-error-add-class' => array(), 'on-error-remove-class' => array(), 'on-load-add-class' => array(), 'on-load-remove-class' => array(), 'timeout' => array( 'value_regex' => '[0-9]+', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-font', ), ), ), ), 'amp-fx-flying-carpet' => array( array( 'attr_spec_list' => array( 'height' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-fx-flying-carpet', ), ), ), ), 'amp-gfycat' => array( array( 'attr_spec_list' => array( 'data-gfyid' => array( 'mandatory' => true, ), 'media' => array(), 'noautoplay' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-gfycat', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-gfycat', ), ), ), 'amp-gist' => array( array( 'attr_spec_list' => array( 'data-gistid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-gist', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-gist', ), ), ), 'amp-hulu' => array( array( 'attr_spec_list' => array( 'data-eid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-hulu', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-hulu', ), ), ), 'amp-iframe' => array( array( 'attr_spec_list' => array( '[src]' => array(), 'allow' => array(), 'allowfullscreen' => array( 'value' => '', ), 'allowpaymentrequest' => array( 'value' => '', ), 'allowtransparency' => array( 'value' => '', ), 'frameborder' => array( 'value_regex' => '0|1', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'referrerpolicy' => array(), 'resizable' => array( 'value' => '', ), 'sandbox' => array(), 'scrolling' => array( 'value_regex' => 'auto|yes|no', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'https', ), ), ), 'srcdoc' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-iframe', ), ), ), ), 'amp-ima-video' => array( array( 'attr_spec_list' => array( 'autoplay' => array( 'value' => '', ), 'data-src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'data-tag' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-ima-video', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ima-video', ), ), ), 'amp-image-lightbox' => array( array( 'attr_spec_list' => array( 'controls' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-image-lightbox', ), ), ), ), 'amp-img' => array( array( 'attr_spec_list' => array( '[alt]' => array(), '[attribution]' => array(), '[src]' => array(), '[srcset]' => array(), 'alt' => array(), 'attribution' => array(), 'lightbox' => array(), 'lightbox-exclude' => array( 'value' => '', ), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'placeholder' => array(), 'src' => array( 'alternative_names' => array( 'srcset', ), 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'http', 'https', ), ), ), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-img', ), ), ), 'amp-imgur' => array( array( 'attr_spec_list' => array( 'data-imgur-id' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-imgur', ), ), ), ), 'amp-instagram' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'data-shortcode' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-instagram', ), ), ), ), 'amp-install-serviceworker' => array( array( 'attr_spec_list' => array( 'data-iframe-src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-install-serviceworker', ), ), ), ), 'amp-izlesene' => array( array( 'attr_spec_list' => array( 'data-videoid' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-izlesene', ), ), ), ), 'amp-jwplayer' => array( array( 'attr_spec_list' => array( 'data-media-id' => array( 'value_regex_casei' => '[0-9a-z]{8}', ), 'data-player-id' => array( 'mandatory' => true, 'value_regex_casei' => '[0-9a-z]{8}', ), 'data-playlist-id' => array( 'value_regex_casei' => '[0-9a-z]{8}', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-jwplayer', ), ), ), ), 'amp-kaltura-player' => array( array( 'attr_spec_list' => array( 'data-partner' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-kaltura-player', ), ), ), ), 'amp-layout' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-layout', ), ), ), 'amp-lightbox' => array( array( 'attr_spec_list' => array( 'controls' => array(), 'from' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'scrollable' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-lightbox', ), ), ), ), 'amp-list' => array( array( 'attr_spec_list' => array( '[src]' => array(), '[state]' => array(), 'credentials' => array(), 'items' => array(), 'max-items' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'reset-on-refresh' => array( 'value' => '', ), 'single-item' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'template' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-list', ), ), ), array( 'attr_spec_list' => array( '[src]' => array( 'mandatory' => true, ), 'credentials' => array(), 'items' => array(), 'max-items' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'single-item' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'template' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-list', ), 'spec_name' => 'AMP-LIST [SRC]', ), ), ), 'amp-live-list' => array( array( 'attr_spec_list' => array( 'data-max-items-per-page' => array( 'mandatory' => true, 'value_regex' => '\\d+', ), 'data-poll-interval' => array( 'value_regex' => '\\d{5,}', ), 'disabled' => array( 'value' => '', ), 'id' => array( 'mandatory' => true, ), 'sort' => array( 'value_regex' => 'ascending', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-live-list', ), ), ), ), 'amp-mathml' => array( array( 'attr_spec_list' => array( 'data-formula' => array( 'mandatory' => true, ), 'inline' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-mathml', ), ), ), ), 'amp-nexxtv-player' => array( array( 'attr_spec_list' => array( 'data-client' => array( 'mandatory' => true, ), 'data-mediaid' => array( 'mandatory' => true, 'value_regex' => '[^=/?:]+', ), 'data-mode' => array( 'value_regex' => 'api|static', ), 'data-origin' => array( 'value_url' => array( 'allow_empty' => true, 'allowed_protocol' => array( 'https', 'http', ), ), ), 'data-streamtype' => array( 'value_regex' => 'album|audio|live|playlist|playlist-marked|video', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-nexxtv-player', ), ), ), ), 'amp-o2-player' => array( array( 'attr_spec_list' => array( 'data-bcid' => array( 'mandatory' => true, ), 'data-pid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-o2-player', ), ), ), ), 'amp-ooyala-player' => array( array( 'attr_spec_list' => array( 'data-embedcode' => array( 'mandatory' => true, ), 'data-pcode' => array( 'mandatory' => true, ), 'data-playerid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-ooyala-player', ), ), ), ), 'amp-pinterest' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'data-do' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-pinterest', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-pinterest', ), ), ), 'amp-pixel' => array( array( 'attr_spec_list' => array( 'allow-ssr-img' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'referrerpolicy' => array( 'value' => 'no-referrer', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-pixel', ), ), ), 'amp-playbuzz' => array( array( 'attr_spec_list' => array( 'data-comments' => array( 'value_regex_casei' => '(false|true)', ), 'data-item' => array(), 'data-item-info' => array( 'value_regex_casei' => '(false|true)', ), 'data-share-buttons' => array( 'value_regex_casei' => '(false|true)', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-playbuzz', ), ), ), ), 'amp-position-observer' => array( array( 'attr_spec_list' => array( 'intersection-ratios' => array( 'value_regex' => '^([0]*?\\.\\d*$|1$|0$)|([0]*?\\.\\d*|1|0)\\s{1}([0]*?\\.\\d*$|1$|0$)', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'target' => array(), 'viewport-margins' => array( 'value_regex' => '^(\\d+$|\\d+px$|\\d+vh$)|((\\d+|\\d+px|\\d+vh)\\s{1}(\\d+$|\\d+px$|\\d+vh$))', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-position-observer', ), ), ), ), 'amp-reach-player' => array( array( 'attr_spec_list' => array( 'data-embed-id' => array( 'mandatory' => true, 'value_regex' => '[0-9a-z-]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-reach-player', ), ), ), ), 'amp-reddit' => array( array( 'attr_spec_list' => array( 'data-embedlive' => array( 'value_regex_casei' => '(false|true)', ), 'data-embedparent' => array( 'value_regex_casei' => '(false|true)', ), 'data-embedtype' => array( 'mandatory' => true, 'value_regex_casei' => '(comment|post)', ), 'data-src' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-reddit', ), ), ), ), 'amp-riddle-quiz' => array( array( 'attr_spec_list' => array( 'data-riddle-id' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-riddle-quiz', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-riddle-quiz', ), ), ), 'amp-selector' => array( array( 'attr_spec_list' => array( '[disabled]' => array(), '[selected]' => array(), 'disabled' => array( 'value' => '', ), 'form' => array(), 'keyboard-select-mode' => array( 'value_regex_casei' => 'focus|none|select', ), 'media' => array(), 'multiple' => array( 'value' => '', ), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-selector', ), 'requires_extension' => array( 'amp-selector', ), ), ), ), 'amp-sidebar' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'side' => array( 'value_regex' => '(left|right)', ), ), 'tag_spec' => array( 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-sidebar', ), ), ), ), 'amp-social-share' => array( array( 'attr_spec_list' => array( 'data-share-endpoint' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'ftp', 'http', 'https', 'mailto', 'bbmi', 'fb-messenger', 'intent', 'line', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'viber', 'whatsapp', ), ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-social-share', ), ), ), ), 'amp-soundcloud' => array( array( 'attr_spec_list' => array( 'data-color' => array( 'value_regex_casei' => '([0-9a-f]{3}){1,2}', ), 'data-playlistid' => array( 'value_regex' => '[0-9]+', ), 'data-secret-token' => array( 'value_regex' => '[A-Za-z0-9_-]+', ), 'data-trackid' => array( 'value_regex' => '[0-9]+', ), 'data-visual' => array( 'value_regex' => 'true|false', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-soundcloud', ), ), ), ), 'amp-springboard-player' => array( array( 'attr_spec_list' => array( 'data-content-id' => array( 'mandatory' => true, ), 'data-domain' => array( 'mandatory' => true, ), 'data-items' => array( 'mandatory' => true, ), 'data-mode' => array( 'mandatory' => true, 'value_regex_casei' => 'playlist|video', ), 'data-player-id' => array( 'mandatory' => true, 'value_regex_casei' => '[a-z0-9]+', ), 'data-site-id' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-springboard-player', ), ), ), ), 'amp-state' => array( array( 'attr_spec_list' => array( '[src]' => array(), 'credentials' => array(), 'id' => array( 'mandatory' => true, ), 'overridable' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-bind', ), 'spec_name' => 'amp-state', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-bind', ), ), ), 'amp-sticky-ad' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-sticky-ad', ), 'unique' => true, ), ), ), 'amp-story' => array( array( 'attr_spec_list' => array( 'background-audio' => array( 'value_url' => array( 'allowed_protocol' => array( 'http', 'https', ), ), ), 'bookend-config-src' => array( 'value_url' => array( 'allowed_protocol' => array( 'http', 'https', ), ), ), 'standalone' => array( 'mandatory' => true, 'value' => '', ), ), 'tag_spec' => array( 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-story', ), ), ), ), 'amp-story-auto-ads' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory_parent' => 'amp-story', 'requires_extension' => array( 'amp-story-auto-ads', ), 'spec_url' => 'https://github.com/ampproject/amphtml/blob/master/extensions/amp-story/amp-story-auto-ads.md', 'unique' => true, ), ), ), 'amp-story-cta-layer' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-page', ), ), ), 'amp-story-grid-layer' => array( array( 'attr_spec_list' => array( 'template' => array( 'mandatory' => true, 'value_regex' => '(fill|horizontal|vertical|thirds)', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-page', ), ), ), 'amp-story-page' => array( array( 'attr_spec_list' => array( 'auto-advance-after' => array(), 'background-audio' => array( 'value_url' => array( 'allowed_protocol' => array( 'http', 'https', ), ), ), 'id' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-story', 'requires_extension' => array( 'amp-story', ), ), ), ), 'amp-timeago' => array( array( 'attr_spec_list' => array( 'cutoff' => array( 'value_regex' => '\\d+', ), 'datetime' => array( 'mandatory' => true, 'value_regex' => '\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d(:[0-5]\\d(\\.\\d+)?)?(Z|[+-][0-1][0-9]:[0-5][0-9])', ), 'locale' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-timeago', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-timeago', ), ), ), 'amp-twitter' => array( array( 'attr_spec_list' => array( 'data-tweetid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-twitter', ), ), ), ), 'amp-user-notification' => array( array( 'attr_spec_list' => array( 'data-dismiss-href' => array( 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), 'data-show-if-href' => array( 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), 'enctype' => array( 'value' => 'application/x-www-form-urlencoded', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-user-notification', ), ), ), ), 'amp-video' => array( array( 'attr_spec_list' => array( '[album]' => array(), '[alt]' => array(), '[artist]' => array(), '[artwork]' => array(), '[attribution]' => array(), '[controls]' => array(), '[controlslist]' => array(), '[loop]' => array(), '[poster]' => array(), '[preload]' => array(), '[src]' => array(), '[title]' => array(), 'album' => array(), 'alt' => array(), 'artist' => array(), 'artwork' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => '', ), 'controls' => array( 'value' => '', ), 'controlslist' => array(), 'crossorigin' => array(), 'disableremoteplayback' => array( 'value' => '', ), 'lightbox' => array(), 'lightbox-exclude' => array( 'value' => '', ), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'placeholder' => array(), 'poster' => array(), 'preload' => array( 'value_regex' => '(none|metadata|auto|)', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'also_requires_tag_warning' => array( 'amp-video extension .js script', ), 'disallowed_ancestor' => array( 'amp-story', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-video', ), ), array( 'attr_spec_list' => array( '[album]' => array(), '[alt]' => array(), '[artist]' => array(), '[artwork]' => array(), '[attribution]' => array(), '[controls]' => array(), '[controlslist]' => array(), '[loop]' => array(), '[poster]' => array(), '[preload]' => array(), '[src]' => array(), '[title]' => array(), 'album' => array(), 'alt' => array(), 'artist' => array(), 'artwork' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => '', ), 'controls' => array( 'value' => '', ), 'controlslist' => array(), 'crossorigin' => array(), 'disableremoteplayback' => array( 'value' => '', ), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'placeholder' => array(), 'poster' => array( 'mandatory' => true, ), 'preload' => array( 'value_regex' => '(none|metadata|auto|)', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story', 'requires_extension' => array( 'amp-video', ), 'spec_name' => 'amp-story >> amp-video', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-video', ), ), ), 'amp-vimeo' => array( array( 'attr_spec_list' => array( 'data-videoid' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-vimeo', ), ), ), ), 'amp-vine' => array( array( 'attr_spec_list' => array( 'data-vineid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-vine', ), ), ), ), 'amp-vk' => array( array( 'attr_spec_list' => array( 'data-embedtype' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-vk', ), ), ), ), 'amp-web-push' => array( array( 'attr_spec_list' => array( 'helper-iframe-url' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), 'id' => array( 'mandatory' => true, 'value_regex' => 'amp-web-push', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'permission-dialog-url' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), 'service-worker-url' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-web-push', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-web-push', ), ), ), 'amp-web-push-widget' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'visibility' => array( 'mandatory' => true, 'value_regex' => '(blocked|subscribed|unsubscribed)', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-web-push', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-web-push', ), ), ), 'amp-wistia-player' => array( array( 'attr_spec_list' => array( 'data-media-hashed-id' => array( 'mandatory' => true, 'value_regex' => '[0-9a-zA-Z]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-wistia-player', ), ), ), ), 'amp-youtube' => array( array( 'attr_spec_list' => array( '[data-videoid]' => array(), 'autoplay' => array(), 'credentials' => array( 'value_regex_casei' => '(include|omit)', ), 'data-live-channelid' => array( 'value_regex' => '[^=/?:]+', ), 'data-videoid' => array( 'value_regex' => '[^=/?:]+', ), 'lightbox' => array(), 'lightbox-exclude' => array( 'value' => '', ), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-youtube', ), ), ), ), 'article' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'aside' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'audio' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'controls' => array(), 'loop' => array(), 'muted' => array(), 'preload' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'data', 'https', ), ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-audio', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-audio', ), ), ), 'b' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'base' => array( array( 'attr_spec_list' => array( 'href' => array( 'value' => '/', ), 'target' => array( 'value_regex_casei' => '(_blank|_self|_top)', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'unique' => true, ), ), ), 'bdi' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'bdo' => array( array( 'attr_spec_list' => array( 'dir' => array(), ), 'tag_spec' => array(), ), ), 'big' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'blockquote' => array( array( 'attr_spec_list' => array( 'align' => array(), 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), ), 'tag_spec' => array(), ), ), 'body' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'html', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), ), 'br' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'button' => array( array( 'attr_spec_list' => array( '[disabled]' => array(), '[type]' => array(), '[value]' => array(), 'disabled' => array( 'value' => '', ), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'open-button' => array( 'value' => '', ), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-app-banner', 'spec_name' => 'amp-app-banner button[open-button]', ), ), ), 'caption' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'center' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'circle' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'cx' => array(), 'cy' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'r' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'cite' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'clippath' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'clippathunits' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'code' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'col' => array( array( 'attr_spec_list' => array( 'span' => array(), ), 'tag_spec' => array(), ), ), 'colgroup' => array( array( 'attr_spec_list' => array( 'span' => array(), ), 'tag_spec' => array(), ), ), 'data' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'datalist' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-form', ), ), ), 'dd' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'defs' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'del' => array( array( 'attr_spec_list' => array( 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'datetime' => array(), ), 'tag_spec' => array(), ), ), 'desc' => array( array( 'attr_spec_list' => array( 'style' => array( 'blacklisted_value_regex' => '!important', ), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'dfn' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'dir' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'div' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'align' => array(), 'submitting' => array( 'dispatch_key' => 1, 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'FORM > DIV [submitting]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-success' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'FORM > DIV [submit-success]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-success' => array( 'mandatory' => true, ), 'template' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'FORM > DIV [submit-success][template]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-error' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'FORM > DIV [submit-error]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-error' => array( 'mandatory' => true, ), 'template' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'FORM > DIV [submit-error][template]', ), ), ), 'dl' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'dt' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ellipse' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'cx' => array(), 'cy' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'rx' => array(), 'ry' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'em' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'fecolormatrix' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'in' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'type' => array(), 'unicode-bidi' => array(), 'values' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'fecomposite' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'in' => array(), 'in2' => array(), 'k1' => array(), 'k2' => array(), 'k3' => array(), 'k4' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'operator' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'feflood' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'fegaussianblur' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'edgemode' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'in' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'shape-rendering' => array(), 'stddeviation' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'femerge' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'femergenode' => array( array( 'attr_spec_list' => array( 'in' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'feoffset' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'dx' => array(), 'dy' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'in' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'fieldset' => array( array( 'attr_spec_list' => array( '[disabled]' => array(), 'disabled' => array(), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), ), 'tag_spec' => array(), ), ), 'figcaption' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'figure' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'filter' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'filterres' => array(), 'filterunits' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'primitiveunits' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'footer' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'foreignobject' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'form' => array( array( 'attr_spec_list' => array( 'accept' => array(), 'accept-charset' => array(), 'action' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'action-xhr' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'autocomplete' => array(), 'custom-validation-reporting' => array( 'value_regex' => '(show-first-on-submit|show-all-on-submit|as-you-go|interact-and-submit)', ), 'enctype' => array(), 'method' => array( 'value_casei' => 'get', ), 'name' => array(), 'novalidate' => array(), 'target' => array( 'mandatory' => true, 'value_regex_casei' => '(_blank|_top)', ), 'verify-xhr' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-form', ), 'spec_name' => 'FORM [method=GET]', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accept-charset' => array(), 'action-xhr' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'autocomplete' => array(), 'custom-validation-reporting' => array( 'value_regex' => '(show-first-on-submit|show-all-on-submit|as-you-go)', ), 'enctype' => array(), 'method' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'post', ), 'name' => array(), 'novalidate' => array(), 'target' => array( 'mandatory' => true, 'value_regex_casei' => '(_blank|_top)', ), 'verify-xhr' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-form', ), 'spec_name' => 'FORM [method=POST]', ), ), ), 'g' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'glyph' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'arabic-form' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'd' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-name' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'horiz-adv-x' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'orientation' => array(), 'overflow' => array(), 'pointer-events' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'vert-adv-y' => array(), 'vert-origin-x' => array(), 'vert-origin-y' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'glyphref' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'dx' => array(), 'dy' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'format' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'glyphref' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'h1' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h2' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h3' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h4' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h5' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h6' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'head' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'html', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), ), 'header' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'hgroup' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'hkern' => array( array( 'attr_spec_list' => array( 'g1' => array(), 'g2' => array(), 'k' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'u1' => array(), 'u2' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'hr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'html' => array( array( 'attr_spec_list' => array( '\\u26a1' => array( 'alternative_names' => array( 'amp', ), 'mandatory' => true, 'value' => '', ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => '!doctype', 'spec_name' => 'html \\u26a1 for top-level html', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), ), 'i' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'iframe' => array( array( 'attr_spec_list' => array( 'frameborder' => array( 'value_regex' => '0|1', ), 'height' => array(), 'name' => array(), 'referrerpolicy' => array(), 'resizable' => array( 'value' => '', ), 'sandbox' => array(), 'scrolling' => array( 'value_regex' => 'auto|yes|no', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'allowed_protocol' => array( 'data', 'https', ), ), ), 'srcdoc' => array(), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-iframe', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-iframe', ), ), ), 'image' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'blacklisted_value_regex' => '(^|\\s)data:image\\/svg\\+xml', 'value_url' => array( 'allow_empty' => false, 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'img' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'border' => array(), 'height' => array(), 'ismap' => array(), 'longdesc' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'src' => array( 'alternative_names' => array( 'srcset', ), 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'https', ), ), ), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-img', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-img', ), ), ), 'input' => array( array( 'attr_spec_list' => array( '[accept]' => array(), '[accesskey]' => array(), '[autocomplete]' => array(), '[checked]' => array(), '[disabled]' => array(), '[height]' => array(), '[inputmode]' => array(), '[max]' => array(), '[maxlength]' => array(), '[min]' => array(), '[minlength]' => array(), '[multiple]' => array(), '[pattern]' => array(), '[placeholder]' => array(), '[readonly]' => array(), '[required]' => array(), '[selectiondirection]' => array(), '[size]' => array(), '[spellcheck]' => array(), '[step]' => array(), '[type]' => array(), '[value]' => array(), '[width]' => array(), 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'disabled' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'blacklisted_value_regex' => '(^|\\s)(button|file|image|password|)(\\s|$)', ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-form', ), ), ), 'ins' => array( array( 'attr_spec_list' => array( 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'datetime' => array(), ), 'tag_spec' => array(), ), ), 'kbd' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'label' => array( array( 'attr_spec_list' => array( 'for' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-form', ), ), ), 'legend' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'li' => array( array( 'attr_spec_list' => array( 'value' => array( 'value_regex' => '[0-9]*', ), ), 'tag_spec' => array(), ), ), 'line' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x1' => array(), 'x2' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y1' => array(), 'y2' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'lineargradient' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'gradienttransform' => array(), 'gradientunits' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'shape-rendering' => array(), 'spreadmethod' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x1' => array(), 'x2' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y1' => array(), 'y2' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'link' => array( array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array(), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'blacklisted_value_regex' => '(^|\\s)(canonical|components|import|manifest|preload|serviceworker|stylesheet|subresource|)(\\s|$)', 'mandatory' => true, ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'template', ), 'spec_name' => 'link rel=', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'canonical', ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'link rel=canonical', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'manifest', ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'link rel=manifest', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'as' => array(), 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array(), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'preload', ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'template', ), 'spec_name' => 'link rel=preload', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'async' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, 'value_regex' => 'https://cdn\\.materialdesignicons\\.com/([0-9]+\\.?)+/css/materialdesignicons\\.min\\.css|https://cloud\\.typography\\.com/[0-9]*/[0-9]*/css/fonts\\.css|https://fast\\.fonts\\.net/.*|https://fonts\\.googleapis\\.com/css\\?.*|https://fonts\\.googleapis\\.com/icon\\?.*|https://fonts\\.googleapis\\.com/earlyaccess/.*\\.css|https://maxcdn\\.bootstrapcdn\\.com/font-awesome/([0-9]+\\.?)+/css/font-awesome\\.min\\.css(\\?.*)?|https://use\\.fontawesome\\.com/releases/v([0-9]+\\.?)+/css/(all|brands|solids|fontawesome)\\.css|https://use\\.typekit\\.net/[\\w\\p{L}\\p{N}_]+\\.css', ), 'integrity' => array(), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'stylesheet', ), 'type' => array( 'value_casei' => 'text/css', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'link rel=stylesheet for fonts', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#custom-fonts', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'itemprop' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'sameas', ), 'media' => array(), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link itemprop=sameAs', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'itemprop' => array( 'mandatory' => true, ), 'media' => array(), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link itemprop=', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'media' => array(), 'property' => array( 'mandatory' => true, ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link property=', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), ), 'listing' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'main' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'mark' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'marker' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'markerheight' => array(), 'markerunits' => array(), 'markerwidth' => array(), 'mask' => array(), 'opacity' => array(), 'orient' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'refx' => array(), 'refy' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'viewbox' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'mask' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'maskcontentunits' => array(), 'maskunits' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'meta' => array( array( 'attr_spec_list' => array( 'charset' => array( 'dispatch_key' => 1, 'mandatory' => true, 'value_casei' => 'utf-8', ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'meta charset=utf-8', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_properties' => array( 'height' => array(), 'initial-scale' => array(), 'maximum-scale' => array(), 'minimum-scale' => array( 'mandatory' => true, 'value_double' => 1.0, ), 'shrink-to-fit' => array(), 'user-scalable' => array(), 'viewport-fit' => array(), 'width' => array( 'mandatory' => true, 'value' => 'device-width', ), ), ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => 'viewport', ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'meta name=viewport', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_properties' => array( 'chrome' => array( 'value' => '1', ), 'ie' => array( 'value' => 'edge', ), ), ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'x-ua-compatible', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=X-UA-Compatible', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_regex' => '.*app-id=.*', ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'apple-itunes-app', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=apple-itunes-app', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-experiments-opt-in', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-experiments-opt-in', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_url' => array( 'allowed_protocol' => array( 'https', ), ), ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-3p-iframe-src', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-3p-iframe-src', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-ad', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-experiment-token', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-experiment-token', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-link-variable-allowed-origin', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-link-variable-allowed-origin', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-google-client-id-api', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-google-clientid-id-api', ), ), array( 'attr_spec_list' => array( 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-ad-doubleclick-sra', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-ad-doubleclick-sra', ), ), array( 'attr_spec_list' => array( 'content' => array(), 'itemprop' => array(), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(amp-.*|amp4ads-.*|apple-itunes-app|content-disposition|revisit-after|viewport)(\\s|$)', ), 'property' => array(), 'scheme' => array(), ), 'tag_spec' => array( 'spec_name' => 'meta name= and content=', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => 'text/html; charset=utf-8', ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'content-type', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=Content-Type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'content-language', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=content-language', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'pics-label', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=pics-label', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'imagetoolbar', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=imagetoolbar', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => 'text/css', ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'content-style-type', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=Content-Style-Type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => 'text/javascript', ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'content-script-type', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=Content-Script-Type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'origin-trial', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=origin-trial', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'resource-type', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=resource-type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_regex_casei' => '(off|on)', ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'x-dns-prefetch-control', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=x-dns-prefetch-control', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-ad-enable-refresh', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta name=amp-ad-enable-refresh', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'amp-to-amp-navigation', ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-to-amp-navigation', 'unique' => true, ), ), ), 'metadata' => array( array( 'attr_spec_list' => array( 'style' => array( 'blacklisted_value_regex' => '!important', ), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'meter' => array( array( 'attr_spec_list' => array( 'high' => array(), 'low' => array(), 'max' => array(), 'min' => array(), 'optimum' => array(), 'value' => array(), ), 'tag_spec' => array(), ), ), 'multicol' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'nav' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'toolbar' => array( 'dispatch_key' => 1, 'mandatory' => true, ), 'toolbar-target' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-sidebar', 'spec_name' => 'amp-sidebar > nav', ), ), ), 'nextid' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'nobr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'noscript' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'noscript enclosure for boilerplate', 'spec_url' => 'https://github.com/ampproject/amphtml/blob/master/spec/amp-boilerplate.md', 'unique' => true, ), ), array( 'attr_spec_list' => array(), 'tag_spec' => array( 'disallowed_ancestor' => array( 'noscript', ), 'mandatory_ancestor' => 'body', ), ), ), 'o:p' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ol' => array( array( 'attr_spec_list' => array( 'reversed' => array( 'value' => '', ), 'start' => array( 'value_regex' => '[0-9]*', ), 'type' => array( 'value_regex' => '[1AaIi]', ), ), 'tag_spec' => array(), ), ), 'optgroup' => array( array( 'attr_spec_list' => array( '[disabled]' => array(), '[label]' => array(), 'disabled' => array(), 'label' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'select', 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-form', ), ), ), 'option' => array( array( 'attr_spec_list' => array( '[disabled]' => array(), '[label]' => array(), '[selected]' => array(), '[value]' => array(), 'disabled' => array(), 'label' => array(), 'selected' => array(), 'value' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-form', ), ), ), 'output' => array( array( 'attr_spec_list' => array( 'for' => array(), 'form' => array(), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), ), 'tag_spec' => array(), ), ), 'p' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'path' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'd' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pathlength' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'pattern' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'patterncontentunits' => array(), 'patterntransform' => array(), 'patternunits' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'viewbox' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'polygon' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'points' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'polyline' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'points' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'pre' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'progress' => array( array( 'attr_spec_list' => array( 'max' => array(), 'value' => array(), ), 'tag_spec' => array(), ), ), 'q' => array( array( 'attr_spec_list' => array( 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), ), 'tag_spec' => array(), ), ), 'radialgradient' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'cx' => array(), 'cy' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'fr' => array(), 'fx' => array(), 'fy' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'gradienttransform' => array(), 'gradientunits' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'r' => array(), 'shape-rendering' => array(), 'spreadmethod' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'rb' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rect' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'rx' => array(), 'ry' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'style' => array( 'blacklisted_value_regex' => '!important', ), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#svg', ), ), ), 'rp' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rt' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rtc' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ruby' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 's' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'samp' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'script' => array( array( 'attr_spec_list' => array( 'async' => array( 'mandatory' => true, 'value' => '', ), 'nonce' => array(), 'src' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => 'https://cdn.ampproject.org/v0.js', ), 'type' => array( 'value_casei' => 'text/javascript', ), ), 'cdata' => array( 'blacklisted_cdata_regex' => array( 'error_message' => 'contents', 'regex' => '.', ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'amphtml engine v0.js script', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'nonce' => array(), 'type' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => 'application/ld+json', ), ), 'cdata' => array( 'blacklisted_cdata_regex' => array( 'error_message' => 'html comments', 'regex' => '