{
	"cites": [
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/abbr",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/acronym",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/address",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/applet",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/area",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/article",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/aside",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/audio",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/b",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/base",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/basefont",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/bdi",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/bdo",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/bgsound",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/big",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/blink",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/blockquote",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/body",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/br",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/button",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/canvas",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/caption",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/center",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/cite",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/code",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/col",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/colgroup",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/data",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/datalist",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dd",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/del",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/details",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dfn",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dialog",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dir",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/div",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dl",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dt",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/em",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/embed",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/fieldset",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/figcaption",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/figure",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/font",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/footer",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/form",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/frame",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/frameset",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/head",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/header",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/hgroup",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/hr",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/html",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/i",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ins",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/isindex",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/kbd",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/keygen",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/label",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/legend",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/li",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/link",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/listing",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/main",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/map",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/mark",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/marquee",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/math",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/menu",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/menuitem",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meter",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/multicol",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/nav",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/nextid",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/nobr",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/noembed",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/noframes",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/noscript",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/object",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ol",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/optgroup",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/option",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/output",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/p",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/param",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/picture",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/plaintext",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/pre",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/progress",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/q",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rb",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rp",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rt",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rtc",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ruby",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/s",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/samp",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/script",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/search",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/section",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/select",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/slot",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/small",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/source",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/spacer",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/span",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/strike",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/strong",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/style",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/sub",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/summary",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/sup",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/table",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tbody",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/td",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/textarea",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tfoot",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/th",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/thead",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/time",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/title",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tr",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/track",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tt",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/u",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ul",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/var",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/video",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/wbr",
		"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/xmp",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Element",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/a",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/animate",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/animateMotion",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/animateTransform",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/circle",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/clipPath",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/defs",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/desc",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/discard",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/ellipse",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feBlend",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feColorMatrix",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feComponentTransfer",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feComposite",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feConvolveMatrix",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDiffuseLighting",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDisplacementMap",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDistantLight",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDropShadow",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFlood",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncA",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncB",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncG",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncR",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feGaussianBlur",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feImage",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feMerge",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feMergeNode",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feMorphology",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feOffset",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/fePointLight",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feSpecularLighting",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feSpotLight",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feTile",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feTurbulence",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/filter",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/foreignObject",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/g",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/image",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/line",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/linearGradient",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/marker",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/mask",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/metadata",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/mpath",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/path",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/pattern",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/polygon",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/polyline",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/radialGradient",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/rect",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/script",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/set",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/stop",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/style",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/svg",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/switch",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/symbol",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/text",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/textPath",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/title",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/tspan",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/use",
		"https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/view",
		"https://w3c.github.io/aria/",
		"https://w3c.github.io/graphics-aria/",
		"https://www.w3.org/TR/graphics-aria-1.0/",
		"https://www.w3.org/TR/html-aria/",
		"https://www.w3.org/TR/wai-aria-1.1/",
		"https://www.w3.org/TR/wai-aria-1.2/"
	],
	"def": {
		"#globalAttrs": {
			"#HTMLGlobalAttrs": {
				"accesskey": {
					"type": {
						"token": "OneCodePointChar",
						"ordered": true,
						"unique": true,
						"number": "zeroOrMore",
						"separator": "space"
					}
				},
				"autocapitalize": {
					"type": {
						"enum": ["off", "on", "none", "sentences", "words", "characters"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "sentences",
						"missingValueDefault": "default",
						"sameStates": {
							"none": ["off"],
							"sentences": ["on"]
						}
					}
				},
				"autocorrect": {
					"type": {
						"enum": ["", "on", "off"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "on",
						"missingValueDefault": "on",
						"sameStates": {
							"on": [""]
						}
					}
				},
				"autofocus": {
					"type": "Boolean"
				},
				"contenteditable": {
					"type": {
						"enum": ["", "true", "false", "plaintext-only"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "inherit",
						"missingValueDefault": "inherit",
						"sameStates": {
							"true": [""]
						}
					}
				},
				"dir": {
					"type": {
						"enum": ["ltr", "rtl", "auto"]
					}
				},
				"draggable": {
					"type": {
						"enum": ["true", "false"],
						"invalidValueDefault": "auto",
						"missingValueDefault": "auto"
					}
				},
				"enterkeyhint": {
					"type": {
						"enum": ["enter", "done", "go", "next", "previous", "search", "send"]
					}
				},
				"headingoffset": {
					"type": {
						"type": "integer",
						"gte": 0,
						"lte": 8
					}
				},
				"headingreset": {
					"type": "Boolean"
				},
				"hidden": {
					"type": {
						"enum": ["", "hidden", "until-found"]
					}
				},
				"inert": {
					"type": "Boolean"
				},
				"inputmode": {
					"type": {
						"enum": ["none", "text", "tel", "url", "email", "numeric", "decimal", "search"]
					}
				},
				"is": {
					"type": "CustomElementName"
				},
				"itemid": {
					"type": "URL"
				},
				"itemprop": {
					"type": {
						"token": "ItemProp",
						"ordered": false,
						"unique": true,
						"separator": "space"
					}
				},
				"itemref": {
					"type": {
						"token": "DOMID",
						"separator": "space"
					},
					"condition": "[itemscope]"
				},
				"itemscope": {
					"type": "Boolean"
				},
				"itemtype": {
					"type": {
						"token": "AbsoluteURL",
						"ordered": false,
						"unique": true,
						"separator": "space"
					}
				},
				"lang": {
					"type": "BCP47"
				},
				"nonce": {
					"type": "Any"
				},
				"popover": {
					"type": {
						"enum": ["", "auto", "manual", "hint"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "manual",
						"missingValueDefault": "no popover",
						"sameStates": {
							"auto": [""]
						}
					}
				},
				"spellcheck": {
					"type": {
						"enum": ["", "true", "false"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "default",
						"missingValueDefault": "default",
						"sameStates": {
							"true": [""]
						}
					}
				},
				"style": {
					"type": "<css-declaration-list>"
				},
				"tabindex": {
					"type": "TabIndex"
				},
				"title": {
					"type": "Any"
				},
				"translate": {
					"type": {
						"enum": ["", "yes", "no"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "inherit",
						"missingValueDefault": "inherit",
						"sameStates": {
							"yes": [""]
						}
					}
				},
				"writingsuggestions": {
					"type": {
						"enum": ["", "true", "false"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "default",
						"missingValueDefault": "default",
						"sameStates": {
							"true": [""]
						}
					}
				},
				"class": {
					"type": "Any"
				},
				"id": {
					"type": "DOMID"
				},
				"slot": {
					"type": "NoEmptyAny"
				},
				"xmlns": {
					"type": "URL",
					"ineffective": "*"
				},
				"xml:lang": {
					"type": "BCP47",
					"deprecated": true
				},
				"xml:space": {
					"type": {
						"enum": ["default", "preserve"]
					},
					"defaultValue": "default",
					"deprecated": true
				},
				"elementtiming": {
					"type": "NoEmptyAny",
					"experimental": true
				}
			},
			"#GlobalEventAttrs": {
				"onabort": {
					"type": "FunctionBody"
				},
				"onauxclick": {
					"type": "FunctionBody"
				},
				"onbeforeinput": {
					"type": "FunctionBody"
				},
				"onbeforematch": {
					"type": "FunctionBody"
				},
				"onbeforetoggle": {
					"type": "FunctionBody"
				},
				"onblur": {
					"type": "FunctionBody"
				},
				"oncancel": {
					"type": "FunctionBody"
				},
				"oncanplay": {
					"type": "FunctionBody"
				},
				"oncanplaythrough": {
					"type": "FunctionBody"
				},
				"onchange": {
					"type": "FunctionBody"
				},
				"onclick": {
					"type": "FunctionBody"
				},
				"onclose": {
					"type": "FunctionBody"
				},
				"oncommand": {
					"type": "FunctionBody"
				},
				"oncontextlost": {
					"type": "FunctionBody"
				},
				"oncompositionstart": {
					"type": "FunctionBody"
				},
				"oncompositionupdate": {
					"type": "FunctionBody"
				},
				"oncompositionend": {
					"type": "FunctionBody"
				},
				"oncontextmenu": {
					"type": "FunctionBody"
				},
				"oncontextrestored": {
					"type": "FunctionBody"
				},
				"oncopy": {
					"type": "FunctionBody"
				},
				"oncuechange": {
					"type": "FunctionBody"
				},
				"oncut": {
					"type": "FunctionBody"
				},
				"ondblclick": {
					"type": "FunctionBody"
				},
				"ondrag": {
					"type": "FunctionBody"
				},
				"ondragend": {
					"type": "FunctionBody"
				},
				"ondragenter": {
					"type": "FunctionBody"
				},
				"ondragleave": {
					"type": "FunctionBody"
				},
				"ondragover": {
					"type": "FunctionBody"
				},
				"ondragstart": {
					"type": "FunctionBody"
				},
				"ondrop": {
					"type": "FunctionBody"
				},
				"ondurationchange": {
					"type": "FunctionBody"
				},
				"onemptied": {
					"type": "FunctionBody"
				},
				"onended": {
					"type": "FunctionBody"
				},
				"onerror": {
					"type": "FunctionBody"
				},
				"onfocus": {
					"type": "FunctionBody"
				},
				"onformdata": {
					"type": "FunctionBody"
				},
				"onfocusin": {
					"type": "FunctionBody"
				},
				"onfocusout": {
					"type": "FunctionBody"
				},
				"oninput": {
					"type": "FunctionBody"
				},
				"oninvalid": {
					"type": "FunctionBody"
				},
				"onkeydown": {
					"type": "FunctionBody"
				},
				"onkeypress": {
					"type": "FunctionBody"
				},
				"onkeyup": {
					"type": "FunctionBody"
				},
				"onload": {
					"type": "FunctionBody"
				},
				"onloadeddata": {
					"type": "FunctionBody"
				},
				"onloadedmetadata": {
					"type": "FunctionBody"
				},
				"onloadstart": {
					"type": "FunctionBody"
				},
				"onmousedown": {
					"type": "FunctionBody"
				},
				"onmouseenter": {
					"type": "FunctionBody"
				},
				"onmouseleave": {
					"type": "FunctionBody"
				},
				"onmousemove": {
					"type": "FunctionBody"
				},
				"onmouseout": {
					"type": "FunctionBody"
				},
				"onmouseover": {
					"type": "FunctionBody"
				},
				"onmouseup": {
					"type": "FunctionBody"
				},
				"onpaste": {
					"type": "FunctionBody"
				},
				"onpause": {
					"type": "FunctionBody"
				},
				"onplay": {
					"type": "FunctionBody"
				},
				"onplaying": {
					"type": "FunctionBody"
				},
				"onprogress": {
					"type": "FunctionBody"
				},
				"onratechange": {
					"type": "FunctionBody"
				},
				"onreset": {
					"type": "FunctionBody"
				},
				"onresize": {
					"type": "FunctionBody"
				},
				"onscroll": {
					"type": "FunctionBody"
				},
				"onscrollend": {
					"type": "FunctionBody"
				},
				"onsecuritypolicyviolation": {
					"type": "FunctionBody"
				},
				"onseeked": {
					"type": "FunctionBody"
				},
				"onseeking": {
					"type": "FunctionBody"
				},
				"onselect": {
					"type": "FunctionBody"
				},
				"onslotchange": {
					"type": "FunctionBody"
				},
				"onstalled": {
					"type": "FunctionBody"
				},
				"onsubmit": {
					"type": "FunctionBody"
				},
				"onsuspend": {
					"type": "FunctionBody"
				},
				"ontimeupdate": {
					"type": "FunctionBody"
				},
				"ontoggle": {
					"type": "FunctionBody"
				},
				"onvolumechange": {
					"type": "FunctionBody"
				},
				"onwaiting": {
					"type": "FunctionBody"
				},
				"onunload": {
					"type": "FunctionBody"
				},
				"onwheel": {
					"type": "FunctionBody"
				},
				"onanimationstart": {
					"type": "FunctionBody"
				},
				"onanimationiteration": {
					"type": "FunctionBody"
				},
				"onanimationend": {
					"type": "FunctionBody"
				},
				"onanimationcancel": {
					"type": "FunctionBody"
				},
				"ontransitionrun": {
					"type": "FunctionBody"
				},
				"ontransitionstart": {
					"type": "FunctionBody"
				},
				"ontransitionend": {
					"type": "FunctionBody"
				},
				"ontransitioncancel": {
					"type": "FunctionBody"
				},
				"onwebkitanimationend": {
					"type": "FunctionBody",
					"deprecated": true
				},
				"onwebkitanimationiteration": {
					"type": "FunctionBody",
					"deprecated": true
				},
				"onwebkitanimationstart": {
					"type": "FunctionBody",
					"deprecated": true
				},
				"onwebkittransitionend": {
					"type": "FunctionBody",
					"deprecated": true
				}
			},
			"#HTMLLinkAndFetchingAttrs": {
				"href": {
					"type": "URL"
				},
				"target": {
					"type": "NavigableTargetNameOrKeyword",
					"condition": "[href]"
				},
				"download": {
					"type": "Any",
					"condition": "[href]"
				},
				"ping": {
					"type": {
						"token": "HTTPSchemaURL",
						"separator": "space"
					},
					"condition": "[href]"
				},
				"rel": {
					"type": "LinkTypeForAnchorAndAreaElement",
					"condition": "[href]"
				},
				"hreflang": {
					"type": "BCP47",
					"condition": "[href]"
				},
				"type": {
					"type": "MIMEType",
					"condition": "[href]"
				},
				"referrerpolicy": {
					"type": {
						"enum": [
							"",
							"no-referrer",
							"no-referrer-when-downgrade",
							"same-origin",
							"origin",
							"strict-origin",
							"origin-when-cross-origin",
							"strict-origin-when-cross-origin",
							"unsafe-url"
						]
					},
					"condition": "[href], [src]",
					"defaultValue": "strict-origin-when-cross-origin"
				},
				"loading": {
					"type": {
						"enum": ["lazy", "eager"],
						"invalidValueDefault": "eager",
						"missingValueDefault": "eager"
					}
				},
				"integrity": {
					"type": "Any"
				},
				"media": {
					"type": "<media-query-list>"
				},
				"crossorigin": {
					"type": {
						"enum": ["", "anonymous", "use-credentials"],
						"invalidValueDefault": "anonymous",
						"missingValueDefault": "No CORS",
						"sameStates": {
							"anonymous": [""]
						}
					}
				},
				"fetchpriority": {
					"type": {
						"enum": ["high", "low", "auto"],
						"invalidValueDefault": "auto",
						"missingValueDefault": "auto"
					}
				}
			},
			"#HTMLEmbededAndMediaContentAttrs": {
				"src": {
					"type": "URL"
				},
				"preload": {
					"type": {
						"enum": ["none", "metadata", "auto"],
						"invalidValueDefault": "implementation-defined",
						"missingValueDefault": "implementation-defined"
					}
				},
				"autoplay": {
					"type": "Boolean"
				},
				"loop": {
					"type": "Boolean"
				},
				"muted": {
					"type": "Boolean"
				},
				"controls": {
					"type": "Boolean"
				},
				"height": {
					"type": "Uint"
				},
				"srcset": {
					"type": "Srcset"
				},
				"sizes": {
					"type": "SourceSizeList"
				},
				"width": {
					"type": "Uint"
				}
			},
			"#HTMLFormControlElementAttrs": {
				"autocomplete": {
					"type": "AutoComplete"
				},
				"dirname": {
					"type": "NoEmptyAny"
				},
				"disabled": {
					"type": "Boolean"
				},
				"form": {
					"type": "DOMID"
				},
				"formaction": {
					"type": "URL"
				},
				"formenctype": {
					"type": {
						"enum": ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"],
						"invalidValueDefault": "application/x-www-form-urlencoded"
					}
				},
				"formmethod": {
					"type": {
						"enum": ["post", "get", "dialog"],
						"invalidValueDefault": "get"
					}
				},
				"formnovalidate": {
					"type": "Boolean"
				},
				"formtarget": {
					"type": "NavigableTargetNameOrKeyword"
				},
				"name": {
					"type": "NoEmptyAny"
				},
				"maxlength": {
					"type": "Uint"
				},
				"minlength": {
					"type": "Uint"
				},
				"readonly": {
					"type": "Boolean"
				},
				"required": {
					"type": "Boolean"
				}
			},
			"#HTMLTableCellElementAttrs": {
				"colspan": {
					"type": {
						"type": "integer",
						"gt": 0,
						"lte": 1000
					}
				},
				"rowspan": {
					"type": {
						"type": "integer",
						"gt": 0,
						"lte": 65534
					}
				},
				"headers": {
					"type": {
						"token": "DOMID",
						"ordered": false,
						"unique": true,
						"separator": "space"
					}
				}
			},
			"#ARIAAttrs": {
				"role": {
					"type": {
						"token": "NoEmptyAny",
						"separator": "space"
					}
				}
			},
			"#SVGAnimationAdditionAttrs": {
				"additive": {
					"type": {
						"enum": ["replace", "sum"]
					},
					"defaultValue": "replace"
				},
				"accumulate": {
					"type": {
						"enum": ["none", "sum"]
					},
					"defaultValue": "none"
				}
			},
			"#SVGAnimationAttributeTargetAttrs": {
				"attributeName": {
					"type": "XMLName"
				},
				"attributeType": {
					"type": {
						"enum": ["CSS", "XML", "auto"]
					},
					"defaultValue": "auto",
					"noUse": true
				}
			},
			"#SVGAnimationEventAttrs": {
				"onbegin": {
					"type": "FunctionBody"
				},
				"onend": {
					"type": "FunctionBody"
				},
				"onrepeat": {
					"type": "FunctionBody"
				}
			},
			"#SVGAnimationTargetElementAttrs": {
				"href": {
					"type": "URL"
				},
				"xlink:href": {
					"type": "URL",
					"deprecated": true
				}
			},
			"#SVGAnimationTimingAttrs": {
				"begin": {
					"type": "<begin-value-list>",
					"defaultValue": "0s"
				},
				"dur": {
					"type": [
						"<clock-value>",
						{
							"enum": ["media", "indefinite"]
						}
					],
					"defaultValue": "indefinite"
				},
				"end": {
					"type": "<end-value-list>"
				},
				"min": {
					"type": "<clock-value>",
					"defaultValue": "0s"
				},
				"max": {
					"type": "<clock-value>"
				},
				"restart": {
					"type": {
						"enum": ["always", "whenNotActive", "never"]
					},
					"defaultValue": "always"
				},
				"repeatCount": {
					"type": [
						"<number>",
						{
							"enum": ["indefinite"]
						}
					]
				},
				"repeatDur": {
					"type": [
						"<clock-value>",
						{
							"enum": ["indefinite"]
						}
					]
				},
				"fill": {
					"type": {
						"enum": ["freeze", "remove"]
					},
					"defaultValue": "remove"
				}
			},
			"#SVGAnimationValueAttrs": {
				"calcMode": {
					"type": {
						"enum": ["discrete", "linear", "paced", "spline"]
					},
					"defaultValue": "linear"
				},
				"values": {
					"type": "<list-of-value>"
				},
				"keyTimes": {
					"type": "<key-times>"
				},
				"keySplines": {
					"type": "<key-splines>"
				},
				"from": {
					"type": "<animatable-value>"
				},
				"to": {
					"type": "<animatable-value>"
				},
				"by": {
					"type": "<animatable-value>"
				},
				"accelerate": {
					"type": "<number-zero-one>",
					"defaultValue": "0"
				},
				"decelerate": {
					"type": "<number-zero-one>",
					"defaultValue": "0"
				},
				"autoReverse": {
					"type": {
						"enum": ["true", "false"]
					},
					"defaultValue": "false"
				},
				"speed": {
					"type": "<number>"
				}
			},
			"#SVGConditionalProcessingAttrs": {
				"requiredExtensions": {
					"type": {
						"token": "URL",
						"unique": true,
						"separator": "space"
					}
				},
				"systemLanguage": {
					"type": {
						"token": "BCP47",
						"unique": true,
						"separator": "comma"
					}
				},
				"requiredFeatures": {
					"type": "<list-of-svg-feature-string>",
					"deprecated": true
				}
			},
			"#SVGCoreAttrs": {
				"id": {
					"type": "DOMID"
				},
				"tabindex": {
					"type": "TabIndex"
				},
				"autofocus": {
					"type": "Boolean"
				},
				"lang": {
					"type": "BCP47"
				},
				"class": {
					"type": "Any"
				},
				"style": {
					"type": "<css-declaration-list>"
				},
				"xmlns": {
					"type": "URL",
					"ineffective": ":not(:root)"
				},
				"xml:space": {
					"type": {
						"enum": ["default", "preserve"]
					},
					"defaultValue": "default",
					"deprecated": true
				},
				"xml:lang": {
					"type": "BCP47",
					"deprecated": true
				},
				"xml:base": {
					"type": "URL",
					"deprecated": true
				}
			},
			"#SVGFilterPrimitiveAttrs": {
				"x": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0%",
					"animatable": true
				},
				"y": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0%",
					"animatable": true
				},
				"width": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "100%",
					"animatable": true
				},
				"height": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "100%",
					"animatable": true
				},
				"result": {
					"type": "<custom-ident>"
				},
				"in": {
					"type": [
						{
							"enum": [
								"SourceGraphic",
								"SourceAlpha",
								"BackgroundImage",
								"BackgroundAlpha",
								"FillPaint",
								"StrokePaint"
							],
							"disallowToSurroundBySpaces": false
						},
						"<custom-ident>"
					],
					"animatable": true
				}
			},
			"#SVGPresentationAttrs": {
				"cx": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0",
					"animatable": true
				},
				"cy": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0",
					"animatable": true
				},
				"height": {
					"type": ["<svg-length>", "<'height'>"],
					"defaultValue": "auto",
					"animatable": true
				},
				"width": {
					"type": ["<svg-length>", "<'width'>"],
					"defaultValue": "auto",
					"animatable": true
				},
				"x": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0",
					"animatable": true
				},
				"y": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0",
					"animatable": true
				},
				"r": {
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0",
					"animatable": true
				},
				"rx": {
					"type": [
						"<svg-length>",
						"<percentage>",
						{
							"enum": ["auto"]
						}
					],
					"defaultValue": "auto",
					"animatable": true
				},
				"ry": {
					"type": [
						"<svg-length>",
						"<percentage>",
						{
							"enum": ["auto"]
						}
					],
					"defaultValue": "auto",
					"animatable": true
				},
				"d": {
					"type": "<svg-path>",
					"defaultValue": "none"
				},
				"transform": {
					"type": "<'transform'>",
					"defaultValue": "none",
					"animatable": true
				},
				"transform-origin": {
					"type": "<'transform-origin'>",
					"defaultValue": "50%, 50%",
					"animatable": true
				},
				"patternTransform": {
					"type": "<transform-list>",
					"animatable": true
				},
				"gradientTransform": {
					"type": "<transform-list>",
					"animatable": true
				},
				"alignment-baseline": {
					"type": "<'alignment-baseline'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"baseline-shift": {
					"type": "<'baseline-shift'>",
					"defaultValue": "0",
					"animatable": true
				},
				"clip-path": {
					"type": "<'clip-path'>",
					"defaultValue": "none",
					"animatable": true
				},
				"clip-rule": {
					"type": "<'clip-rule'>",
					"defaultValue": "nonzero",
					"animatable": true
				},
				"color": {
					"type": "<color>",
					"animatable": true
				},
				"color-interpolation": {
					"type": {
						"enum": ["auto", "sRGB", "linearRGB"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "sRGB",
					"animatable": true
				},
				"color-interpolation-filters": {
					"type": {
						"enum": ["auto", "sRGB", "linearRGB"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "linearRGB",
					"animatable": true
				},
				"cursor": {
					"type": "<'cursor'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"direction": {
					"type": "<'direction'>",
					"defaultValue": "ltr"
				},
				"display": {
					"type": "<'display'>",
					"defaultValue": "inline"
				},
				"dominant-baseline": {
					"type": "<'dominant-baseline'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"fill": {
					"type": "<'fill'>",
					"defaultValue": "black",
					"animatable": true
				},
				"fill-opacity": {
					"type": "<'fill-opacity'>",
					"defaultValue": "1",
					"animatable": true
				},
				"fill-rule": {
					"type": "<'fill-rule'>",
					"defaultValue": "nonzero",
					"animatable": true
				},
				"filter": {
					"type": "<'filter'>",
					"defaultValue": "none",
					"animatable": true
				},
				"flood-color": {
					"type": "<color>",
					"defaultValue": "black",
					"animatable": true
				},
				"flood-opacity": {
					"type": "<alpha-value>",
					"defaultValue": "1",
					"animatable": true
				},
				"font": {
					"type": "<'font'>",
					"animatable": true
				},
				"font-family": {
					"type": "<'font-family'>",
					"animatable": true
				},
				"font-size": {
					"type": "<svg-font-size>",
					"defaultValue": "medium",
					"animatable": true
				},
				"font-size-adjust": {
					"type": "<svg-font-size-adjust>",
					"defaultValue": "none",
					"animatable": true
				},
				"font-stretch": {
					"type": "<'font-stretch'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"font-style": {
					"type": "<'font-style'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"font-variant": {
					"type": "<'font-variant'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"font-weight": {
					"type": "<'font-weight'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"glyph-orientation-horizontal": {
					"type": "<'glyph-orientation-horizontal'>",
					"defaultValue": "0deg",
					"deprecated": true
				},
				"glyph-orientation-vertical": {
					"type": "<'glyph-orientation-vertical'>",
					"deprecated": true
				},
				"image-rendering": {
					"type": "<'image-rendering'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"isolation": {
					"type": "<'isolation'>",
					"defaultValue": "auto"
				},
				"letter-spacing": {
					"type": "<'letter-spacing'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"lighting-color": {
					"type": "<color>",
					"defaultValue": "white",
					"animatable": true
				},
				"marker": {
					"type": "<'marker'>",
					"animatable": true
				},
				"marker-end": {
					"type": "<'marker-end'>",
					"defaultValue": "none",
					"animatable": true
				},
				"marker-mid": {
					"type": "<'marker-mid'>",
					"defaultValue": "none",
					"animatable": true
				},
				"marker-start": {
					"type": "<'marker-start'>",
					"defaultValue": "none",
					"animatable": true
				},
				"mask": {
					"type": "<'mask'>",
					"animatable": true
				},
				"mask-type": {
					"type": "<'mask-type'>",
					"animatable": true
				},
				"opacity": {
					"type": "<alpha-value>",
					"defaultValue": "1",
					"animatable": true
				},
				"overflow": {
					"type": "<'overflow'>",
					"defaultValue": "visible",
					"animatable": true
				},
				"paint-order": {
					"type": "<'paint-order'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"pointer-events": {
					"type": "<'pointer-events'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"shape-rendering": {
					"type": "<'shape-rendering'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"stop-color": {
					"type": "<'color'>",
					"defaultValue": "black",
					"animatable": true
				},
				"stop-opacity": {
					"type": "<'opacity'>",
					"defaultValue": "1",
					"animatable": true
				},
				"stroke": {
					"type": "<'stroke'>",
					"defaultValue": "none",
					"animatable": true
				},
				"stroke-dasharray": {
					"type": "<'stroke-dasharray'>",
					"defaultValue": "none",
					"animatable": true
				},
				"stroke-dashoffset": {
					"type": "<'stroke-dashoffset'>",
					"defaultValue": "0",
					"animatable": true
				},
				"stroke-linecap": {
					"type": "<'stroke-linecap'>",
					"defaultValue": "butt",
					"animatable": true
				},
				"stroke-linejoin": {
					"type": "<'stroke-linejoin'>",
					"defaultValue": "miter",
					"animatable": true
				},
				"stroke-miterlimit": {
					"type": "<'stroke-miterlimit'>",
					"defaultValue": "4",
					"animatable": true
				},
				"stroke-opacity": {
					"type": "<'stroke-opacity'>",
					"defaultValue": "1",
					"animatable": true
				},
				"stroke-width": {
					"type": "<'stroke-width'>",
					"defaultValue": "1px",
					"animatable": true
				},
				"text-anchor": {
					"type": "<'text-anchor'>",
					"defaultValue": "start",
					"animatable": true
				},
				"text-decoration": {
					"type": "<'text-decoration'>",
					"animatable": true
				},
				"text-overflow": {
					"type": "<'text-overflow'>",
					"animatable": true
				},
				"text-rendering": {
					"type": "<'text-rendering'>",
					"defaultValue": "auto",
					"animatable": true
				},
				"unicode-bidi": {
					"type": "<'unicode-bidi'>",
					"defaultValue": "normal"
				},
				"vector-effect": {
					"type": {
						"enum": ["none", "non-scaling-stroke", "non-scaling-size", "non-rotation", "fixed-position"]
					},
					"defaultValue": "none",
					"animatable": true
				},
				"visibility": {
					"type": "<'visibility'>",
					"defaultValue": "visible",
					"animatable": true
				},
				"white-space": {
					"type": "<'white-space'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"word-spacing": {
					"type": "<'word-spacing'>",
					"defaultValue": "normal",
					"animatable": true
				},
				"writing-mode": {
					"type": "<'writing-mode'>",
					"defaultValue": "horizontal-tb"
				},
				"clip": {
					"type": "<'clip'>",
					"defaultValue": "auto",
					"animatable": true,
					"deprecated": true
				},
				"color-profile": {
					"type": "<'color-profile'>",
					"defaultValue": "auto",
					"animatable": true,
					"deprecated": true
				},
				"color-rendering": {
					"type": "<'color-rendering'>",
					"defaultValue": "auto",
					"animatable": true,
					"deprecated": true
				},
				"enable-background": {
					"type": "<'enable-background'>",
					"defaultValue": "accumulate",
					"deprecated": true
				},
				"kerning": {
					"type": "<'kerning'>",
					"defaultValue": "auto",
					"animatable": true,
					"deprecated": true
				}
			},
			"#SVGTransferFunctionAttrs": {
				"type": {
					"type": {
						"enum": ["identity", "table", "discrete", "linear", "gamma"]
					},
					"defaultValue": "identity",
					"animatable": true
				},
				"tableValues": {
					"type": "<list-of-numbers>",
					"animatable": true
				},
				"slope": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"intercept": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"amplitude": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"exponent": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"offset": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				}
			},
			"#XLinkAttrs": {
				"xlink:href": {
					"type": "URL",
					"deprecated": true
				},
				"xlink:title": {
					"type": "Any",
					"deprecated": true
				},
				"xlink:type": {
					"type": {
						"enum": ["simple"]
					},
					"defaultValue": "simple",
					"deprecated": true
				},
				"xlink:role": {
					"type": "Any",
					"deprecated": true
				},
				"xlink:arcrole": {
					"type": "URL",
					"deprecated": true
				},
				"xlink:show": {
					"type": {
						"enum": ["new", "replace", "embed", "other", "none"]
					},
					"defaultValue": "replace",
					"deprecated": true
				},
				"xlink:actuate": {
					"type": "Any",
					"deprecated": true
				}
			}
		},
		"#aria": {
			"1.3": {
				"roles": [
					{
						"name": "alert",
						"description": "A type of live region with important, and usually time-sensitive, information. See related alertdialog and status.\n\nAlerts are used to convey messages that will be immediately important to users. In the case of audio warnings, visibly displayed alerts provide an accessible alternative to audible alerts for Deaf or hard-of-hearing users. Likewise, alerts can provide an accessible alternative to the visible alerts for blind, deaf-blind, or low-vision users, and others with certain developmental disabilities. The alert role is applied to the element containing the alert message.\n\nAlert is a special type of assertive live region that is intended to cause immediate notification for assistive technology users. If the operating system allows, the user agent SHOULD fire a system alert event through the accessibility API when the alert is rendered.\n\nNeither authors nor user agents are required to set or manage focus to an alert in order for it to be processed. Since alerts are not required to receive focus, authors SHOULD NOT require users to close an alert. If an author desires focus to move to a message when it is conveyed, the author SHOULD use alertdialog instead of alert.\n\nElements with the role alert have an implicit aria-live value of assertive, and an implicit aria-atomic value of true.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "alertdialog",
						"description": "A type of dialog that contains an alert message, where initial focus goes to an element within the dialog. See related alert and dialog.\n\nAlert dialogs are used to convey messages to alert the user. The alertdialog role goes on the node containing both the alert message and the rest of the dialog. Authors SHOULD make alert dialogs modal by ensuring that, while the alertdialog is shown, keyboard and mouse interactions only operate within the dialog. See aria-modal.\n\nAlertdialog is a special type of dialog that is intended to cause an immediate, alert-level notification for assistive technology users. If the operating system allows, the user agent SHOULD fire a system alert event through the accessibility API when the alert dialog is rendered.\n\nUnlike alert, alertdialog can receive a response from the user. For example, to confirm that the user understands the alert being generated. When the alert dialog is displayed, authors SHOULD set focus to an active element within the alert dialog, such as a form control or confirmation button. The user agent SHOULD fire a system alert event through the accessibility API when the alert is created, provided one is specified by the intended accessibility API.\n\nAuthors SHOULD provide an accessible name for an alertdialog, which can be done with the aria-label or aria-labelledby attribute.\n\nAuthors SHOULD use aria-describedby on an alertdialog to reference the alert message element in the dialog. If they do not, an assistive technology can resort to its internal recovery mechanism to determine the contents of the alert message.",
						"generalization": ["alert", "dialog"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "application",
						"description": "A structure containing one or more focusable elements requiring user input, such as keyboard or gesture events, that do not follow a standard interaction pattern supported by a widget role.\n\nSome user agents and assistive technologies have a browse mode where standard input events, such as up and down arrow key events, are intercepted and used to control a reading cursor. This browse mode behavior prevents elements that do not have a widget role from receiving and using such keyboard and gesture events to provide interactive functionality.\n\nWhen there is a need to create an element with an interaction model that is not supported by any of the WAI-ARIA widget roles, authors MAY give that element role application. And, when a user navigates into an element with role application, assistive technologies that intercept standard input events SHOULD switch to a mode that passes most or all standard input events through to the web application.\n\nFor example, a presentation slide editor uses arrow keys to change the positions of textbox and image elements on the slide. There are not any WAI-ARIA widget roles that correspond to such an interaction model so an author could give the slide container role application, an aria-roledescription of \"Slide Editor\", and use aria-describedby to provide instructions.\n\nBecause only the focusable elements contained in an application element are accessible to users of some assistive technologies, authors MUST use one of the following techniques to ensure all non-decorative static text or image content inside an application is accessible:",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "article",
						"description": "A section of a page that consists of a composition that forms an independent part of a document, page, or site.\n\nAn article is not a navigational landmark, but can be nested to form a discussion where assistive technologies could pay attention to article nesting to assist the user in following the discussion. An article could be a forum post, a magazine or newspaper article, a web log entry, a user-submitted comment, or any other independent item of content. It is independent in that its contents could stand alone, for example in syndication. However, the element is still associated with its ancestors; for instance, contact information that applies to a parent body element still covers the article as well. When nesting articles, the child articles represent content that is related to the content of the parent article. For instance, a web log entry on a site that accepts user-submitted comments could represent the comments as articles nested within the article for the web log entry. Author, heading, date, or other information associated with an article does not apply to nested articles.\n\nWhen the user navigates to an element assigned the role of article, assistive technologies that typically intercept standard keyboard events SHOULD switch to document browsing mode, as opposed to passing keyboard events through to the web application. Some assistive technologies provide a feature allowing the user to navigate the hierarchy of any nested article elements.\n\nWhen an article is in the context of a feed, the author MAY specify values for aria-posinset and aria-setsize.",
						"generalization": ["document"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "banner",
						"description": "A landmark that contains mostly site-oriented content, rather than page-specific content.\n\nSite-oriented content typically includes things such as the logo or identity of the site sponsor, and a site-specific search tool. A banner usually appears at the top of the page and typically spans the full width.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role banner. user agents SHOULD treat elements with role banner as navigational landmarks. user agents MAY enable users to quickly navigate to elements with role banner.\n\nThe author SHOULD mark no more than one element on a page with the banner role.\n\nBecause document and application elements can be nested in the DOM, they can have multiple banner elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "blockquote",
						"description": "A section of content that is quoted from another source.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "button",
						"description": "An input that allows for user-triggered actions when clicked or pressed. See related link.\n\nButtons are mostly used for discrete actions. Standardizing the appearance of buttons enhances the user's recognition of the widgets as buttons and allows for a more compact display in toolbars.\n\nButtons support the optional attribute aria-pressed. Buttons with a non-empty aria-pressed attribute are toggle buttons. When aria-pressed is true the button is in a \"pressed\" state, when aria-pressed is false it is not pressed. If the attribute is not present, the button is a simple command button.",
						"generalization": ["command"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-pressed"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "caption",
						"description": "Visible content that names, or describes a figure, grid, group, radiogroup, table or treegrid.\n\nWhen using caption authors SHOULD ensure:\n\nIf the caption represents an accessible name for its containing element, authors SHOULD specify aria-labelledby on the containing element to reference the element with role caption.\n\nIf a caption contains content that serves as both a name and description for its containing element, authors MAY instead specify aria-labelledby to reference an element within the caption that represents the \"name\" of the containing element, and specify aria-describedby to reference an element within the caption that represents the descriptive content.\n\nIf the caption represents a long-form description, or if the description contains semantic elements which are important in understanding the description, authors MAY instead specify aria-labelledby to reference an element within the caption that represents the \"name\" of the containing element, and specify aria-details to reference an element within the caption that represents the descriptive content.\n\nIf a caption contains only a description, without a suitable text string to serve as the accessible name for its containing element, then aria-label or aria-labelledby MAY be used to provide an accessible name, and the caption MAY be treated solely as descriptive content, referenced via aria-details.",
						"generalization": ["section"],
						"requiredContextRole": ["figure", "grid", "group", "radiogroup", "table", "treegrid"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "cell",
						"description": "A cell in a tabular container. See related gridcell.\n\nAuthors MUST ensure elements with role cell are the accessibility children of an element with the role row.",
						"generalization": ["section"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex"
							},
							{
								"name": "aria-colindextext"
							},
							{
								"name": "aria-colspan"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex"
							},
							{
								"name": "aria-rowindextext"
							},
							{
								"name": "aria-rowspan"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "checkbox",
						"description": "A checkable input that has three possible values: true, false, or mixed.\n\nThe aria-checked attribute of a checkbox indicates whether the input is checked (true), unchecked (false), or represents a group of elements that have a mixture of checked and unchecked values (mixed). Many checkboxes do not use the mixed value, and thus are effectively boolean checkboxes.\n\nDue to the strong native semantics of HTML's native checkbox, authors are advised against using aria-checked on an input type=checkbox. Rather, use the native checked attribute or the indeterminate IDL attribute to specify the checkbox's \"checked\" or \"mixed\" state, respectively.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "code",
						"description": "A section whose content represents a fragment of computer code.\n\nThe primary purpose of the code role is to inform assistive technologies that the content is computer code and thus might require special presentation, in particular with respect to synthesized speech. More specifically, screen readers and other tools which provide text-to-speech presentation of content SHOULD prefer full punctuation verbosity to ensure common symbols (e.g., \"-\") are spoken.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "columnheader",
						"description": "A cell containing header information for a column.\n\ncolumnheader can be used as a column header in a table or grid. It could also be used in a pie chart to show a similar relationship in the data.\n\nThe columnheader establishes a relationship between it and all cells in the corresponding column. It is the structural equivalent to an HTML th element with a column scope.\n\nAuthors MUST ensure elements with role columnheader are the accessibility children of an element with the role row.\n\nApplying the aria-selected state on a columnheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding column. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the columnheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a columnheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the columnheader descends from a grid.\n\nBecause cells are organized into rows, there is not a single container element for the column. The column is the set of gridcell elements in a particular position within their respective row containers.\n\nWhile aria-disabled is currently supported on columnheader, in a future version the working group plans to prohibit its use on elements with role columnheader except when the element is in the context of a grid or treegrid.",
						"generalization": ["cell", "gridcell", "sectionhead"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colindextext",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowindextext",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-sort"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "combobox",
						"description": "An input that controls another element, such as a listbox or grid, that can dynamically pop up to help the user set the value of the input.\n\nThe Guidance for combobox has changed significantly in ARIA 1.2 due to problems with implementation of the previous patterns. Authors and developers of User Agents, Assistive Technologies, and Conformance Checkers are advised to review this section carefully to understand the changes. Explanation of the changes is available in the ARIA repository wiki.\n\nA combobox functionally combines a named input field with the ability to assist value selection via a supplementary popup element. A combobox input MAY be either a single-line text field that supports editing and typing or an element that only displays the current value of the combobox. If the combobox supports text input and provides autocompletion behavior as described in aria-autocomplete, authors MUST set aria-autocomplete on the combobox element to the value that corresponds to the provided behavior.\n\nTypically, the initial state of a combobox is collapsed. In the collapsed state, only the combobox element and a separate, optional popup control button are visible. A combobox is said to be expanded when both the combobox element showing its current value and its associated popup element are visible. Authors MUST set aria-expanded to true on an element with role combobox when it is expanded and false when it is collapsed.\n\nElements with the role combobox have an implicit aria-haspopup value of listbox. If the combobox popup element has a role other than listbox, authors MUST specify an aria-haspopup value of tree, grid, or dialog that corresponds to the role of its popup.\n\nIf the user interface includes an additional icon that allows the visibility of the popup to be controlled via pointer and touch events, authors SHOULD ensure that element has role button, that it is focusable but not included in the page Tab sequence, and that it is not a descendant of the element with role combobox. In addition, to be keyboard accessible, authors SHOULD provide keyboard mechanisms for moving focus between the combobox element and elements contained in the popup. For example, one common convention is that Down Arrow moves focus from the input to the first focusable descendant of the popup element. If the popup element supports aria-activedescendant, in lieu of moving focus, such keyboard mechanisms can control the value of aria-activedescendant on the combobox element. When a descendant of the popup element is active, authors MAY set aria-activedescendant on the combobox to a value that refers to the active element within the popup while focus remains on the combobox element.\n\nUser agents MUST expose the value of elements with role combobox to assistive technologies. The value of a combobox is represented by one of the following:\n\nPlease review the following carefully. As a result of these changes a combobox following the ARIA 1.1 combobox specification will no longer conform with the ARIA specification.\n\nThe structural requirements for combobox defined by this version of the specification are different from the requirements defined by ARIA 1.0 and ARIA 1.1:\n\nThe features and behaviors of combobox implementations vary widely. Consequently, there are many important authoring considerations. See the ARIA Authoring Practices Guide for additional details on implementing combobox design patterns.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete"
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls"
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded",
								"required": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "command",
						"description": "A form of widget that performs an action but does not receive input data.\n\ncommand is an abstract role used for the ontology. Authors MUST NOT use command role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "comment",
						"description": "A comment contains content expressing reaction to other content.\n\nComments can annotate any visible content, from small spans of text, to other comments, to entire articles. Authors SHOULD identify the relationships between comments and the commented content, as follows:\n\nIf the author has not explicitly declared aria-level, aria-posinset, or aria-setsize for a comment element, user agents MUST automatically compute the missing values and expose them to assistive technologies.",
						"generalization": ["article"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "complementary",
						"description": "A landmark that is designed to be complementary to the main content that it is a sibling to, or a direct descendant of. The contents of a complementary landmark would be expected to remain meaningful if it were to be separated from the main content it is relevant to.\n\nThere are various types of content that would appropriately have this role. For example, in the case of a portal, this can include but not be limited to show times, current weather, related articles, or stocks to watch. If the complementary content is completely separable from the main content, it might be appropriate to use a more general role.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role complementary. user agents SHOULD treat elements with role complementary as navigational landmarks. user agents MAY enable users to quickly navigate to elements with role complementary.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "composite",
						"description": "A widget that can contain navigable accessibility descendants.\n\nAuthors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to elements that are accessibility descendants of the composite element.\n\ncomposite is an abstract role used for the ontology. Authors MUST NOT use composite role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "contentinfo",
						"description": "A landmark that contains information about the parent document.\n\nExamples of information included in this region of the page are copyrights and links to privacy statements.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role contentinfo. user agents SHOULD treat elements with role contentinfo as navigational landmarks. user agents MAY enable users to quickly navigate to elements with role contentinfo.\n\nThe author SHOULD mark no more than one element on a page with the contentinfo role.\n\nBecause document and application elements can be nested in the DOM, they can have multiple contentinfo elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "definition",
						"description": "A definition of a term or concept. See related term.\n\nAuthors MUST identify the element being defined and assign that element a role of term.\n\nAuthors SHOULD NOT use the definition role on interactive elements such as form controls because doing so could prevent users of assistive technologies from interacting with those elements.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "deletion",
						"description": "A deletion represents content that is marked as removed, content that is being suggested for removal, or content that is no longer relevant in the context of its accompanying content. See related insertion.\n\nDeletions are typically used to either mark differences between two versions of content or to designate content suggested for removal in scenarios where multiple people are revising content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "dialog",
						"description": "A dialog is a descendant window of the primary window of a web application. For HTML pages, the primary application window is the entire web document.\n\nDialogs are often used to prompt the user to enter or respond to information, or can represent content related to understanding or modifying the content of the primary application window. A dialog that is designed to interrupt workflow and prevent users from interacting with the primary web application is usually modal. See related alertdialog. A dialog that allows for the user to switch between interacting with the content of the primary web application and the content the dialog is usually modeless (i.e., non-modal). In lieu of using robust host language features for marking content of the primary web application as inert, authors SHOULD use the aria-modal attribute, and constrain focus to dialogs. See the WAI-ARIA Authoring Practices: Dialog (modal) pattern for additional details on implementing modal dialog design patterns.\n\nAuthors SHOULD provide an accessible name for a dialog, which can be done with the aria-label or aria-labelledby attribute.\n\nAuthors SHOULD ensure that all dialogs (both modal and non-modal) have at least one focusable descendant element. Authors SHOULD focus an element in the modal dialog when it is displayed, and authors SHOULD constrain keyboard focus to focusable elements within a modal dialog, until dismissed.\n\nAuthors SHOULD provide a dialog an accessible description, with the aria-describedby attribute, for instances where authors have set initial keyboard focus on an element that follows content that outlines the purpose of the dialog. Assistive technology SHOULD give precedence to exposing author defined dialog accessible descriptions when a dialog is invoked and user focus is moved to a descendant of the dialog element.\n\nAuthors are strongly encouraged to use aria-describedby, rather than aria-description, to provide descriptions to dialogs. While aria-description could be used to provide an accessible description for a dialog, it will provide a better and more consistent user experience to reference visible content that can also be independently read by all users. Doing so will help ensure important descriptive information is less likely to be missed.\n\nIn the following example, the first text field will receive initial focus when the dialog is rendered. As this means focus will be set \"after\" the preceding content that provides instructions for the form fields, an aria-describedby attribute is used to expose this content as a description for the dialog.\n\nIn the description of this role, the term \"web application\" does not refer to the application role, which specifies specific assistive technology behaviors.",
						"generalization": ["window"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "directory",
						"description": "[Deprecated in ARIA 1.2] A list of references to members of a group, such as a static table of contents.\n\nAs exposed by accessibility APIs, the directory role is essentially equivalent to the list role. So, using directory does not provide any additional benefits to assistive technology users. Authors are advised to treat directory as deprecated and to use list, or a host language's equivalent semantics instead.\n\nA directory is a static table of contents, whether linked or unlinked. This includes tables of contents built with lists, including nested lists. Dynamic tables of contents, however, might use a tree role instead.",
						"deprecated": true,
						"generalization": ["list"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "document",
						"description": "An element containing content that assistive technology users might want to browse in a reading mode.\n\nWhen user agent focus moves to an element assigned the role of document, assistive technologies having a reading mode for browsing static content MAY switch to that reading mode and intercept standard input events, such as Up or Down arrow keyboard events, to control the reading cursor.\n\nBecause assistive technologies that have a reading mode default to that mode for all elements except for those with either a widget or application role, the only circumstance where the document role is useful for changing assistive technology behavior is when the element with role document is a focusable accessibility child of a widget or application. For example, given an application element which contains some static rich text, the author can apply role document to the element containing the text and give it a tabindex of 0. When a screen reader user presses the Tab key and places focus on the document element, the user will be able to read the text with the screen reader's reading cursor.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "emphasis",
						"description": "One or more emphasized characters. See related strong.\n\nThe purpose of the emphasis role is to stress or emphasize content. It is not for communicating changes in typographical presentation that do not impact the meaning of the content. Authors SHOULD use the emphasis role only if its absence would change the meaning of the content.\n\nThe emphasis role is not intended to convey importance; for that purpose, the strong role is more appropriate.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "feed",
						"description": "A scrollable list of articles where scrolling might cause articles to be added to or removed from either end of the list.\n\nA feed enables users of assistive technologies that have a document browse mode, such as screen readers, to use the browse mode reading cursor to both read and scroll through a stream of rich content that might continue scrolling infinitely by loading more content as the user reads. In a feed, assistive technologies provide a web application with signals of the user's reading cursor movement by moving user agent focus, enabling the application to both add new content and visually position content as the user browses the page. The feed also lets authors inform assistive technologies when additions and removals are occurring so assistive technologies can more reliably update their reading view without disrupting reading or degrading performance.\n\nFor example, a feed could be used to present a stream of news stories where each article contains a story with text, links, images, and comments as well as widgets for sharing and commenting. As a screen reader user reads and interacts with each story and moves the screen reader reading cursor from story to story, each story scrolls into view and, as needed, new stories are loaded.\n\nA feed is a container element whose children have role article. When articles are added or removed from either or both ends of a feed, authors SHOULD set aria-busy to true on the feed element before the changes are made and set it to false after the changes are complete. Authors SHOULD avoid inserting or removing articles in the middle of a feed. These requirements help assistive technologies gracefully respond to changes in the feed content that occur simultaneously with user commands to move the reading cursor within the feed.\n\nAuthors SHOULD make each article in a feed focusable and ensure that the application scrolls an article into view when user agent focus is set on the article or one of its descendant elements. For example, in HTML, each article element should have a tabindex value of either -1 or 0.\n\nWhen an assistive technology reading cursor moves from one article to another, assistive technologies SHOULD set user agent focus on the article that contains the reading cursor. If the reading cursor lands on a focusable element inside the article, the assistive technology MAY set focus on that element in lieu of setting focus on the containing article.\n\nBecause the ability to scroll to another article with an assistive technology reading cursor depends on the presence of another article in the page, authors SHOULD attempt to load additional articles before user agent focus reaches an article at either end of the set of articles that has been loaded. Alternatively, authors MAY include an article at either or both ends of the loaded set of articles that includes an element, such as a button, that lets the user request more articles to be loaded.\n\nIn addition to providing a brief label, authors MAY apply aria-describedby to article elements in a feed to suggest to screen readers which elements to speak after the label when users navigate by article. Screen readers MAY provide users with a way to quickly scan feed content by speaking both the label and accessible description when navigating by article, enabling the user to ignore repetitive or less important elements, such as embedded interaction widgets, that the author has left out of the description.\n\nAuthors SHOULD provide keyboard commands for moving focus among articles in a feed so users who do not utilize an assistive technology that provides article navigation features can use the keyboard to navigate the feed.\n\nIf the number of articles available in a feed supply is static, authors MAY specify aria-setsize on article elements in that feed. However, if the total number is extremely large, indefinite, or changes often, authors MAY set aria-setsize to -1 to communicate the unknown size of the set.\n\nSee the ARIA Authoring Practices Guide for additional details on implementing a feed design pattern.",
						"generalization": ["list"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["article"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "figure",
						"description": "A perceivable section of content that typically contains a graphical document, images, media player, code snippets, or example text. The parts of a figure MAY be user-navigable.\n\nAuthors SHOULD provide a reference to the figure from the main text, but the figure need not be displayed at the same location as the referencing element. Authors MAY provide a figure a caption which can include its name, descriptive text, or both. If a caption is provided, and it serves as a description to the contents of the figure, authors SHOULD associate it to the figure element using aria-details.\n\nAuthors MAY provide a figure an accessible name using aria-label or use aria-labelledby to reference other text in the page to serve as the element's label and accessible name.\n\nPlease refer to the caption role for more information on how to associate a figure with its caption.\n\nAssistive technologies SHOULD enable users to quickly navigate to figures. User agents MAY enable users to quickly navigate to figures.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "form",
						"description": "A landmark region that contains a collection of items and objects that, as a whole, combine to create a form. See related search.\n\nA form can contain a mix of host language form controls, scripted controls, and hyperlinks. Authors are reminded to use native host language semantics to create form controls whenever possible. If the purpose of a form is to submit search criteria, authors SHOULD use the search role instead of the generic form role.\n\nAuthors SHOULD give each element with role form a brief label that describes the purpose of the form. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present. Authors SHOULD include the label inside of a heading whenever possible. The heading MAY be an instance of the standard host language heading element or an instance of an element with role heading.\n\nIf an author uses a script to submit a form based on a user action that would otherwise not trigger an onsubmit event (for example, a form submission triggered by the user changing a form element's value), the author SHOULD provide the user with advance notification of the behavior.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role form. User agents SHOULD treat elements with role form and an accessible name as navigational landmarks. User agents MAY enable users to quickly navigate to elements with role form.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "generic",
						"description": "A nameless container element that has no semantic meaning on its own.\n\nThe generic role is intended for use as the implicit role of generic elements in host languages (such as HTML div or span), so is primarily for implementors of user agents. Authors SHOULD NOT use this role in content. Authors MAY use presentation or none to remove implicit accessibility semantics, or a semantic container role such as group to semantically group descendants in a named container.\n\nLike an element with role presentation, an element with role generic can provide a limited number of accessible states and properties for its descendants, such as aria-live attributes.\n\nHowever, unlike elements with role presentation, user agents expose generic elements in accessibility APIs when permitted accessibility attributes have been specified. User agents MAY otherwise ignore generic elements if such permitted attributes have not been specified.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							}
						],
						"prohibitedProperties": [
							"aria-braillelabel",
							"aria-brailleroledescription",
							"aria-label",
							"aria-labelledby",
							"aria-roledescription"
						]
					},
					{
						"name": "grid",
						"description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It can be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are accessibility children of elements with role row, which are in turn are accessibility children of an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key might switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell might show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of that grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nAuthors SHOULD provide an accessible name for a grid, which can be done with the aria-label or aria-labelledby attribute. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present for the grid.\n\nSee the ARIA Authoring Practices Guide for additional details on implementing grid design patterns.",
						"generalization": ["composite", "table"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["caption", "row", "rowgroup > row"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "gridcell",
						"description": "A cell in a grid or treegrid.\n\nA gridcell can be focusable, editable, and selectable. A gridcell can have relationships such as aria-controls to address the application of functional relationships.\n\nIf an author intends a gridcell to have a row header, column header, or both, and if the relevant headers cannot be determined from the DOM structure, authors SHOULD explicitly indicate which header cells are relevant to the gridcell by applying aria-describedby on the gridcell and referencing elements with role rowheader or columnheader.\n\nIn a treegrid, authors MAY define a gridcell as expandable by using the aria-expanded attribute. If the aria-expanded attribute is provided, it applies only to the individual cell. It is not a proxy for the container row, which also can be expanded. The main use case for providing this attribute on a gridcell is pivot table behavior.\n\nAuthors MUST ensure elements with role gridcell are accessibility children of an element with the role row.",
						"generalization": ["cell", "widget"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colindextext",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowindextext",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "group",
						"description": "A set of user interface objects that is not intended to be included in a page summary or table of contents by assistive technologies.\n\nContrast with region, which is a grouping of user interface objects that will be included in a page summary or table of contents.\n\nAuthors SHOULD use a group to form a logical collection of items in a widget, such as children in a tree widget forming a collection of siblings in a hierarchy. However, when a group is used in the context of a listbox, for example, authors MUST limit its children to option elements. Therefore, proper handling of group by authors and assistive technologies is determined by the context in which it is provided.\n\nAuthors MAY nest group elements. If a section is significant enough to warrant inclusion in the web page's table of contents, the author SHOULD assign it a role of region or a standard landmark role.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "heading",
						"description": "A heading for a section of the page.\n\nTo ensure elements with a role of heading are organized into a logical outline, authors MUST use the aria-level attribute to indicate the proper nesting level.",
						"generalization": ["sectionhead"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level",
								"required": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "image",
						"description": "A container for a collection of elements that form an image. See synonym img.\n\nAn img can contain captions and descriptive text, as well as multiple image files that when viewed together give the impression of a single image. An img represents a single graphic within a document, whether or not it is formed by a collection of drawing objects. In order for an element with a role of img to be perceivable, authors MUST provide the element with an accessible name. This can be done using the aria-label or aria-labelledby attribute.\n\nThe image role was added to ARIA in version 1.3 as a synonym of the ARIA 1.0 img role. The image role improves syntactic consistency with the names of other roles, which are complete words or concatenations of complete words.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "img",
						"description": "A container for a collection of elements that form an image. See synonym image.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "input",
						"description": "A generic type of widget that allows user input.\n\ninput is an abstract role used for the ontology. Authors MUST NOT use input role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "insertion",
						"description": "An insertion contains content that is marked as added or content that is being suggested for addition. See related deletion.\n\nInsertions are typically used to either mark differences between two versions of content or to designate content suggested for addition in scenarios where multiple people are revising content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "landmark",
						"description": "A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology.\n\nlandmark is an abstract role used for the ontology. Authors MUST NOT use landmark role in content.\n\nAuthors designate the purpose of the content by assigning a role that is a subclass of the landmark role and, when needed, by providing a brief, descriptive label.\n\nElements with a role that is a subclass of the landmark role are known as landmark regions or navigational landmark regions.\n\nAssistive technologies SHOULD enable users to quickly navigate to landmark regions. user agents MAY enable users to quickly navigate to landmark regions.",
						"isAbstract": true,
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "link",
						"description": "An interactive reference to an internal or external resource that, when activated, causes the user agent to navigate to that resource. See related button.\n\nIf this is a native link in the host language (such as an HTML anchor with an href value), activating the link causes the user agent to navigate to that resource. If this is a simulated link, the author is responsible for managing navigation.\n\nIf pressing the link triggers an action but does not change browser focus or page location, authors are advised to consider using the button role instead of the link role.",
						"generalization": ["command"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "list",
						"description": "A section containing listitem elements. See related listbox.\n\nLists contain children whose role is listitem.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["listitem"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "listbox",
						"description": "A widget that allows the user to select one or more items from a list of choices. See related combobox and list.\n\nItems within the list are static and, unlike standard HTML select elements, can contain images. List boxes contain children whose role is option or elements whose role is group which in turn contain children whose role is option.\n\nTo be keyboard accessible, authors SHOULD manage focus of option descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role listbox have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["group > option", "option"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "listitem",
						"description": "A single item in a list or directory.\n\nAuthors MUST ensure elements whose role is listitem are accessibility children of an element whose role is list.",
						"generalization": ["section"],
						"requiredContextRole": ["directory", "list"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "log",
						"description": "A type of live region where new information is added in meaningful order and old information can disappear.\n\nExamples include chat logs, messaging history, game log, or an error log. In contrast to other live regions, in this role there is a relationship between the arrival of new items in the log and the reading order. The log contains a meaningful sequence and new information is added only to the end of the log, not at arbitrary points.\n\nElements with the role log have an implicit aria-live value of polite.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "main",
						"description": "A landmark containing the main content of a document.\n\nThis marks the content that is directly related to or expands upon the central topic of the document. The main role is a non-obtrusive alternative for \"skip to main content\" links, where the navigation option to go to the main content (or other landmarks) is provided by assistive technologies, or by a user agent or browser extension, through a keyboard shortcut or UI feature such as a side panel or dialog.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role main. user agents SHOULD treat elements with role main as navigational landmarks. user agents MAY enable users to quickly navigate to elements with role main.\n\nThe author SHOULD mark no more than one element on a page with the main role.\n\nBecause document and application elements can be nested in the DOM, they can have multiple main elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "mark",
						"description": "Content which is marked or highlighted for reference or notation purposes, due to the content's relevance in the enclosing context.\n\nExample uses for mark include:\n\nAuthors SHOULD NOT use mark for purely decorative styling such as syntax highlighting.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "marquee",
						"description": "A section of content where non-essential information changes frequently.\n\nCommon usages of marquee include stock tickers and ad banners.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "math",
						"description": "Content that represents a mathematical expression.\n\nContent with the role math is intended to be marked up in an accessible format such as MathML [MathML3], or with another type of textual representation such as TeX or LaTeX, which can be converted to an accessible format by native browser implementations or a polyfill library.\n\nWhile it is not ideal to use an image of a mathematical expression, there exists a significant amount of legacy content where images are used to represent mathematical expressions. Authors SHOULD ensure that images of math are labeled by text that describes the mathematical expression as it might be spoken.\n\nBrowsers that support native implementations of MathML are able to provide a more robust, accessible math experience than can be accomplished with plain text approximations of math. Some rendering engines have close integration with screen readers that allow spacial touch exploration of the formula and refreshable braille display output in the Nemeth Braille format. This level of integration is not supported with images of mathematical formulas, even if the author provides a plain text approximation.\n\nAt the time of this writing, some mainstream browsers do not support MathML natively, and must be retrofit using a JavaScript polyfill library. When authoring math content, use native MathML wherever possible, and test thoroughly. Use a polyfill library or provide a fallback image with a text alternative approximation if necessary.\n\nIf a rendering engine does not support a native math format such as MathML, authors MAY use JavaScript to downgrade the content to a format the browser can display, such as this HTML image using a data URI and plain text alternative.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menu",
						"description": "A type of widget that offers a list of choices to the user.\n\nA menu is a container, generally rendered as a popup or overlay, for a set of menu items that can be invoked to perform an action or function. The function is almost always closely related or directly related to the element that the user activated to invoke the menu. Activating a menu item both performs the associated function of the menu item, and results in the automatic dismissal of the menu.\n\nThe menu role is appropriate when a set of menu items is presented in a manner similar to a popup menu. For instance, a menu could be used to represent a context menu for its invoking element, or it would be used to render sub-menus for items of a menubar or another menu popup.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menu have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": [
							"group > menuitem",
							"group > menuitemradio",
							"group > menuitemcheckbox",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio",
							"separator"
						],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menubar",
						"description": "A presentation of menu that usually remains visible and is usually presented horizontally.\n\nThe menubar role is used to create a menu bar similar to those found in Windows, Mac, and Gnome desktop applications. A menu bar is used to create a consistent set of frequently used commands. Authors SHOULD ensure that menubar interaction is similar to the typical menu bar interaction in a desktop graphical user interface.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menubar have an implicit aria-orientation value of horizontal.",
						"generalization": ["menu"],
						"requiredContextRole": [],
						"requiredOwnedElements": [
							"group > menuitem",
							"group > menuitemradio",
							"group > menuitemcheckbox",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio",
							"separator"
						],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitem",
						"description": "An option in a set of choices contained by a menu or menubar.\n\nAuthors MUST ensure elements with role menuitem are accessibility children of an element with role menu, menubar, or an element with role group that is an accessibility child of an element with role menu or menubar.\n\nAuthors MAY disable a menu item with the aria-disabled attribute. If the menu item has its aria-haspopup attribute set to true, it indicates that the menu item can be used to launch a sub-level menu, and authors SHOULD display a new sub-level menu when the menu item is activated.\n\nIn order to identify that they are related widgets, authors MUST ensure that menu items are accessibility descendants of an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
						"generalization": ["command"],
						"requiredContextRole": ["menu", "menubar", "menu > group", "menubar > group"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitemcheckbox",
						"description": "A menuitem with a checkable state whose possible values are true, false, or mixed.\n\nAuthors MUST ensure elements with role menuitemcheckbox are accessibility children of an element with role menu, menubar, or an element with role group that is an accessibility child of an element with role menu or menubar.\n\nThe aria-checked attribute of a menuitemcheckbox indicates whether the menu item is checked (true), unchecked (false), or represents a sub-level menu of other menu items that have a mixture of checked and unchecked values (mixed).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item checkboxes are the accessibility descendants of an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
						"generalization": ["menuitem"],
						"requiredContextRole": ["menu", "menubar", "menu > group", "menubar > group"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitemradio",
						"description": "A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time.\n\nAuthors MUST ensure elements with role menuitemradio are accessibility children of an element with role menu, menubar, or an element with role group that is an accessibility child of an element with role menu or menubar.\n\nAuthors SHOULD enforce that only one menuitemradio in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item radios are accessibility descendants of an element with role menu or menubar.\n\nIf a menu or menubar contains more than one group of menuitemradio elements, or if the menu contains one group and other, unrelated menu items, authors SHOULD contain each set of related menuitemradio elements in an element using the group role. Authors MAY also delimit the group from other menu items with an element using the separator role, or an element with an equivalent role from the native markup language.",
						"generalization": ["menuitem"],
						"requiredContextRole": ["menu", "menubar", "menu > group", "menubar > group"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "meter",
						"description": "An element that represents a scalar measurement within a known range, or a fractional value. See related progressbar.\n\nAuthors MAY set aria-valuemin and aria-valuemax to indicate the minimum and maximum values for the meter. Otherwise, their implicit values follow the same rules as <input type=\"range\"> in HTML:\n\nThe value of aria-valuenow MUST NOT fall below or exceed the computed values of aria-valuemin and aria-valuemax, respectively.\n\nAuthors SHOULD NOT use the meter role to indicate progress; the progressbar role exists to address that need.\n\nPresently, there are no WAI-ARIA properties corresponding to the low, optimum, and high attributes supported on the <meter> element in HTML. The addition of these properties will be considered for ARIA version 1.3.",
						"generalization": ["range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"inherited": true
							},
							{
								"name": "aria-valuemin",
								"inherited": true
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "navigation",
						"description": "A landmark containing a collection of navigational elements (usually links) for navigating the document or related documents.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role navigation. user agents SHOULD treat elements with role navigation as navigational landmarks. user agents MAY enable users to quickly navigate to elements with role navigation.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "none",
						"description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym presentation.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.\n\nThe intended use is when an element is used to change the look of the page but does not have all the functional, interactive, or structural relevance implied by the element type, or can be used to provide for an accessible fallback in older browsers that do not support WAI-ARIA.\n\nExample use cases:\n\nFor any element with a role of none/presentation and which is not focusable, the user agent MUST NOT expose the implicit native semantics of the element (the role and its states and properties) to accessibility APIs. However, the user agent MUST expose content and descendant elements that do not have an explicit or inherited role of none/presentation. Thus, the none/presentation role causes a given element to be treated as having no role or to be removed from the accessibility tree, but does not cause the content contained within the element to be removed from the accessibility tree.\n\nFor example, the following two markup snippets will be exposed similarly to an accessibility API.\n\nIn HTML, the <img> element is treated as a single entity regardless of the type of image file. Consequently, using role=\"none\" or role=\"presentation\" on an HTML img is equivalent to using aria-hidden=\"true\". In order to make the image contents accessible, authors can embed the object using an <object> or <iframe> element, or use inline SVG code, and follow the accessibility guidelines for the image content.\n\nAuthors SHOULD NOT provide a non-empty text alternative when the none/presentation role is applied to an image.\n\nIn the following code sample, the containing img and is appropriately labeled by the caption paragraph. In this example the img element can be marked as none/presentation because the role and the text alternatives are provided by the containing element.\n\nIn the following code sample, because the anchor (HTML a element) is acting as the treeitem, the list item (HTML li element) is assigned an explicit WAI-ARIA role of none/presentation to override the user agent's implicit native semantics for list items.\n\nThe none/presentation role is used on an element that has implicit native semantics, meaning that there is a default accessibility API role for the element. Some elements are only complete when additional descendant elements are provided. For example, in HTML, table elements (matching the table role) require tr descendants (which have an implicit row role), which in turn require th or td children (the columnheader or rowheader and cell roles, respectively). Similarly, lists require list item children. The descendant elements that complete the semantics of an element are described in WAI-ARIA as Allowed Accessibility Child Roles.\n\nWhen an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has Allowed Accessibility Child Roles, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any accessibility descendants that do not have an explicit role defined. Also, when an explicit or inherited role of none/presentation is applied to a host language element which has specifically allowed children as defined by the host language specification, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any specifically allowed children that do not have an explicit role defined.\n\nFor any element with an explicit or inherited role of none/presentation and which is not focusable, user agents MUST ignore role-specific WAI-ARIA states and properties for that element. For example, in HTML, a ul or ol element with a role of none/presentation will have the implicit native semantics of its li elements removed because the list role to which the ul or ol corresponds has an Allowed Accessibility Child Role of listitem. Likewise, the implicit native semantics of an HTML table element's thead/tbody/tfoot/tr/th/td descendants will also be removed, because the HTML specification indicates that these are required structural descendants of the table element.\n\nOnly the implicit native semantics of elements that correspond to WAI-ARIA Allowed Accessibility Child Roles are removed. All other content remains intact, including nested tables or lists, unless those elements also have an explicit role of none/presentation specified.\n\nFor example, according to an accessibility API, the following markup elements might have identical or very similar role semantics (generic or none role) and identical content.\n\nThere are other WAI-ARIA roles with specific allowed accessibility children for which this situation is applicable (e.g., feeds and listboxes), but tables and lists are the most common real-world cases in which the none/presentation inheritance is likely to apply.\n\nFor any element with an explicit or inherited role of none/presentation, user agents MUST apply an inherited role of none to all host-language-specific labeling elements for the presentational element. For example, a table element with a role of none/presentation will have the implicit native semantics of its caption element removed, because the caption is merely a label for the presentational table.\n\nInformation about resolving conflicts in the none/presentation role has been moved to Handling Author Errors",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "note",
						"description": "A section whose content represents additional information or parenthetical context to the primary content it supplements.\n\nA note is content provided by the author of the page or document, it is not to be used for providing reactions or suggestions. For these purposes, please review comment and suggestion.\n\nWhen used within the normal flow of a page's content, a note has an implicit association with the content that it supplements. The following example demonstrates using a note to call out additional information in the natural reading order of a page:\n\nIn cases where an element with role note has been determined to need a programmatic association with the content it supplements, authors can use one of the following mechanisms to associate the elements:",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "option",
						"description": "An item in a listbox.\n\nAuthors MUST ensure elements with role option are accessibility children of an element with role listbox or of an element with role group that is the accessibility child of an element with role listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each option in a listbox, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for an option, the value SHOULD be true if the option has DOM focus or the listbox has DOM focus and the option is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for an option, the value SHOULD be false.\n\nAuthors SHOULD indicate selection for option elements using one of the following:\n\nAuthors SHOULD NOT specify both aria-selected and aria-checked on option elements contained by the same listbox except in the extremely rare circumstances where all the following conditions are met:",
						"generalization": ["input"],
						"requiredContextRole": ["listbox", "listbox > group"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected"
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "paragraph",
						"description": "A paragraph of content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "presentation",
						"description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym none.\n\nIn ARIA 1.1, the working group introduced none as the preferred synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and the ARIA Working Group believes role=\"none\" conveys the actual meaning more unambiguously.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "progressbar",
						"description": "An element that displays the progress status for tasks that take a long time.\n\nA progressbar indicates that the user's request has been received and the application is making progress toward completing the requested action.\n\nAuthors MAY set aria-valuemin and aria-valuemax to indicate the minimum and maximum progress indicator values. Otherwise, their implicit values follow the same rules as <input type=\"range\"> in HTML:\n\nThe author SHOULD supply a value for aria-valuenow unless the value is indeterminate, in which case the author SHOULD omit the aria-valuenow attribute. Authors SHOULD update this value when the visual progress indicator is updated. If the progressbar is describing the loading progress of a particular region of a page, authors SHOULD both use aria-describedby to reference the progressbar status, and set the aria-busy attribute to true on the region until it is finished loading. It is not possible for the user to alter the value of a progressbar because it is always read-only.\n\nAssistive technologies generally will render the value of aria-valuenow as a percent of a range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified.",
						"generalization": ["range", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"inherited": true
							},
							{
								"name": "aria-valuemin",
								"inherited": true
							},
							{
								"name": "aria-valuenow",
								"inherited": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "radio",
						"description": "A checkable input in a group of elements with the same role, only one of which can be checked at a time.\n\nAuthors SHOULD ensure that elements with role radio are explicitly grouped in order to indicate which ones affect the same value. This is achieved by enclosing the radio elements in an element with role radiogroup. If it is not possible to make the radio buttons DOM children of the radiogroup, authors SHOULD use the aria-owns attribute on the radiogroup element to indicate the relationship to its children.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "radiogroup",
						"description": "A group of radio buttons.\n\nA radiogroup is a type of select list that can only have a single entry checked at any one time. Authors SHOULD enforce that only one radio button in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).\n\nAuthors SHOULD provide an accessible name for a radiogroup, which can be done with the aria-label or aria-labelledby attribute. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present for the radiogroup.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "range",
						"description": "An element representing a range of values.\n\nrange is an abstract role used for the ontology. Authors MUST NOT use range role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow"
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "region",
						"description": "A landmark containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology.\n\nAuthors SHOULD limit use of the region role to sections containing content with a purpose that is not accurately described by one of the other landmark roles, such as main, complementary, or navigation.\n\nAuthors MUST give each element with role region a brief label that describes the purpose of the content in the region. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present. Authors SHOULD include the label inside of a heading whenever possible. The heading MAY be an instance of the standard host language heading element or an instance of an element with role heading.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role region. User agents SHOULD treat elements with role region and an accessible name as navigational landmarks. User agents MAY enable users to quickly navigate to elements with role region.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "roletype",
						"description": "The base role from which all other roles inherit.\n\nProperties of this role describe the structural and functional purpose of objects that are assigned this role. A role is a concept that can be used to understand and operate instances.\n\nroletype is an abstract role used for the ontology. Authors MUST NOT use roletype role in content.",
						"isAbstract": true,
						"generalization": [],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic"
							},
							{
								"name": "aria-braillelabel"
							},
							{
								"name": "aria-brailleroledescription"
							},
							{
								"name": "aria-busy"
							},
							{
								"name": "aria-controls"
							},
							{
								"name": "aria-current"
							},
							{
								"name": "aria-describedby"
							},
							{
								"name": "aria-description"
							},
							{
								"name": "aria-details"
							},
							{
								"name": "aria-disabled",
								"deprecated": true
							},
							{
								"name": "aria-dropeffect"
							},
							{
								"name": "aria-errormessage",
								"deprecated": true
							},
							{
								"name": "aria-flowto"
							},
							{
								"name": "aria-grabbed"
							},
							{
								"name": "aria-haspopup",
								"deprecated": true
							},
							{
								"name": "aria-hidden"
							},
							{
								"name": "aria-invalid",
								"deprecated": true
							},
							{
								"name": "aria-keyshortcuts"
							},
							{
								"name": "aria-label"
							},
							{
								"name": "aria-labelledby"
							},
							{
								"name": "aria-live"
							},
							{
								"name": "aria-owns"
							},
							{
								"name": "aria-relevant"
							},
							{
								"name": "aria-roledescription"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "row",
						"description": "A row of cells in a tabular container.\n\nRows contain cell or gridcell elements, and thus serve to organize a table, grid, or treegrid.\n\nWhile the row role can be used in a table, grid, or treegrid, the semantics of aria-expanded, aria-posinset, aria-setsize, and aria-level are only applicable to the hierarchical structure of an interactive tree grid. Therefore, authors MUST NOT apply aria-expanded, aria-posinset, aria-setsize, and aria-level to a row that descends from a table or grid, and user agents SHOULD NOT expose any of these four properties to assistive technologies unless the row descends from a treegrid.\n\nAuthors MUST ensure elements with role row are accessibility children of an element with the role table, grid, rowgroup, or treegrid.\n\nWhile aria-disabled is currently supported on row, in a future version the working group plans to prohibit its on elements with role row except when the element is in the context of a grid or treegrid.",
						"generalization": ["group", "widget"],
						"requiredContextRole": ["grid", "table", "treegrid", "rowgroup"],
						"requiredOwnedElements": ["cell", "columnheader", "gridcell", "rowheader"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex"
							},
							{
								"name": "aria-rowindextext"
							},
							{
								"name": "aria-selected"
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "rowgroup",
						"description": "A structure containing one or more row elements in a tabular container.\n\nThe rowgroup role establishes a relationship with its accessibility children of role row. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.\n\nAuthors MUST ensure elements with role rowgroup are accessibility children of an element with the role grid, table, or treegrid.\n\nThe rowgroup role exists, in part, to support role symmetry in HTML, and allows for the propagation of presentation inheritance on HTML table elements with an explicit presentation role applied.\n\nThis role does not differentiate between types of row groups (e.g., thead vs. tbody), but an issue has been raised for WAI-ARIA 2.0.",
						"generalization": ["structure"],
						"requiredContextRole": ["grid", "table", "treegrid"],
						"requiredOwnedElements": ["row"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "rowheader",
						"description": "A cell containing header information for a row.\n\nThe rowheader role can be used to identify a cell as a header for a row in a table, grid, or treegrid. The rowheader establishes a relationship between it and all cells in the corresponding row. It is a structural equivalent to setting scope=\"row\" on an HTML th element.\n\nAuthors MUST ensure elements with role rowheader are accessibility children of an element with the role row.\n\nApplying the aria-selected state on a rowheader MUST NOT cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding row. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the rowheader role can be used in both interactive grids and non-interactive tables, the use of aria-expanded, aria-readonly, and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-expanded, aria-readonly, or aria-required in a rowheader that descends from a table, and user agents SHOULD NOT expose these properties to assistive technologies unless the rowheader descends from a grid or treegrid.\n\nWhile aria-disabled is currently supported on rowheader, in a future version the working group plans to prohibit its use on elements with role rowheader except when the element is in the context of a grid or treegrid.",
						"generalization": ["cell", "gridcell", "sectionhead"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colindextext",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowindextext",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-sort"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "scrollbar",
						"description": "A graphical object that controls the scrolling of content within a viewing area, regardless of whether the content is fully displayed within the viewing area.\n\nA scrollbar represents the current value and range of possible values via the size of the scrollbar and position of the thumb with respect to the visible range of the orientation (horizontal or vertical) it controls. Its orientation represents the orientation of the scrollbar and the scrolling effect on the viewing area controlled by the scrollbar. It is typically possible to add to or subtract from the current value by using directional keys such as arrow keys.\n\nAuthors MAY set the aria-controls attribute on the scrollbar element to reference the scrollable area it controls.\n\nAuthors MAY set aria-valuemin and aria-valuemax to indicate the minimum and maximum thumb position. Otherwise, their implicit values follow the same rules as <input type=\"range\"> in HTML:\n\nAuthors MUST set the aria-valuenow attribute to indicate the current thumb position. If aria-valuenow is missing or has an unexpected value, user agents MAY implement the repair techniques specified in the section describing handling author errors in states and properties, which are equivalent to the repair techniques for <input type=\"range\"> in HTML.\n\nElements with the role scrollbar have an implicit aria-orientation value of vertical.\n\nAssistive technologies generally will render the value of aria-valuenow as a percent of a range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified. It is best to set the values for aria-valuemin, aria-valuemax, and aria-valuenow in a manner that is appropriate for this calculation.",
						"generalization": ["range", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "search",
						"description": "A landmark region that contains a collection of items and objects that, as a whole, combine to create a search facility. See related form and searchbox.\n\nA search region can be a mix of host language form controls, scripted controls, and hyperlinks.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role search. user agents SHOULD treat elements with role search as navigational landmarks. user agents MAY enable users to quickly navigate to elements with role search.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "searchbox",
						"description": "A type of textbox intended for specifying search criteria. See related textbox and search.",
						"generalization": ["textbox"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiline",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-placeholder",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "section",
						"description": "A renderable structural containment unit on a page.\n\nsection is an abstract role used for the ontology. Authors MUST NOT use section role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "sectionfooter",
						"description": "A set of user interface objects and information representing information about its closest ancestral content group. For instance, a sectionfooter can include information about who wrote the specific section of content, such as an article. It can contain links to related documents, copyright information or other indices and colophon specific to the current section of the page.\n\nA sectionfooter does not represent information about the parent document, or globally repeating content found across multiple pages related to the website. For such content, the contentinfo role would be more appropriate.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "sectionhead",
						"description": "A structure that labels or summarizes the topic of its related section.\n\nsectionhead is an abstract role used for the ontology. Authors MUST NOT use sectionhead role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "sectionheader",
						"description": "A set of user interface objects and information that represents a collection of introductory items for the element's closest ancestral content group. For instance, a sectionheader can include the heading, introductory statement and related meta data for a section of content, for instance a region or article, within a web page.\n\nA sectionheader does not represent site-oriented or globally repeating content found across multiple pages of a website. For such content, the banner role would be more appropriate.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "select",
						"description": "A form widget that allows the user to make selections from a set of choices.\n\nselect is an abstract role used for the ontology. Authors MUST NOT use select role in content.",
						"isAbstract": true,
						"generalization": ["composite", "group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "separator",
						"description": "A divider that separates and distinguishes sections of content or groups of menuitems.\n\nThere are two types of separators: a static structure that provides only a visible boundary and a focusable, interactive widget that is also moveable. If a separator is not focusable, it is revealed to assistive technologies as a static structural element. For example, a static separator can be used to help visually divide two groups of menu items in a menu or to provide a horizontal rule between two sections of a page.\n\nAuthors MAY make a separator focusable to create a widget that both provides a visible boundary between two sections of content and enables the user to change the relative size of the sections by changing the position of the separator. A variable separator widget can be moved continuously within a range, whereas a fixed separator widget supports only two discrete positions. Typically, a fixed separator widget is used to toggle one of the sections between expanded and collapsed states.\n\nIf the separator is focusable, authors MUST set the value of aria-valuenow to a number reflecting the current position of the separator and update that value when it changes. Authors SHOULD also provide the value of aria-valuemin if it is not 0 and the value of aria-valuemax if it is not 100. If missing or not a number, the implicit values of these attributes are as follows:\n\nIn applications where there is more than one focusable separator, authors SHOULD provide an accessible name for each one.\n\nElements with the role separator have an implicit aria-orientation value of horizontal.",
						"generalization": ["structure", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "slider",
						"description": "An input where the user selects a value from within a given range.\n\nA slider represents the current value and range of possible values via the size of the slider and position of the thumb. It is typically possible to add to or subtract from the current value by using directional keys such as arrow keys.\n\nAuthors MAY set the aria-valuemin and aria-valuemax attributes. Otherwise, their implicit values follow the same rules as <input type=\"range\"> in HTML:\n\nAuthors MUST set the aria-valuenow attribute. If aria-valuenow is missing or has an unexpected value, browsers MAY implement the repair techniques specified in the section describing handling author errors in states and properties, which are equivalent to the repair techniques for <input type=\"range\"> in HTML.\n\nElements with the role slider have an implicit aria-orientation value of horizontal.",
						"generalization": ["input", "range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "spinbutton",
						"description": "A form of range that expects the user to select from among discrete choices.\n\nA spinbutton typically allows users to change its displayed value by activating increment and decrement buttons that step through a set of allowed values. Some implementations display the value in an text field that allows editing and typing but typically limits input in ways that help prevent invalid values.\n\nAlthough a spinbutton is similar in appearance to many presentations of select, it is advisable to use spinbutton when working with known ranges (especially in the case of large ranges) as opposed to distinct options. For example, a spinbutton representing a range from 1 to 1,000,000 would provide much better performance than a select widget representing the same values.\n\nAuthors MAY create a spinbutton with accessibility children, but MUST limit those elements to a textbox and/or two buttons. Alternatively, authors MAY apply the spinbutton role to a text input and create sibling buttons to support the increment and decrement functions.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a spinbutton receives focus, authors SHOULD ensure focus is placed on the textbox element if one is present, and on the spinbutton itself otherwise. Authors SHOULD also ensure the up and down arrows on a keyboard perform the increment and decrement functions and that the increment and decrement button elements are NOT included in the primary navigation ring, e.g., the Tab ring in HTML.\n\nAuthors SHOULD set the aria-valuenow attribute when the spinbutton has a value. Authors SHOULD set the aria-valuemin attribute when there is a minimum value, and the aria-valuemax attribute when there is a maximum value.",
						"generalization": ["composite", "input", "range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow"
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "status",
						"description": "A type of live region whose content is advisory information for the user but is not important enough to justify an alert, often but not necessarily presented as a status bar.\n\nAuthors SHOULD ensure an element with role status does not receive focus as a result of change in status.\n\nStatus is a form of live region. If another part of the page controls what appears in the status, authors SHOULD make the relationship explicit with the aria-controls attribute.\n\nAssistive technologies MAY reserve some cells of a Braille display to render the status.\n\nElements with the role status have an implicit aria-live value of polite and an implicit aria-atomic value of true.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "strong",
						"description": "Content that is important, serious, or urgent. See related emphasis.\n\nThe purpose of the strong role is to communicate strong importance, seriousness, or urgency. It is not for communicating changes in typographical presentation that are not important to the meaning of the content. Authors SHOULD use the strong role only if its absence would change the meaning of the content.\n\nThe strong role is not intended to convey stress or emphasis; for that purpose, the emphasis role is more appropriate.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "structure",
						"description": "A document structural element.\n\nRoles for document structure support the accessibility of dynamic web content by helping assistive technologies determine active content versus static document content. Structural roles by themselves do not all map to accessibility APIs, but are used to create widget roles or assist content adaptation for assistive technologies.\n\nstructure is an abstract role used for the ontology. Authors MUST NOT use structure role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "subscript",
						"description": "One or more subscripted characters. See related superscript.\n\nThe subscript role is intended to be used only to mark up typographical conventions that have specific meanings; not for typographical presentation for presentation's sake. In general, authors SHOULD use this role only if the absence of the subscript would change the meaning of the content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "suggestion",
						"description": "A single proposed change to content.\n\nFor example, in an editing system that supports multiple users, one user can suggest a change, and another user would be responsible for accepting or rejecting the suggestion.\n\nAuthors MUST ensure that a suggestion contains either one insertion child or one deletion child or ensure that it contains two children where one is an insertion and the other is a deletion. Authors MUST ensure a suggestion does not contain any other children.\n\nAuthors MAY use aria-details or aria-description to associate the suggestion with related information such as comments, authoring info, and time stamps.\n\nWhen a suggestion is accepted, authors SHOULD remove the suggestion role, indicating that the proposed revision has been made. After the suggestion role is removed, child insertion and deletion elements can either be retained to document the revision or replaced with the revised content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["insertion", "deletion"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "superscript",
						"description": "One or more superscripted characters. See related subscript.\n\nThe superscript role is intended to be used only to mark up typographical conventions that have specific meanings; not for typographical presentation for presentation's sake. In general, authors SHOULD use this role only if the absence of the superscript would change the meaning of the content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "switch",
						"description": "A type of checkbox that represents on/off values, as opposed to checked/unchecked values. See related checkbox.\n\nThe aria-checked attribute of a switch indicates whether the input is on (true) or off (false). The mixed value is invalid, and user agents MUST treat a mixed value as equivalent to false for this role.\n\nA switch provides approximately the same functionality as a checkbox and toggle button, but makes it possible for assistive technologies to present the widget in a fashion consistent with its on-screen appearance.",
						"generalization": ["checkbox"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tab",
						"description": "A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user.\n\nIf a tabpanel or item in a tabpanel has focus, the associated tab is the currently active tab in the tablist, as defined in Managing Focus. tablist elements, which contain a set of associated tab elements, are typically placed near a series of tabpanel elements, usually preceding it. See the ARIA Authoring Practices Guide for details on implementing a tab set design pattern.\n\nAuthors MUST ensure elements with role tab are accessibility children of an element with the role tablist.\n\nAuthors MUST ensure that if a tab is active, a corresponding tabpanel that represents the active tab is rendered.\n\nAuthors SHOULD ensure the tabpanel associated with the currently active tab is perceivable to the user.\n\nFor a single-selectable tablist, authors SHOULD hide from all users other tabpanel elements until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden from all users tabpanel elements have their aria-expanded attributes set to false.\n\nAuthors SHOULD ensure that a selected tab has its aria-selected attribute set to true, that inactive tab elements have their aria-selected attribute set to false, and that the currently selected tab provides a visual indication that it is selected.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each tab in a tablist, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:",
						"generalization": ["sectionhead", "widget"],
						"requiredContextRole": ["tablist"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected"
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "table",
						"description": "A section containing data arranged in rows and columns. See related grid.\n\nThe table role is intended for tabular containers which are not interactive. If the tabular container maintains a selection state, provides its own two-dimensional navigation, or allows the user to rearrange or otherwise manipulate its contents or the display thereof, authors SHOULD use grid or treegrid instead.\n\nAuthors SHOULD provide an accessible name for a table, which can be done with the aria-label or aria-labelledby attribute. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present for the table.\n\nAuthors SHOULD prefer the use of the host language's semantics for table whenever possible, such as the <table> element in HTML.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["caption", "row", "rowgroup > row"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tablist",
						"description": "A list of tab elements, which are references to tabpanel elements.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nFor a single-selectable tablist, authors SHOULD hide from all users other tabpanel elements until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden from all users tabpanel elements have their aria-expanded attributes set to false.\n\ntablist elements are typically placed near, and usually preceding, a series of tabpanel elements. See the ARIA Authoring Practices Guide for details on implementing a tab set design pattern.\n\nElements with the role tablist have an implicit aria-orientation value of horizontal.",
						"generalization": ["composite"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["tab"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tabpanel",
						"description": "A container for the resources associated with a tab, where each tab is contained in a tablist.\n\nAuthors SHOULD associate a tabpanel element with its tab, by using the aria-controls attribute on the tab to reference the tab panel, and/or by using the aria-labelledby attribute on the tab panel to reference the tab.\n\ntablist elements are typically placed near, and usually preceding, a series of tabpanel elements. See the ARIA Authoring Practices Guide for details on implementing a tab set design pattern.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "term",
						"description": "A word or phrase with an optional corresponding definition. See related definition.\n\nThe term role is used to explicitly identify a word or phrase for which a definition has been provided by the author or is expected to be provided by the user. If there is an existing definition, or a form or form control to enter a definition, authors SHOULD set aria-details to point to the related element.\n\nAuthors SHOULD NOT use the term role on interactive elements such as links because doing so could prevent users of assistive technologies from interacting with those elements.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "textbox",
						"description": "A type of input that allows free-form text as its value.\n\nIf the aria-multiline attribute is true, the widget accepts line breaks within the input, as in an HTML textarea. Otherwise, this is a simple text box. The intended use is for languages that do not have a text input element, or cases in which an element with different semantics is repurposed as a text field.\n\nAuthors MUST limit the children of a textbox to non-interactive, entirely presentational elements such as icons used to visually convey information that is already exposed in an accessible manner. Examples include:\n\nIn most user agent implementations, the default behavior of the ENTER or RETURN key is different between the single-line and multi-line text fields in HTML. When user has focus in a single-line <input type=\"text\"> element, the keystroke usually submits the form. When user has focus in a multi-line <textarea> element, the keystroke inserts a line break. The WAI-ARIA textbox role differentiates these types of boxes with the aria-multiline attribute, so authors are advised to be aware of this distinction when designing the field.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete"
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiline"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-placeholder"
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "time",
						"description": "An element that represents a specific point in time.\n\nAt the present time, there are no WAI-ARIA properties corresponding to the datetime attribute supported on <time> in HTML. The addition of this property will be considered for ARIA version 1.3.\n\nAuthors SHOULD limit text contents to a valid date- or time-related string, or apply this future datetime-equivalent property to the element which has role time.\n\nExamples of valid date- or time-related strings as text contents of an element with the time role:",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-braillelabel", "aria-label", "aria-labelledby"]
					},
					{
						"name": "timer",
						"description": "A section of content containing a numerical counter which indicates an amount of elapsed time from a start point, or the time remaining until an end point.\n\nThe text contents of the timer object indicate the current time measurement, and are updated as that amount changes. The timer value is not necessarily machine parsable, but authors SHOULD update the text contents at fixed intervals, except when the timer is paused or reaches an end-point.",
						"generalization": ["status"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "toolbar",
						"description": "A collection of commonly used function buttons or controls represented in compact visual form.\n\nThe toolbar is often a subset of functions found in a menubar, designed to reduce user effort in using these functions. Authors MUST supply a label on each toolbar when the application contains more than one toolbar.\n\nAuthors MAY manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role toolbar have an implicit aria-orientation value of horizontal.",
						"generalization": ["group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tooltip",
						"description": "A contextual popup that displays a description for an element.\n\nThe tooltip typically becomes visible, after a short delay, in response to a mouse hover, or after the accessibility parent receives keyboard focus. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.\n\nTypical tooltip delays last from one to five seconds.\n\nAuthors SHOULD ensure that elements with the role tooltip are referenced through the use of aria-describedby before or at the time the tooltip is displayed.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tree",
						"description": "A widget that allows the user to select one or more items from a hierarchically organized collection.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role tree have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["treeitem"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "treegrid",
						"description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.",
						"generalization": ["grid", "tree"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["caption", "row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "treeitem",
						"description": "An item in a tree.\n\nA treeitem element can contain a sub-level group of elements that can be expanded or collapsed. An expandable collection of treeitem elements are enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are accessibility children of an element with role tree or an element with role group that is the accessibility child of an element with role treeitem.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each treeitem in a tree, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be true if the treeitem has DOM focus or the tree has DOM focus and the treeitem is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be false.\n\nAuthors MAY indicate selection for treeitem elements using either aria-selected or aria-checked. Some user interfaces indicate selection with aria-selected in single-select trees and with aria-checked in multi-select trees. Authors SHOULD NOT specify both aria-selected and aria-checked on treeitem elements contained by the same tree except in the extremely rare circumstances where all the following conditions are met:",
						"generalization": ["listitem", "option"],
						"requiredContextRole": ["tree", "treeitem > group"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "widget",
						"description": "An interactive component of a graphical user interface (GUI).\n\nWidgets are discrete user interface objects with which the user can interact. Widget roles map to standard features in accessibility APIs. When the user navigates an element assigned any of the non-abstract subclass roles of widget, assistive technologies that typically intercept standard keyboard events SHOULD switch to an application browsing mode, and pass keyboard events through to the web application. The intent is to hint to certain assistive technologies to switch from normal browsing mode into a mode more appropriate for interacting with a web application; some user agents have a browse navigation mode where keys, such as up and down arrows, are used to browse the document, and this native behavior prevents the use of these keys by a web application.\n\nwidget is an abstract role used for the ontology. Authors MUST NOT use widget role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "window",
						"description": "A browser or application window.\n\nElements with this role have a window-like behavior in a graphical user interface (GUI) context, regardless of whether they are implemented as a native window in the operating system, or merely as a section of the document styled to look like a window.\n\nwindow is an abstract role used for the ontology. Authors MUST NOT use window role in content.\n\nIn the description of this role, the term \"application\" does not refer to the application role, which specifies specific assistive technology behaviors.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					}
				],
				"props": [
					{
						"name": "aria-activedescendant",
						"type": "property",
						"value": "ID reference",
						"enum": []
					},
					{
						"name": "aria-atomic",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Assistive technologies will present only the changed node or nodes.",
							"true": "Assistive technologies will present the entire changed region as a whole, including the author-defined label if one exists."
						}
					},
					{
						"name": "aria-autocomplete",
						"type": "property",
						"value": "token",
						"enum": ["inline", "list", "both", "none"],
						"defaultValue": "none",
						"valueDescriptions": {
							"inline": "When a user is providing input, text suggesting one way to complete the provided input might be dynamically inserted after the caret.",
							"list": "When a user is providing input, an element containing a collection of values that could complete the provided input might be displayed.",
							"both": "When a user is providing input, an element containing a collection of values that could complete the provided input might be displayed. If displayed, one value in the collection is automatically selected, and the text needed to complete the automatically selected value appears after the caret in the input.",
							"none": "When a user is providing input, an automatic suggestion that attempts to predict how the user intends to complete the input is not displayed."
						}
					},
					{
						"name": "aria-braillelabel",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-brailleroledescription",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-busy",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "There are no expected updates for the element.",
							"true": "The element is being updated."
						}
					},
					{
						"name": "aria-checked",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "undefined",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "checked",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The element supports being checked but is not currently checked.",
							"mixed": "Indicates a mixed mode value for a tri-state checkbox or menuitemcheckbox.",
							"true": "The element is checked.",
							"undefined": "The element does not support being checked."
						},
						"conditionalValue": [
							{
								"role": ["checkbox", "menuitemcheckbox"],
								"value": "tristate"
							}
						]
					},
					{
						"name": "aria-colcount",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-colindex",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-colindextext",
						"type": "property",
						"value": "string",
						"enum": []
					},
					{
						"name": "aria-colspan",
						"type": "property",
						"value": "integer",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "colspan",
								"value": null
							}
						]
					},
					{
						"name": "aria-controls",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-current",
						"type": "state",
						"value": "token",
						"enum": ["page", "step", "location", "date", "time", "true", "false"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"page": "Represents the current page within a set of pages.",
							"step": "Represents the current step within a process.",
							"location": "Represents the current location within an environment or context.",
							"date": "Represents the current date within a collection of dates.",
							"time": "Represents the current time within a set of times.",
							"true": "Represents the current item within a set.",
							"false": "Does not represent the current item within a set."
						}
					},
					{
						"name": "aria-describedby",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-description",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-details",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-disabled",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "disabled",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The element is enabled.",
							"true": "The element and all focusable descendants are disabled and its value cannot be changed by the user."
						}
					},
					{
						"name": "aria-dropeffect",
						"type": "property",
						"deprecated": true,
						"value": "token list",
						"enum": ["copy", "execute", "link", "move", "none", "popup"],
						"defaultValue": "none",
						"isGlobal": true,
						"valueDescriptions": {
							"copy": "A duplicate of the source object will be dropped into the target.",
							"execute": "A function supported by the drop target is executed, using the drag source as an input.",
							"link": "A reference or shortcut to the dragged object will be created in the target object.",
							"move": "The source object will be removed from its current location and dropped into the target.",
							"none": "No operation can be performed; effectively cancels the drag operation if an attempt is made to drop on this object. Ignored if combined with any other token value. e.g., 'none copy' is equivalent to a 'copy' value.",
							"popup": "There is a popup menu or dialog that allows the user to choose one of the drag operations (copy, move, link, execute) and any other drag functionality, such as cancel."
						}
					},
					{
						"name": "aria-errormessage",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-expanded",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The grouping element this element controls or is the accessibility parent of is collapsed.",
							"true": "The grouping element this element controls or is the accessibility parent of is expanded.",
							"undefined": "The element does not own or control a grouping element that is expandable."
						}
					},
					{
						"name": "aria-flowto",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-grabbed",
						"type": "state",
						"deprecated": true,
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Indicates that the element supports being dragged.",
							"true": "Indicates that the element has been \"grabbed\" for dragging.",
							"undefined": "Indicates that the element does not support being dragged."
						}
					},
					{
						"name": "aria-haspopup",
						"type": "property",
						"value": "token",
						"enum": ["false", "true", "menu", "listbox", "tree", "grid", "dialog"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Indicates the element does not have a popup.",
							"true": "Indicates the popup is a menu.",
							"menu": "Indicates the popup is a menu.",
							"listbox": "Indicates the popup is a listbox.",
							"tree": "Indicates the popup is a tree.",
							"grid": "Indicates the popup is a grid.",
							"dialog": "Indicates the popup is a dialog."
						}
					},
					{
						"name": "aria-hidden",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"isGlobal": true,
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "hidden",
								"value": "true",
								"isNotStrictEquivalent": true
							}
						],
						"valueDescriptions": {
							"false": "The element's hidden state is determined by the user agent based on whether it is rendered. Synonym of undefined.",
							"true": "The element is hidden from the accessibility API.",
							"undefined": "The element's hidden state is determined by the user agent based on whether it is rendered."
						}
					},
					{
						"name": "aria-invalid",
						"type": "state",
						"value": "token",
						"enum": ["grammar", "false", "spelling", "true"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"grammar": "A grammatical error was detected.",
							"false": "There are no detected errors in the value.",
							"spelling": "A spelling error was detected.",
							"true": "The value entered by the user has failed validation."
						}
					},
					{
						"name": "aria-keyshortcuts",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-label",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-labelledby",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-level",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-live",
						"type": "property",
						"value": "token",
						"enum": ["assertive", "off", "polite"],
						"defaultValue": "off",
						"isGlobal": true,
						"valueDescriptions": {
							"assertive": "Indicates that updates to the region have the highest priority and should be presented the user immediately.",
							"off": "Indicates that updates to the region will not be presented to the user.",
							"polite": "Indicates that updates to the region should be presented at the next graceful opportunity, such as at the end of speaking the current sentence or when the user pauses typing."
						}
					},
					{
						"name": "aria-modal",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "Element is not modal.",
							"true": "Element is modal."
						}
					},
					{
						"name": "aria-multiline",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "This is a single-line text box.",
							"true": "This is a multi-line text box."
						}
					},
					{
						"name": "aria-multiselectable",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "Only one item can be selected.",
							"true": "More than one item in the widget can be selected at a time."
						}
					},
					{
						"name": "aria-orientation",
						"type": "property",
						"value": "token",
						"enum": ["horizontal", "undefined", "vertical"],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"horizontal": "The element is oriented horizontally.",
							"undefined": "The element's orientation is unknown/ambiguous.",
							"vertical": "The element is oriented vertically."
						}
					},
					{
						"name": "aria-owns",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-placeholder",
						"type": "property",
						"value": "string",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "placeholder",
								"value": null
							}
						]
					},
					{
						"name": "aria-posinset",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-pressed",
						"type": "state",
						"value": "tristate",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The element supports being pressed but is not currently pressed.",
							"mixed": "Indicates a mixed mode value for a tri-state toggle button.",
							"true": "The element is pressed.",
							"undefined": "The element does not support being pressed."
						}
					},
					{
						"name": "aria-readonly",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "readonly",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The user can set the value of the element.",
							"true": "The user cannot change the value of the element."
						}
					},
					{
						"name": "aria-relevant",
						"type": "property",
						"value": "token list",
						"enum": ["additions", "additions text", "all", "removals", "text"],
						"defaultValue": "additions text",
						"isGlobal": true,
						"valueDescriptions": {
							"additions": "Element nodes are added to the accessibility tree within the live region.",
							"additions text": "Equivalent to the combination of values, \"additions text\".",
							"all": "Equivalent to the combination of all values, \"additions removals text\".",
							"removals": "Text content, a text alternative, or an element node within the live region is removed from the accessibility tree.",
							"text": "Text content or a text alternative is added to any descendant in the accessibility tree of the live region."
						}
					},
					{
						"name": "aria-required",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "required",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "User input is not necessary to submit the form.",
							"true": "Users need to provide input on an element before a form is submitted."
						}
					},
					{
						"name": "aria-roledescription",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-rowcount",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-rowindex",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-rowindextext",
						"type": "property",
						"value": "string",
						"enum": []
					},
					{
						"name": "aria-rowspan",
						"type": "property",
						"value": "integer",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "rowspan",
								"value": null
							}
						]
					},
					{
						"name": "aria-selected",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The selectable element is not selected.",
							"true": "The selectable element is selected.",
							"undefined": "The element is not selectable."
						}
					},
					{
						"name": "aria-setsize",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-sort",
						"type": "property",
						"value": "token",
						"enum": ["ascending", "descending", "none", "other"],
						"defaultValue": "none",
						"valueDescriptions": {
							"ascending": "Items are sorted in ascending order.",
							"descending": "Items are sorted in descending order.",
							"none": "There is no defined sort applied.",
							"other": "A sort algorithm other than ascending or descending has been applied."
						}
					},
					{
						"name": "aria-valuemax",
						"type": "property",
						"value": "number",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "max",
								"value": null
							}
						]
					},
					{
						"name": "aria-valuemin",
						"type": "property",
						"value": "number",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "min",
								"value": null
							}
						]
					},
					{
						"name": "aria-valuenow",
						"type": "property",
						"value": "number",
						"enum": []
					},
					{
						"name": "aria-valuetext",
						"type": "property",
						"value": "string",
						"enum": []
					}
				],
				"graphicsRoles": [
					{
						"name": "graphics-document",
						"description": "A type of document in which the visual appearance or layout of content conveys meaning.\n\nSimilar to other document types, the graphics-document role applies to the root element of a region of the page containing related information, where the user's primary interaction mode is expected to be browsing the document rather than controlling an application. The element with this role may be the root element of the document file, or of a nested structure within it.\n\nThe graphics-document may be distinguished from similar roles as follows:\n\nRelative to other documents, a graphics-document is distinguished by the semantic importance of its visual (usually two-dimensional) representation. User agents and assistive technologies SHOULD take this into consideration when supporting navigation of the graphic. Accessibility technologies that re-format or re-style a document SHOULD NOT alter the layout of a graphics-document except in ways that are consistent with the semantic roles and relationships of its content.\n\nRelative to an img, a graphics-document is distinguished by the structured nature of its content. Its child elements may have semantic meaning, and may include links or other interactive widgets.\n\nRelative to a graphics-object, a graphics-document is self-contained. Its meaning persists when separated from surrounding content. The element with the graphics-document role defines the scope and context for interpretation of the child content.\n\nIn general, authors SHOULD use the graphics-document role for structured graphics such as charts, maps, diagrams, technical drawing, blue prints and instructional graphics. However, if a single large graphic has discrete regions that may be safely re-arranged without sacrificing meaning, each of those regions SHOULD be a distinct graphics-document. An alternative role (such as figure) may be used to group them together. One graphics-document may also be nested inside another, for example a bar chart that is embedded in a map or a matrix of chart panels should have a role of graphics-document. The nested document provides encapsulation; navigation between components of the inner and outer graphics should be explicit.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the document role as a fallback value, in the form role=\"graphics-document document\".\n\nFuture specifications may define more specific roles for particular types of graphical documents with special semantic structures. Those more specific roles would be subclasses of graphics-document.\n\nAn SVG diagram of an electrical circuit is a simple graphical document:",
						"generalization": ["document"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "graphics-object",
						"description": "A section of a graphics-document that represents a distinct object or sub-component with semantic meaning. A graphical object may itself have nested sub-components.\n\nContainer elements that represent a collection of disconnected objects should be given the group or list roles, instead. Grouping elements that do not have semantic meaning and do not alter the semantic context provided by an ancestor (for example, a div or SVG g that is only used for styling or layout) SHOULD NOT be given a role. The lack of role may be explicitly indicated with the role none or presentation.\n\nUnlike a graphics-document, a graphics-object need not be self-contained, and it does not establish a new context for navigation. However, user agents and assistive technologies SHOULD provide a way for users, particularly non-visual users, to navigate the nested structure of objects in a hierarchical manner, similar to nested lists.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the group role as a fallback value, in the form role=\"graphics-object group\".\n\nThe code that follows is a portion of the markup for a structured graphic. It includes SVG g grouping elements with various roles:\n\nWhere a graphical object has multiple sub-components, the group role is provided as an explicit fallback.",
						"generalization": ["group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "graphics-symbol",
						"description": "A graphical object used to convey a simple meaning or category, where the meaning is more important than the particular visual appearance. It may be a component of a larger structured graphic such as a chart or map. The symbol itself is an atomic object; children are presentational.\n\nWhen used as part of a structured symbolic language, the aria-roledescription property (introduced in ARIA 1.1 [WAI-ARIA-1.1]) can be used to name the symbol type separately from the name and description for the particular instance of the symbol.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the img role as a fallback value, in the form role=\"graphics-symbol img\", if that is not already the default semantic role for the element.\n\nWithin an HTML document for a restaurant menu, an img element can represent a repeated symbol:\n\nWithin an SVG diagram of an electrical circuit, the graphics that represent batteries, switches, and loads like this lightbulb are each symbols:\n\nNote that the visible text must be included in the label for its parent symbol, in this example. As the child of a graphics-symbol, it is treated as presentational content, and is therefore not accessible as a separate element of the graphic.\n\nWithin an architectural blueprint-style SVG diagram, each SVG use element that creates a copy of a simple SVG symbol is a graphics-symbol:",
						"generalization": ["img"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					}
				]
			},
			"1.2": {
				"roles": [
					{
						"name": "alert",
						"description": "A type of live region with important, and usually time-sensitive, information. See related alertdialog and status.\n\nAlerts are used to convey messages that may be immediately important to users. In the case of audio warnings, alerts provide an accessible alternative for hearing-impaired users. The alert role is applied to the element containing the alert message. An alert is a specialized form of the status role, which is processed as an atomic live region.\n\nAlerts are assertive live regions, which means they cause immediate notification for assistive technology users. If the operating system allows, the user agent SHOULD fire a system alert event through the accessibility API when the WAI-ARIA alert is created.\n\nNeither authors nor user agents are required to set or manage focus to an alert in order for it to be processed. Since alerts are not required to receive focus, authors SHOULD NOT require users to close an alert. If an author desires focus to move to a message when it is conveyed, the author SHOULD use alertdialog instead of alert.\n\nElements with the role alert have an implicit aria-live value of assertive, and an implicit aria-atomic value of true.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "alertdialog",
						"description": "A type of dialog that contains an alert message, where initial focus goes to an element within the dialog. See related alert and dialog.\n\nAlert dialogs are used to convey messages to alert the user. The alertdialog role goes on the node containing both the alert message and the rest of the dialog. Content authors SHOULD make alert dialogs modal by ensuring that, while the alertdialog is shown, keyboard and mouse interactions only operate within the dialog. See aria-modal.\n\nUnlike alert, alertdialog can receive a response from the user. For example, to confirm that the user understands the alert being generated. When the alert dialog is displayed, authors SHOULD set focus to an active element within the alert dialog, such as a form control or confirmation button. The user agent SHOULD fire a system alert event through the accessibility API when the alert is created, provided one is specified by the intended accessibility API.\n\nAuthors SHOULD use aria-describedby on an alertdialog to reference the alert message element in the dialog. If they do not, an assistive technology can resort to its internal recovery mechanism to determine the contents of the alert message.",
						"generalization": ["alert", "dialog"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "application",
						"description": "A structure containing one or more focusable elements requiring user input, such as keyboard or gesture events, that do not follow a standard interaction pattern supported by a widget role.\n\nSome user agents and assistive technologies have a browse mode where standard input events, such as up and down arrow key events, are intercepted and used to control a reading cursor. This browse mode behavior prevents elements that do not have a widget role from receiving and using such keyboard and gesture events to provide interactive functionality.\n\nWhen there is a need to create an element with an interaction model that is not supported by any of the WAI-ARIA widget roles, authors MAY give that element role application. And, when a user navigates into an element with role application, assistive technologies that intercept standard input events SHOULD switch to a mode that passes most or all standard input events through to the web application.\n\nFor example, a presentation slide editor uses arrow keys to change the positions of textbox and image elements on the slide. There are not any WAI-ARIA widget roles that correspond to such an interaction model so an author could give the slide container role application, an aria-roledescription of \"Slide Editor\", and use aria-describedby to provide instructions.\n\nBecause only the focusable elements contained in an application element are accessible to users of some assistive technologies, authors MUST use one of the following techniques to ensure all non-decorative static text or image content inside an application is accessible:",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "article",
						"description": "A section of a page that consists of a composition that forms an independent part of a document, page, or site.\n\nAn article is not a navigational landmark, but may be nested to form a discussion where assistive technologies could pay attention to article nesting to assist the user in following the discussion. An article could be a forum post, a magazine or newspaper article, a web log entry, a user-submitted comment, or any other independent item of content. It is independent in that its contents could stand alone, for example in syndication. However, the element is still associated with its ancestors; for instance, contact information that applies to a parent body element still covers the article as well. When nesting articles, the child articles represent content that is related to the content of the parent article. For instance, a web log entry on a site that accepts user-submitted comments could represent the comments as articles nested within the article for the web log entry. Author, heading, date, or other information associated with an article does not apply to nested articles.\n\nWhen the user navigates to an element assigned the role of article, assistive technologies that typically intercept standard keyboard events SHOULD switch to document browsing mode, as opposed to passing keyboard events through to the web application. Assistive technologies MAY provide a feature allowing the user to navigate the hierarchy of any nested article elements.\n\nWhen an article is in the context of a feed, the author MAY specify values for aria-posinset and aria-setsize.",
						"generalization": ["document"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "banner",
						"description": "A landmark that contains mostly site-oriented content, rather than page-specific content.\n\nSite-oriented content typically includes things such as the logo or identity of the site sponsor, and a site-specific search tool. A banner usually appears at the top of the page and typically spans the full width.\n\nUser agents SHOULD treat elements with the role of banner as navigational landmarks.\n\nWithin any document or application, the author SHOULD mark no more than one element with the banner role.\n\nBecause document and application elements can be nested in the DOM, they may have multiple banner elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "blockquote",
						"description": "A section of content that is quoted from another source.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "button",
						"description": "An input that allows for user-triggered actions when clicked or pressed. See related link.\n\nButtons are mostly used for discrete actions. Standardizing the appearance of buttons enhances the user's recognition of the widgets as buttons and allows for a more compact display in toolbars.\n\nButtons support the optional attribute aria-pressed. Buttons with a non-empty aria-pressed attribute are toggle buttons. When aria-pressed is true the button is in a \"pressed\" state, when aria-pressed is false it is not pressed. If the attribute is not present, the button is a simple command button.",
						"generalization": ["command"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-pressed"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "caption",
						"description": "Visible content that names, and may also describe, a figure, table, grid, or treegrid.\n\nWhen using caption authors SHOULD ensure:\n\nAuthors SHOULD set aria-labelledby on the parent figure, table, grid, or treegrid to reference the element with role caption. However, if a caption contains content that serves as both a name and description for its parent, authors MAY instead set aria-labelledby to reference an element within the caption that contains a concise name, and set aria-describedby to reference an element within the caption that contains the descriptive content.",
						"generalization": ["section"],
						"requiredContextRole": ["figure", "grid", "table", "treegrid"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "cell",
						"description": "A cell in a tabular container. See related gridcell.\n\nAuthors MUST ensure elements with role cell are contained in, or owned by, an element with the role row.",
						"generalization": ["section"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex"
							},
							{
								"name": "aria-colspan"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex"
							},
							{
								"name": "aria-rowspan"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "checkbox",
						"description": "A checkable input that has three possible values: true, false, or mixed.\n\nThe aria-checked attribute of a checkbox indicates whether the input is checked (true), unchecked (false), or represents a group of elements that have a mixture of checked and unchecked values (mixed). Many checkboxes do not use the mixed value, and thus are effectively boolean checkboxes.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "code",
						"description": "A section whose content represents a fragment of computer code.\n\nThe primary purpose of the code role is to inform assistive technologies that the content is computer code and thus may require special presentation, in particular with respect to synthesized speech. More specifically, screen readers and other tools which provide text-to-speech presentation of content SHOULD prefer full punctuation verbosity to ensure common symbols (e.g. \"-\") are spoken.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "columnheader",
						"description": "A cell containing header information for a column.\n\ncolumnheader can be used as a column header in a table or grid. It could also be used in a pie chart to show a similar relationship in the data.\n\nThe columnheader establishes a relationship between it and all cells in the corresponding column. It is the structural equivalent to an HTML th element with a column scope.\n\nAuthors MUST ensure elements with role columnheader are contained in, or owned by, an element with the role row.\n\nApplying the aria-selected state on a columnheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding column. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the columnheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a columnheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the columnheader descends from a grid.\n\nBecause cells are organized into rows, there is not a single container element for the column. The column is the set of gridcell elements in a particular position within their respective row containers.\n\nWhile aria-disabled is currently supported on columnheader, in a future version the working group plans to prohibit its use on elements with role columnheader except when the element is in the context of a grid or treegrid.",
						"generalization": ["cell", "gridcell", "sectionhead"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-sort"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "combobox",
						"description": "An input that controls another element, such as a listbox or grid, that can dynamically pop up to help the user set the value of the input.\n\nThe Guidance for combobox has changed significantly in ARIA 1.2 due to problems with implementation of the previous patterns. Authors and developers of User Agents, Assistive Technologies, and Conformance Checkers are advised to review this section carefully to understand the changes. Explanation of the changes is available in the ARIA repository wiki.\n\nA combobox functionally combines a named input field with the ability to assist value selection via a supplementary popup element. A combobox input MAY be either a single-line text field that supports editing and typing or an element that only displays the current value of the combobox. If the combobox supports text input and provides autocompletion behavior as described in aria-autocomplete, authors MUST set aria-autocomplete on the combobox element to the value that corresponds to the provided behavior.\n\nTypically, the initial state of a combobox is collapsed. In the collapsed state, only the combobox element and a separate, optional popup control button are visible. A combobox is said to be expanded when both the combobox element showing its current value and its associated popup element are visible. Authors MUST set aria-expanded to true on an element with role combobox when it is expanded and false when it is collapsed.\n\nAuthors MUST ensure the popup element associated with a combobox has a role of listbox, tree, grid, or dialog. Authors MUST set aria-controls on a combobox element to a value that refers to the combobox popup element.\n\nElements with the role combobox have an implicit aria-haspopup value of listbox. If the combobox popup element has a role other than listbox, authors MUST specify a value for aria-haspopup that corresponds to the role of its popup.\n\nIf the user interface includes an additional icon that allows the visibility of the popup to be controlled via pointer and touch events, authors SHOULD ensure that element has role button, that it is focusable but not included in the page Tab sequence, and that it is not a descendant of the element with role combobox. In addition, to be keyboard accessible, authors SHOULD provide keyboard mechanisms for moving focus between the combobox element and elements contained in the popup. For example, one common convention is that Down Arrow moves focus from the input to the first focusable descendant of the popup element. If the popup element supports aria-activedescendant, in lieu of moving focus, such keyboard mechanisms can control the value of aria-activedescendant on the combobox element. When a descendant of the popup element is active, authors MAY set aria-activedescendant on the combobox to a value that refers to the active element within the popup while focus remains on the combobox element.\n\nUser agents MUST expose the value of elements with role combobox to assistive technologies. The value of a combobox is represented by one of the following:\n\nPlease review the following carefully. As a result of these changes a combobox following the ARIA 1.1 combobox specification will no longer conform with the ARIA specification.\n\nThe structural requirements for combobox defined by this version of the specification are different from the requirements defined by ARIA 1.0 and ARIA 1.1:\n\nThe features and behaviors of combobox implementations vary widely. Consequently, there are many important authoring considerations. See the WAI-ARIA Authoring Practices for additional details on implementing combobox design patterns.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete"
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"required": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded",
								"required": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "command",
						"description": "A form of widget that performs an action but does not receive input data.\n\ncommand is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "complementary",
						"description": "A landmark that is designed to be complementary to the main content at a similar level in the DOM hierarchy, but remaining meaningful when separated from the main content.\n\nThere are various types of content that would appropriately have this role. For example, in the case of a portal, this may include but not be limited to show times, current weather, related articles, or stocks to watch. The complementary role indicates that contained content is relevant to the main content. If the complementary content is completely separable from the main content, it may be appropriate to use a more general role.\n\nUser agents SHOULD treat elements with the role of complementary as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "composite",
						"description": "A widget that may contain navigable descendants or owned children.\n\nAuthors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to elements that are descendants or owned children of the composite element.\n\ncomposite is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "contentinfo",
						"description": "A landmark that contains information about the parent document.\n\nExamples of information included in this region of the page are copyrights and links to privacy statements.\n\nUser agents SHOULD treat elements with the role of contentinfo as navigational landmarks.\n\nWithin any document or application, the author SHOULD mark no more than one element with the contentinfo role.\n\nBecause document and application elements can be nested in the DOM, they may have multiple contentinfo elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "definition",
						"description": "A definition of a term or concept. See related term.\n\nAuthors SHOULD identify the element being defined by giving that element a role of term and referencing it with the aria-labelledby attribute or by making the element with role term a descendant of the element with role definition.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "deletion",
						"description": "A deletion contains content that is marked as removed or content that is being suggested for removal. See related insertion.\n\nDeletions are typically used to either mark differences between two versions of content or to designate content suggested for removal in scenarios where multiple people are revising content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "dialog",
						"description": "A dialog is a descendant window of the primary window of a web application. For HTML pages, the primary application window is the entire web document, i.e., the body element.\n\nDialogs are most often used to prompt the user to enter or respond to information. A dialog that is designed to interrupt workflow is usually modal. See related alertdialog.\n\nAuthors MUST provide an accessible name for a dialog, which can be done with the aria-label or aria-labelledby attribute.\n\nAuthors SHOULD ensure that all dialogs (both modal and non-modal) have at least one focusable descendant element. Authors SHOULD focus an element in the modal dialog when it is displayed, and authors SHOULD manage focus of modal dialogs.\n\nIn the description of this role, the term \"web application\" does not refer to the application role, which specifies specific assistive technology behaviors.",
						"generalization": ["window"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "directory",
						"description": "[Deprecated in ARIA 1.2] A list of references to members of a group, such as a static table of contents.\n\nAs exposed by accessibility APIs, the directory role is essentially equivalent to the list role. So, using directory does not provide any additional benefits to assistive technology users. Authors are advised to treat directory as deprecated and to use list, or a host language's equivalent semantics instead.\n\nA directory is a static table of contents, whether linked or unlinked. This includes tables of contents built with lists, including nested lists. Dynamic tables of contents, however, might use a tree role instead.",
						"deprecated": true,
						"generalization": ["list"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "document",
						"description": "An element containing content that assistive technology users may want to browse in a reading mode.\n\nWhen user agent focus moves to an element assigned the role of document, assistive technologies having a reading mode for browsing static content MAY switch to that reading mode and intercept standard input events, such as Up or Down arrow keyboard events, to control the reading cursor.\n\nBecause assistive technologies that have a reading mode default to that mode for all elements except for those with either a widget or application role, the only circumstance where the document role is useful for changing assistive technology behavior is when the element with role document is a focusable child element of a widget or application. For example, given an application element which contains some static rich text, the author can apply role document to the element containing the text and give it a tabindex of 0. When a screen reader user presses the Tab key and places focus on the document element, the user will be able to read the text with the screen reader's reading cursor.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "emphasis",
						"description": "One or more emphasized characters. See related strong.\n\nThe purpose of the emphasis role is to stress or emphasize content. It is not for communicating changes in typographical presentation that do not impact the meaning of the content. Authors SHOULD use the emphasis role only if its absence would change the meaning of the content.\n\nThe emphasis role is not intended to convey importance; for that purpose, the strong role is more appropriate.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "feed",
						"description": "A scrollable list of articles where scrolling may cause articles to be added to or removed from either end of the list.\n\nA feed enables users of assistive technologies that have a document browse mode, such as screen readers, to use the browse mode reading cursor to both read and scroll through a stream of rich content that may continue scrolling infinitely by loading more content as the user reads. In a feed, assistive technologies provide a web application with signals of the user's reading cursor movement by moving user agent focus, enabling the application to both add new content and visually position content as the user browses the page. The feed also lets authors inform assistive technologies when additions and removals are occurring so assistive technologies can more reliably update their reading view without disrupting reading or degrading performance.\n\nFor example, a feed could be used to present a stream of news stories where each article contains a story with text, links, images, and comments as well as widgets for sharing and commenting. As a screen reader user reads and interacts with each story and moves the screen reader reading cursor from story to story, each story scrolls into view and, as needed, new stories are loaded.\n\nA feed is a container element whose children have role article. When articles are added or removed from either or both ends of a feed, authors SHOULD set aria-busy to true on the feed element before the changes are made and set it to false after the changes are complete. Authors SHOULD avoid inserting or removing articles in the middle of a feed. These requirements help assistive technologies gracefully respond to changes in the feed content that occur simultaneously with user commands to move the reading cursor within the feed.\n\nAuthors SHOULD make each article in a feed focusable and ensure that the application scrolls an article into view when user agent focus is set on the article or one of its descendant elements. For example, in HTML, each article element should have a tabindex value of either -1 or 0.\n\nWhen an assistive technology reading cursor moves from one article to another, assistive technologies SHOULD set user agent focus on the article that contains the reading cursor. If the reading cursor lands on a focusable element inside the article, the assistive technology MAY set focus on that element in lieu of setting focus on the containing article.\n\nBecause the ability to scroll to another article with an assistive technology reading cursor depends on the presence of another article in the page, authors SHOULD attempt to load additional articles before user agent focus reaches an article at either end of the set of articles that has been loaded. Alternatively, authors MAY include an article at either or both ends of the loaded set of articles that includes an element, such as a button, that lets the user request more articles to be loaded.\n\nIn addition to providing a brief label, authors MAY apply aria-describedby to article elements in a feed to suggest to screen readers which elements to speak after the label when users navigate by article. Screen readers MAY provide users with a way to quickly scan feed content by speaking both the label and accessible description when navigating by article, enabling the user to ignore repetitive or less important elements, such as embedded interaction widgets, that the author has left out of the description.\n\nAuthors SHOULD provide keyboard commands for moving focus among articles in a feed so users who do not utilize an assistive technology that provides article navigation features can use the keyboard to navigate the feed.\n\nIf the number of articles available in a feed supply is static, authors MAY specify aria-setsize on article elements in that feed. However, if the total number is extremely large, indefinite, or changes often, authors MAY set aria-setsize to -1 to communicate the unknown size of the set.\n\nSee the WAI-ARIA Authoring Practices for additional details on implementing a feed design pattern.",
						"generalization": ["list"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["article"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "figure",
						"description": "A perceivable section of content that typically contains a graphical document, images, code snippets, or example text. The parts of a figure MAY be user-navigable.\n\nAuthors SHOULD provide a reference to the figure from the main text, but the figure need not be displayed at the same location as the referencing element. Authors MAY reference text serving as a caption using aria-describedby. Authors MAY provide a label using aria-label or MAY reference text serving as a label using aria-labelledby.\n\nAssistive technologies SHOULD enable users to quickly navigate to figures. Mainstream user agents MAY enable users to quickly navigate to figures.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "form",
						"description": "A landmark region that contains a collection of items and objects that, as a whole, combine to create a form. See related search.\n\nA form may contain a mix of host language form controls, scripted controls, and hyperlinks. Authors are reminded to use native host language semantics to create form controls whenever possible. If the purpose of a form is to submit search criteria, authors SHOULD use the search role instead of the generic form role.\n\nAuthors MUST give each element with role form a brief label that describes the purpose of the form. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present. Authors SHOULD include the label inside of a heading whenever possible. The heading MAY be an instance of the standard host language heading element or an instance of an element with role heading.\n\nIf an author uses a script to submit a form based on a user action that would otherwise not trigger an onsubmit event (for example, a form submission triggered by the user changing a form element's value), the author SHOULD provide the user with advance notification of the behavior.\n\nUser agents SHOULD treat elements with the role of form as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "generic",
						"description": "A nameless container element that has no semantic meaning on its own.\n\nThe generic role is intended for use as the implicit role of generic elements in host languages (such as HTML div or span), so is primarily for implementors of user agents. Authors SHOULD NOT use this role in content. Authors MAY use presentation or none to remove implicit accessibility semantics, or a semantic container role such as group to semantically group descendants in a named container.\n\nLike an element with role presentation, an element with role generic can provide a limited number of accessible states and properties for its descendants, such as aria-live attributes. However, unlike elements with role presentation, generic elements are exposed in accessibility APIs so that assistive technologies can gather certain properties such as layout and bounds.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby", "aria-roledescription"]
					},
					{
						"name": "grid",
						"description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It may be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are owned by elements with role row, which are in turn owned by an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key may switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell may show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements owned by the grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nSee the WAI-ARIA Authoring Practices for additional details on implementing grid design patterns.",
						"generalization": ["composite", "table"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "gridcell",
						"description": "A cell in a grid or treegrid.\n\nA gridcell may be focusable, editable, and selectable. A gridcell may have relationships such as aria-controls to address the application of functional relationships.\n\nIf an author intends a gridcell to have a row header, column header, or both, and if the relevant headers cannot be determined from the DOM structure, authors SHOULD explicitly indicate which header cells are relevant to the gridcell by applying aria-describedby on the gridcell and referencing elements with role rowheader or columnheader.\n\nIn a treegrid, authors MAY define a gridcell as expandable by using the aria-expanded attribute. If the aria-expanded attribute is provided, it applies only to the individual cell. It is not a proxy for the container row, which also can be expanded. The main use case for providing this attribute on a gridcell is pivot table behavior.\n\nAuthors MUST ensure elements with role gridcell are contained in, or owned by, an element with the role row.",
						"generalization": ["cell", "widget"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "group",
						"description": "A set of user interface objects that is not intended to be included in a page summary or table of contents by assistive technologies.\n\nContrast with region, which is a grouping of user interface objects that will be included in a page summary or table of contents.\n\nAuthors SHOULD use a group to form a logical collection of items in a widget, such as children in a tree widget forming a collection of siblings in a hierarchy. However, when a group is used in the context of a listbox, authors MUST limit its children to option elements. Therefore, proper handling of group by authors and assistive technologies is determined by the context in which it is provided.\n\nAuthors MAY nest group elements. If a section is significant enough to warrant inclusion in the web page's table of contents, the author SHOULD assign it a role of region or a standard landmark role.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "heading",
						"description": "A heading for a section of the page.\n\nTo ensure elements with a role of heading are organized into a logical outline, authors MUST use the aria-level attribute to indicate the proper nesting level.",
						"generalization": ["sectionhead"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level",
								"required": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "img",
						"description": "A container for a collection of elements that form an image.\n\nAn img can contain captions and descriptive text, as well as multiple image files that when viewed together give the impression of a single image. An img represents a single graphic within a document, whether or not it is formed by a collection of drawing objects. In order for elements with a role of img to be perceivable, authors MUST provide a label using the aria-label or aria-labelledby attribute.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "input",
						"description": "A generic type of widget that allows user input.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "insertion",
						"description": "An insertion contains content that is marked as added or content that is being suggested for addition. See related deletion.\n\nInsertions are typically used to either mark differences between two versions of content or to designate content suggested for addition in scenarios where multiple people are revising content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "landmark",
						"description": "A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology.\n\nAuthors designate the purpose of the content by assigning a role that is a subclass of the landmark role and, when needed, by providing a brief, descriptive label.\n\nElements with a role that is a subclass of the landmark role are known as landmark regions or navigational landmark regions. Assistive technologies SHOULD enable users to quickly navigate to landmark regions. Mainstream user agents MAY enable users to quickly navigate to landmark regions.\n\nlandmark is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "link",
						"description": "An interactive reference to an internal or external resource that, when activated, causes the user agent to navigate to that resource. See related button.\n\nIf this is a native link in the host language (such as an HTML anchor with an href value), activating the link causes the user agent to navigate to that resource. If this is a simulated link, the web application author is responsible for managing navigation.\n\nIf pressing the link triggers an action but does not change browser focus or page location, authors are advised to consider using the button role instead of the link role.",
						"generalization": ["command"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "list",
						"description": "A section containing listitem elements. See related listbox.\n\nLists contain children whose role is listitem.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["listitem"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "listbox",
						"description": "A widget that allows the user to select one or more items from a list of choices. See related combobox and list.\n\nItems within the list are static and, unlike standard HTML select elements, may contain images. List boxes contain children whose role is option or elements whose role is group which in turn contains children whose role is option.\n\nTo be keyboard accessible, authors SHOULD manage focus of option descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role listbox have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["group > option", "option"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "listitem",
						"description": "A single item in a list or directory.\n\nAuthors MUST ensure elements whose role is listitem are contained in, or owned by, an element whose role is list.",
						"generalization": ["section"],
						"requiredContextRole": ["directory", "list"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "log",
						"description": "A type of live region where new information is added in meaningful order and old information may disappear. See related marquee.\n\nExamples include chat logs, messaging history, game log, or an error log. In contrast to other live regions, in this role there is a relationship between the arrival of new items in the log and the reading order. The log contains a meaningful sequence and new information is added only to the end of the log, not at arbitrary points.\n\nElements with the role log have an implicit aria-live value of polite.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "main",
						"description": "A landmark containing the main content of a document.\n\nThis marks the content that is directly related to or expands upon the central topic of the document. The main role is a non-obtrusive alternative for \"skip to main content\" links, where the navigation option to go to the main content (or other landmarks) is provided by the user agent through a dialog or by assistive technologies.\n\nUser agents SHOULD treat elements with the role of main as navigational landmarks.\n\nWithin any document or application, the author SHOULD mark no more than one element with the main role.\n\nBecause document and application elements can be nested in the DOM, they may have multiple main elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "marquee",
						"description": "A type of live region where non-essential information changes frequently. See related log.\n\nCommon usages of marquee include stock tickers and ad banners. The primary difference between a marquee and a log is that logs usually have a meaningful order or sequence of important content changes.\n\nElements with the role marquee have an implicit aria-live value of off.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "math",
						"description": "Content that represents a mathematical expression.\n\nContent with the role math is intended to be marked up in an accessible format such as MathML [MathML3], or with another type of textual representation such as TeX or LaTeX, which can be converted to an accessible format by native browser implementations or a polyfill library.\n\nWhile it is not ideal to use an image of a mathematical expression, there exists a significant amount of legacy content where images are used to represent mathematical expressions. Authors SHOULD ensure that images of math are labeled by text that describes the mathematical expression as it might be spoken.\n\nBrowsers that support native implementations of MathML are able to provide a more robust, accessible math experience than can be accomplished with plain text approximations of math. Some rendering engines have close integration with screen readers that allow spacial touch exploration of the formula and refreshable braille display output in the Nemeth Braille format. This level of integration is not supported with images of mathematical formulas, even if the author provides a plain text approximation.\n\nAt the time of this writing, some mainstream browsers do not support MathML natively, and must be retrofit using a JavaScript polyfill library. When authoring math content, use native MathML wherever possible, and test thoroughly. Use a polyfill library or provide a fallback image with a text alternative approximation if necessary.\n\nIf a rendering engine does not support a native math format such as MathML, authors MAY use JavaScript to downgrade the content to a format the browser can display, such as this HTML image using a data URI and plain text alternative.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menu",
						"description": "A type of widget that offers a list of choices to the user.\n\nA menu is often a list of common actions or functions that the user can invoke. The menu role is appropriate when a list of menu items is presented in a manner similar to a menu on a desktop application.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menu have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": [
							"group > menuitem",
							"group > menuitemradio",
							"group > menuitemcheckbox",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio"
						],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menubar",
						"description": "A presentation of menu that usually remains visible and is usually presented horizontally.\n\nThe menubar role is used to create a menu bar similar to those found in Windows, Mac, and Gnome desktop applications. A menu bar is used to create a consistent set of frequently used commands. Authors SHOULD ensure that menubar interaction is similar to the typical menu bar interaction in a desktop graphical user interface.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menubar have an implicit aria-orientation value of horizontal.",
						"generalization": ["menu"],
						"requiredContextRole": [],
						"requiredOwnedElements": [
							"group > menuitem",
							"group > menuitemradio",
							"group > menuitemcheckbox",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio"
						],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitem",
						"description": "An option in a set of choices contained by a menu or menubar.\n\nAuthors MAY disable a menu item with the aria-disabled attribute. If the menu item has its aria-haspopup attribute set to true, it indicates that the menu item may be used to launch a sub-level menu, and authors SHOULD display a new sub-level menu when the menu item is activated.\n\nIn order to identify that they are related widgets, authors MUST ensure that menu items are owned by an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
						"generalization": ["command"],
						"requiredContextRole": ["group", "menu", "menubar"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitemcheckbox",
						"description": "A menuitem with a checkable state whose possible values are true, false, or mixed.\n\nThe aria-checked attribute of a menuitemcheckbox indicates whether the menu item is checked (true), unchecked (false), or represents a sub-level menu of other menu items that have a mixture of checked and unchecked values (mixed).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item checkboxes are owned by an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
						"generalization": ["menuitem"],
						"requiredContextRole": ["group", "menu", "menubar"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitemradio",
						"description": "A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time.\n\nAuthors SHOULD enforce that only one menuitemradio in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item radios are owned by an element with role menu or menubar, or by a role group which itself is owned by an element with role menu or menubar.\n\nIf a menu or menubar contains more than one group of menuitemradio elements, or if the menu contains one group and other, unrelated menu items, authors SHOULD contain each set of related menuitemradio elements in an element using the group role. Authors MAY also delimit the group from other menu items with an element using the separator role, or an element with an equivalent role from the native markup language.",
						"generalization": ["menuitemcheckbox"],
						"requiredContextRole": ["group", "menu", "menubar"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "meter",
						"description": "An element that represents a scalar measurement within a known range, or a fractional value. See related progressbar.\n\nAuthors MAY set aria-valuemin and aria-valuemax to indicate the minimum and maximum values for the meter. Otherwise, their implicit values follow the same rules as <input[type=\"range\"]> in [HTML]:\n\nThe value of aria-valuenow MUST NOT fall below or exceed the computed values of aria-valuemin and aria-valuemax, respectively.\n\nAuthors SHOULD NOT use the meter role to indicate progress; the progressbar role exists to address that need.\n\nPresently, there are no WAI-ARIA properties corresponding to the low, optimum, and high attributes supported on the <meter> element in [HTML]. The addition of these properties will be considered for ARIA version 1.3.",
						"generalization": ["range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"inherited": true
							},
							{
								"name": "aria-valuemin",
								"inherited": true
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "navigation",
						"description": "A landmark containing a collection of navigational elements (usually links) for navigating the document or related documents.\n\nUser agents SHOULD treat elements with the role of navigation as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "none",
						"description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym presentation.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "note",
						"description": "A section whose content is parenthetic or ancillary to the main content of the resource.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "option",
						"description": "A selectable item in a listbox.\n\nAuthors MUST ensure elements with role option are contained in, or owned by, an element with the role listbox or group within a listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.\n\nElements with the role option have an implicit aria-selected value of false.",
						"generalization": ["input"],
						"requiredContextRole": ["group", "listbox"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"required": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "paragraph",
						"description": "A paragraph of content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "presentation",
						"description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym none.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.\n\nUntil implementations include sufficient support for role=\"none\", web authors are advised to use the presentation role alone role=\"presentation\" or redundantly as a fallback to the none role role=\"none presentation\".\n\nThe intended use is when an element is used to change the look of the page but does not have all the functional, interactive, or structural relevance implied by the element type, or may be used to provide for an accessible fallback in older browsers that do not support WAI-ARIA.\n\nExample use cases:\n\nFor any element with a role of presentation and which is not focusable, the user agent MUST NOT expose the implicit native semantics of the element (the role and its states and properties) to accessibility APIs. However, the user agent MUST expose content and descendant elements that do not have an explicit or inherited role of presentation. Thus, the presentation role causes a given element to be treated as having no role or to be removed from the accessibility tree, but does not cause the content contained within the element to be removed from the accessibility tree.\n\nFor example, according to an accessibility API, the following markup elements would appear to have identical role semantics (no role) and identical content.\n\nThe presentation role is used on an element that has implicit native semantics, meaning that there is a default accessibility API role for the element. Some elements are only complete when additional descendant elements are provided. For example, in HTML, table elements (matching the table role) require tr descendants (the row role), which in turn require th or td children (the cell, columnheader, rowheader roles). Similarly, lists require list item children. The descendant elements that complete the semantics of an element are described in WAI-ARIA as required owned elements.\n\nWhen an explicit or inherited role of presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has required owned elements, in addition to the element with the explicit role of presentation, the user agent MUST apply an inherited role of presentation to any owned elements that do not have an explicit role defined. Also, when an explicit or inherited role of presentation is applied to a host language element which has required children as defined by the host language specification, in addition to the element with the explicit role of presentation, the user agent MUST apply an inherited role of presentation to any required children that do not have an explicit role defined.\n\nIn HTML, the <img> element is treated as a single entity regardless of the type of image file. Consequently, using role=\"presentation\" or role=\"none\" on an HTML img is equivalent to using aria-hidden=\"true\". In order to make the image contents accessible, authors can embed the object using an <object> or <iframe> element, or use inline SVG code, and follow the accessibility guidelines for the image content.\n\nFor any element with an explicit or inherited role of presentation and which is not focusable, user agents MUST ignore role-specific WAI-ARIA states and properties for that element. For example, in HTML, a ul or ol element with a role of presentation will have the implicit native semantics of its li elements removed because the list role to which the ul or ol corresponds has a required owned element of listitem. Likewise, the implicit native semantics of an HTML table element's thead/tbody/tfoot/tr/th/td descendants will also be removed, because the HTML specification indicates that these are required structural descendants of the table element.\n\nOnly the implicit native semantics of elements that correspond to WAI-ARIA required owned elements are removed. All other content remains intact, including nested tables or lists, unless those elements also have an explicit role of presentation applied.\n\nFor example, according to an accessibility API, the following markup elements would appear to have identical role semantics (no roles) and identical content.\n\nThere are other WAI-ARIA roles with required children for which this situation is applicable (e.g., radiogroups and listboxes), but tables and lists are the most common real-world cases in which the presentation inheritance is likely to apply.\n\nFor any element with an explicit or inherited role of presentation, user agents MUST apply an inherited role of presentation to all host-language-specific labeling elements for the presentational element. For example, a table element with a role of presentation will have the implicit native semantics of its caption element removed, because the caption is merely a label for the presentational table.\n\nAuthors SHOULD NOT provide meaningful alternative text (for example, use alt=\"\" in HTML) when the presentation role is applied to an image.\n\nIn the following code sample, the containing img and is appropriately labeled by the caption paragraph. In this example the img element can be marked as presentation because the role and the text alternatives are provided by the containing element.\n\nIn the following code sample, because the anchor (HTML a element) is acting as the treeitem, the list item (HTML li element) is assigned an explicit WAI-ARIA role of presentation to override the user agent's implicit native semantics for list items.\n\nThere are a number of ways presentational role conflicts are resolved.\n\nUser agents MUST NOT expose elements having explicit or inherited presentational role in the accessibility tree, with these exceptions:\n\nFor example, aria-describedby is a global attribute and would always be applied; aria-level is not a global attribute and would therefore only apply if the element was not in a presentational state.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "progressbar",
						"description": "An element that displays the progress status for tasks that take a long time.\n\nA progressbar indicates that the user's request has been received and the application is making progress toward completing the requested action.\n\nAuthors MAY set aria-valuemin and aria-valuemax to indicate the minimum and maximum progress indicator values. Otherwise, their implicit values follow the same rules as <input[type=\"range\"]> in [HTML]:\n\nThe author SHOULD supply a value for aria-valuenow unless the value is indeterminate, in which case the author SHOULD omit the aria-valuenow attribute. Authors SHOULD update this value when the visual progress indicator is updated. If the progressbar is describing the loading progress of a particular region of a page, the author SHOULD use aria-describedby to point to the status, and set the aria-busy attribute to true on the region until it is finished loading. It is not possible for the user to alter the value of a progressbar because it is always read-only.\n\nAssistive technologies generally will render the value of aria-valuenow as a percent of a range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified.",
						"generalization": ["range", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"inherited": true
							},
							{
								"name": "aria-valuemin",
								"inherited": true
							},
							{
								"name": "aria-valuenow",
								"inherited": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "radio",
						"description": "A checkable input in a group of elements with the same role, only one of which can be checked at a time.\n\nAuthors SHOULD ensure that elements with role radio are explicitly grouped in order to indicate which ones affect the same value. This is achieved by enclosing the radio elements in an element with role radiogroup. If it is not possible to make the radio buttons DOM children of the radiogroup, authors SHOULD use the aria-owns attribute on the radiogroup element to indicate the relationship to its children.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "radiogroup",
						"description": "A group of radio buttons.\n\nA radiogroup is a type of select list that can only have a single entry checked at any one time. Authors SHOULD enforce that only one radio button in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["radio"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "range",
						"description": "An element representing a range of values.\n\nrange is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow"
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "region",
						"description": "A landmark containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology.\n\nAuthors SHOULD limit use of the region role to sections containing content with a purpose that is not accurately described by one of the other landmark roles, such as main, complementary, or navigation.\n\nAuthors MUST give each element with role region a brief label that describes the purpose of the content in the region. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present. Authors SHOULD include the label inside of a heading whenever possible. The heading MAY be an instance of the standard host language heading element or an instance of an element with role heading.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role region. Mainstream user agents MAY enable users to quickly navigate to elements with role region.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "roletype",
						"description": "The base role from which all other roles inherit.\n\nProperties of this role describe the structural and functional purpose of objects that are assigned this role. A role is a concept that can be used to understand and operate instances.\n\nroletype is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": [],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic"
							},
							{
								"name": "aria-busy"
							},
							{
								"name": "aria-controls"
							},
							{
								"name": "aria-current"
							},
							{
								"name": "aria-describedby"
							},
							{
								"name": "aria-details"
							},
							{
								"name": "aria-disabled",
								"deprecated": true
							},
							{
								"name": "aria-dropeffect"
							},
							{
								"name": "aria-errormessage",
								"deprecated": true
							},
							{
								"name": "aria-flowto"
							},
							{
								"name": "aria-grabbed"
							},
							{
								"name": "aria-haspopup",
								"deprecated": true
							},
							{
								"name": "aria-hidden"
							},
							{
								"name": "aria-invalid",
								"deprecated": true
							},
							{
								"name": "aria-keyshortcuts"
							},
							{
								"name": "aria-label"
							},
							{
								"name": "aria-labelledby"
							},
							{
								"name": "aria-live"
							},
							{
								"name": "aria-owns"
							},
							{
								"name": "aria-relevant"
							},
							{
								"name": "aria-roledescription"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "row",
						"description": "A row of cells in a tabular container.\n\nRows contain cell or gridcell elements, and thus serve to organize a table, grid, or treegrid.\n\nWhile the row role can be used in a table, grid, or treegrid, the semantics of aria-expanded, aria-posinset, aria-setsize, and aria-level are only applicable to the hierarchical structure of an interactive tree grid. Therefore, authors MUST NOT apply aria-expanded, aria-posinset, aria-setsize, and aria-level to a row that descends from a table or grid, and user agents SHOULD NOT expose any of these four properties to assistive technologies unless the row descends from a treegrid.\n\nAuthors MUST ensure elements with role row are contained in, or owned by, an element with the role table, grid, rowgroup, or treegrid.\n\nWhile aria-disabled is currently supported on row, in a future version the working group plans to prohibit its on elements with role row except when the element is in the context of a grid or treegrid.",
						"generalization": ["group", "widget"],
						"requiredContextRole": ["grid", "rowgroup", "table", "treegrid"],
						"requiredOwnedElements": ["cell", "columnheader", "gridcell", "rowheader"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex"
							},
							{
								"name": "aria-selected"
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "rowgroup",
						"description": "A structure containing one or more row elements in a tabular container.\n\nThe rowgroup role establishes a relationship between owned row elements. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.\n\nAuthors MUST ensure elements with role rowgroup are contained in, or owned by, an element with the role grid, table, or treegrid.\n\nThe rowgroup role exists, in part, to support role symmetry in HTML, and allows for the propagation of presentation inheritance on HTML table elements with an explicit presentation role applied.\n\nThis role does not differentiate between types of row groups (e.g., thead vs. tbody), but an issue has been raised for WAI-ARIA 2.0.",
						"generalization": ["structure"],
						"requiredContextRole": ["grid", "table", "treegrid"],
						"requiredOwnedElements": ["row"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "rowheader",
						"description": "A cell containing header information for a row.\n\nThe rowheader role can be used to identify a cell as a header for a row in a table, grid, or treegrid. The rowheader establishes a relationship between it and all cells in the corresponding row. It is a structural equivalent to setting scope=\"row\" on an HTML th element.\n\nAuthors MUST ensure elements with role rowheader are contained in, or owned by, an element with the role row.\n\nApplying the aria-selected state on a rowheader MUST NOT cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding row. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the rowheader role can be used in both interactive grids and non-interactive tables, the use of aria-expanded, aria-readonly, and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-expanded, aria-readonly, or aria-required in a rowheader that descends from a table, and user agents SHOULD NOT expose these properties to assistive technologies unless the rowheader descends from a grid or treegrid.\n\nWhile aria-disabled is currently supported on rowheader, in a future version the working group plans to prohibit its use on elements with role rowheader except when the element is in the context of a grid or treegrid.",
						"generalization": ["cell", "gridcell", "sectionhead"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-sort"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "scrollbar",
						"description": "A graphical object that controls the scrolling of content within a viewing area, regardless of whether the content is fully displayed within the viewing area.\n\nA scrollbar represents the current value and range of possible values via the size of the scrollbar and position of the thumb with respect to the visible range of the orientation (horizontal or vertical) it controls. Its orientation represents the orientation of the scrollbar and the scrolling effect on the viewing area controlled by the scrollbar. It is typically possible to add or subtract to the current value by using directional keys such as arrow keys.\n\nAuthors MUST set the aria-controls attribute on the scrollbar element to reference the scrollable area it controls.\n\nAuthors MAY set aria-valuemin and aria-valuemax to indicate the minimum and maximum thumb position. Otherwise, their implicit values follow the same rules as <input[type=\"range\"]> in [HTML]:\n\nAuthors MUST set the aria-valuenow attribute to indicate the current thumb position. If aria-valuenow is missing or has an unexpected value, browsers MAY implement the repair techniques specified in the section describing handling author errors in states and properties, which are equivalent to the repair techniques for <input[type=\"range\"]> in [HTML].\n\nElements with the role scrollbar have an implicit aria-orientation value of vertical.\n\nAssistive technologies generally will render the value of aria-valuenow as a percent of a range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified. It is best to set the values for aria-valuemin, aria-valuemax, and aria-valuenow in a manner that is appropriate for this calculation.",
						"generalization": ["range", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"required": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "search",
						"description": "A landmark region that contains a collection of items and objects that, as a whole, combine to create a search facility. See related form and searchbox.\n\nA search region may be a mix of host language form controls, scripted controls, and hyperlinks.\n\nUser agents SHOULD treat elements with the role of search as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "searchbox",
						"description": "A type of textbox intended for specifying search criteria. See related textbox and search.",
						"generalization": ["textbox"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiline",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-placeholder",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "section",
						"description": "A renderable structural containment unit in a document or application.\n\nsection is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "sectionhead",
						"description": "A structure that labels or summarizes the topic of its related section.\n\nsectionhead is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "select",
						"description": "A form widget that allows the user to make selections from a set of choices.\n\nselect is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["composite", "group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "separator",
						"description": "A divider that separates and distinguishes sections of content or groups of menuitems.\n\nThere are two types of separators: a static structure that provides only a visible boundary and a focusable, interactive widget that is also moveable. If a separator is not focusable, it is revealed to assistive technologies as a static structural element. For example, a static separator can be used to help visually divide two groups of menu items in a menu or to provide a horizontal rule between two sections of a page.\n\nAuthors MAY make a separator focusable to create a widget that both provides a visible boundary between two sections of content and enables the user to change the relative size of the sections by changing the position of the separator. A variable separator widget can be moved continuously within a range, whereas a fixed separator widget supports only two discrete positions. Typically, a fixed separator widget is used to toggle one of the sections between expanded and collapsed states.\n\nIf the separator is focusable, authors MUST set the value of aria-valuenow to a number reflecting the current position of the separator and update that value when it changes. Authors SHOULD also provide the value of aria-valuemin if it is not 0 and the value of aria-valuemax if it is not 100. If missing or not a number, the implicit values of these attributes are as follows:\n\nIn applications where there is more than one focusable separator, authors SHOULD provide an accessible name for each one.\n\nElements with the role separator have an implicit aria-orientation value of horizontal.",
						"generalization": ["structure", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "slider",
						"description": "An input where the user selects a value from within a given range.\n\nA slider represents the current value and range of possible values via the size of the slider and position of the thumb. It is typically possible to add or subtract to the value by using directional keys such as arrow keys.\n\nAuthors MAY set the aria-valuemin and aria-valuemax attributes. Otherwise, their implicit values follow the same rules as <input[type=\"range\"]> in [HTML]:\n\nAuthors MUST set the aria-valuenow attribute. If aria-valuenow is missing or has an unexpected value, browsers MAY implement the repair techniques specified in the section describing handling author errors in states and properties, which are equivalent to the repair techniques for <input[type=\"range\"]> in [HTML].\n\nElements with the role slider have an implicit aria-orientation value of horizontal.",
						"generalization": ["input", "range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "spinbutton",
						"description": "A form of range that expects the user to select from among discrete choices.\n\nA spinbutton typically allows users to change its displayed value by activating increment and decrement buttons that step through a set of allowed values. Some implementations display the value in an text field that allows editing and typing but typically limits input in ways that help prevent invalid values.\n\nAlthough a spinbutton is similar in appearance to many presentations of select, it is advisable to use spinbutton when working with known ranges (especially in the case of large ranges) as opposed to distinct options. For example, a spinbutton representing a range from 1 to 1,000,000 would provide much better performance than a select widget representing the same values.\n\nAuthors MAY create a spinbutton with children or owned elements, but MUST limit those elements to a textbox and/or two buttons. Alternatively, authors MAY apply the spinbutton role to a text input and create sibling buttons to support the increment and decrement functions.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a spinbutton receives focus, authors SHOULD ensure focus is placed on the textbox element if one is present, and on the spinbutton itself otherwise. Authors SHOULD also ensure the up and down arrows on a keyboard perform the increment and decrement functions and that the increment and decrement button elements are NOT included in the primary navigation ring, e.g., the Tab ring in HTML.\n\nAuthors SHOULD set the aria-valuenow attribute when the spinbutton has a value. Authors SHOULD set the aria-valuemin attribute when there is a minimum value, and the aria-valuemax attribute when there is a maximum value.",
						"generalization": ["composite", "input", "range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow"
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "status",
						"description": "A type of live region whose content is advisory information for the user but is not important enough to justify an alert, often but not necessarily presented as a status bar.\n\nAuthors SHOULD ensure an element with role status does not receive focus as a result of change in status.\n\nStatus is a form of live region. If another part of the page controls what appears in the status, authors SHOULD make the relationship explicit with the aria-controls attribute.\n\nAssistive technologies MAY reserve some cells of a Braille display to render the status.\n\nElements with the role status have an implicit aria-live value of polite and an implicit aria-atomic value of true.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "strong",
						"description": "Content that is important, serious, or urgent. See related emphasis.\n\nThe purpose of the strong role is to communicate strong importance, seriousness, or urgency. It is not for communicating changes in typographical presentation that are not important to the meaning of the content. Authors SHOULD use the strong role only if its absence would change the meaning of the content.\n\nThe strong role is not intended to convey stress or emphasis; for that purpose, the emphasis role is more appropriate.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "structure",
						"description": "A document structural element.\n\nRoles for document structure support the accessibility of dynamic web content by helping assistive technologies determine active content versus static document content. Structural roles by themselves do not all map to accessibility APIs, but are used to create widget roles or assist content adaptation for assistive technologies.\n\nstructure is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "subscript",
						"description": "One or more subscripted characters. See related superscript.\n\nThe subscript role is intended to be used only to mark up typographical conventions that have specific meanings; not for typographical presentation for presentation's sake. In general, authors SHOULD use this role only if the absence of the subscript would change the meaning of the content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "superscript",
						"description": "One or more superscripted characters. See related superscript.\n\nThe superscript role is intended to be used only to mark up typographical conventions that have specific meanings; not for typographical presentation for presentation's sake. In general, authors SHOULD use this role only if the absence of the superscript would change the meaning of the content.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": ["aria-label", "aria-labelledby"]
					},
					{
						"name": "switch",
						"description": "A type of checkbox that represents on/off values, as opposed to checked/unchecked values. See related checkbox.\n\nThe aria-checked attribute of a switch indicates whether the input is on (true) or off (false). The mixed value is invalid, and user agents MUST treat a mixed value as equivalent to false for this role.\n\nA switch provides approximately the same functionality as a checkbox and toggle button, but makes it possible for assistive technologies to present the widget in a fashion consistent with its on-screen appearance.",
						"generalization": ["checkbox"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tab",
						"description": "A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user.\n\nIf a tabpanel or item in a tabpanel has focus, the associated tab is the currently active tab in the tablist, as defined in Managing Focus. tablist elements, which contain a set of associated tab elements, are typically placed near a series of tabpanel elements, usually preceding it. See the WAI-ARIA Authoring Practices for details on implementing a tab set design pattern.\n\nAuthors MUST ensure elements with role tab are contained in, or owned by, an element with the role tablist.\n\nAuthors SHOULD ensure the tabpanel associated with the currently active tab is perceivable to the user.\n\nFor a single-selectable tablist, authors SHOULD hide other tabpanel elements from the user until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden tabpanel elements have their aria-expanded attributes set to false.\n\nIn either case, authors SHOULD ensure that a selected tab has its aria-selected attribute set to true, that inactive tab elements have their aria-selected attribute set to false, and that the currently selected tab provides a visual indication that it is selected. In the absence of an aria-selected attribute on the current tab, user agents SHOULD indicate to assistive technologies through the platform accessibility API that the currently focused tab is selected.",
						"generalization": ["sectionhead", "widget"],
						"requiredContextRole": ["tablist"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected"
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "table",
						"description": "A section containing data arranged in rows and columns. See related grid.\n\nThe table role is intended for tabular containers which are not interactive. If the tabular container maintains a selection state, provides its own two-dimensional navigation, or allows the user to rearrange or otherwise manipulate its contents or the display thereof, authors SHOULD use grid or treegrid instead.\n\nAuthors SHOULD prefer the use of the host language's semantics for table whenever possible, such as the <table> element in [HTML].",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tablist",
						"description": "A list of tab elements, which are references to tabpanel elements.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nFor a single-selectable tablist, authors SHOULD hide other tabpanel elements from the user until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure each visible tabpanel has its aria-expanded attribute set to true, and that the remaining hidden tabpanel elements have their aria-expanded attributes set to false.\n\ntablist elements are typically placed near usually preceding, a series of tabpanel elements. See the WAI-ARIA Authoring Practices for details on implementing a tab set design pattern.\n\nElements with the role tablist have an implicit aria-orientation value of horizontal.",
						"generalization": ["composite"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["tab"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tabpanel",
						"description": "A container for the resources associated with a tab, where each tab is contained in a tablist.\n\nAuthors SHOULD associate a tabpanel element with its tab, either by using the aria-controls attribute on the tab to reference the tab panel, or by using the aria-labelledby attribute on the tab panel to reference the tab.\n\ntablist elements are typically placed near, usually preceding, a series of tabpanel elements. See the WAI-ARIA Authoring Practices for details on implementing a tab set design pattern.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "term",
						"description": "A word or phrase with a corresponding definition. See related definition.\n\nThe term role is used to explicitly identify a word or phrase for which a definition has been provided by the author or is expected to be provided by the user.\n\nAuthors SHOULD NOT use the term role on interactive elements such as links because doing so could prevent users of assistive technologies from interacting with those elements.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "textbox",
						"description": "A type of input that allows free-form text as its value.\n\nIf the aria-multiline attribute is true, the widget accepts line breaks within the input, as in an HTML textarea. Otherwise, this is a simple text box. The intended use is for languages that do not have a text input element, or cases in which an element with different semantics is repurposed as a text field.\n\nIn most user agent implementations, the default behavior of the ENTER or RETURN key is different between the single-line and multi-line text fields in HTML. When user has focus in a single-line <input type=\"text\"> element, the keystroke usually submits the form. When user has focus in a multi-line <textarea> element, the keystroke inserts a line break. The WAI-ARIA textbox role differentiates these types of boxes with the aria-multiline attribute, so authors are advised to be aware of this distinction when designing the field.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete"
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiline"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-placeholder"
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "time",
						"description": "An element that represents a specific point in time.\n\nAt the present time, there are no WAI-ARIA properties corresponding to the datetime attribute supported on <time> in [HTML]. The addition of this property will be considered for ARIA version 1.3.\n\nAuthors SHOULD limit text contents to a valid date- or time-related string, or apply this future datetime-equivalent property to the element which has role time.\n\nExamples of valid date- or time-related strings as text contents of an element with the time role:",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "timer",
						"description": "A type of live region containing a numerical counter which indicates an amount of elapsed time from a start point, or the time remaining until an end point.\n\nThe text contents of the timer object indicate the current time measurement, and are updated as that amount changes. The timer value is not necessarily machine parsable, but authors SHOULD update the text contents at fixed intervals, except when the timer is paused or reaches an end-point.\n\nElements with the role timer have an implicit aria-live value of off.",
						"generalization": ["status"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "toolbar",
						"description": "A collection of commonly used function buttons or controls represented in compact visual form.\n\nThe toolbar is often a subset of functions found in a menubar, designed to reduce user effort in using these functions. Authors MUST supply a label on each toolbar when the application contains more than one toolbar.\n\nAuthors MAY manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role toolbar have an implicit aria-orientation value of horizontal.",
						"generalization": ["group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tooltip",
						"description": "A contextual popup that displays a description for an element.\n\nThe tooltip typically becomes visible, after a short delay, in response to a mouse hover, or after the owning element receives keyboard focus. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.\n\nTypical tooltip delays last from one to five seconds.\n\nAuthors SHOULD ensure that elements with the role tooltip are referenced through the use of aria-describedby before or at the time the tooltip is displayed.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tree",
						"description": "A widget that allows the user to select one or more items from a hierarchically organized collection.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role tree have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["group > treeitem", "treeitem"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "treegrid",
						"description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements owned by the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.",
						"generalization": ["grid", "tree"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "treeitem",
						"description": "An option item of a tree. This is an element within a tree that may be expanded or collapsed if it contains a sub-level group of tree item elements.\n\nA collection of treeitem elements to be expanded and collapsed are enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are contained in, or owned by, an element with the role group or tree.",
						"generalization": ["listitem", "option"],
						"requiredContextRole": ["group", "tree"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "widget",
						"description": "An interactive component of a graphical user interface (GUI).\n\nWidgets are discrete user interface objects with which the user can interact. Widget roles map to standard features in accessibility APIs. When the user navigates an element assigned any of the non-abstract subclass roles of widget, assistive technologies that typically intercept standard keyboard events SHOULD switch to an application browsing mode, and pass keyboard events through to the web application. The intent is to hint to certain assistive technologies to switch from normal browsing mode into a mode more appropriate for interacting with a web application; some user agents have a browse navigation mode where keys, such as up and down arrows, are used to browse the document, and this native behavior prevents the use of these keys by a web application.\n\nwidget is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "window",
						"description": "A browser or application window.\n\nElements with this role have a window-like behavior in a graphical user interface (GUI) context, regardless of whether they are implemented as a native window in the operating system, or merely as a section of the document styled to look like a window.\n\nIn the description of this role, the term \"application\" does not refer to the application role, which specifies specific assistive technology behaviors.\n\nwindow is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					}
				],
				"props": [
					{
						"name": "aria-activedescendant",
						"type": "property",
						"value": "ID reference",
						"enum": []
					},
					{
						"name": "aria-atomic",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Assistive technologies will present only the changed node or nodes.",
							"true": "Assistive technologies will present the entire changed region as a whole, including the author-defined label if one exists."
						}
					},
					{
						"name": "aria-autocomplete",
						"type": "property",
						"value": "token",
						"enum": ["inline", "list", "both", "none"],
						"defaultValue": "none",
						"valueDescriptions": {
							"inline": "When a user is providing input, text suggesting one way to complete the provided input may be dynamically inserted after the caret.",
							"list": "When a user is providing input, an element containing a collection of values that could complete the provided input may be displayed.",
							"both": "When a user is providing input, an element containing a collection of values that could complete the provided input may be displayed. If displayed, one value in the collection is automatically selected, and the text needed to complete the automatically selected value appears after the caret in the input.",
							"none": "When a user is providing input, an automatic suggestion that attempts to predict how the user intends to complete the input is not displayed."
						}
					},
					{
						"name": "aria-busy",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "There are no expected updates for the element.",
							"true": "The element is being updated."
						}
					},
					{
						"name": "aria-checked",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "undefined",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "checked",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The element supports being checked but is not currently checked.",
							"mixed": "Indicates a mixed mode value for a tri-state checkbox or menuitemcheckbox.",
							"true": "The element is checked.",
							"undefined": "The element does not support being checked."
						},
						"conditionalValue": [
							{
								"role": ["checkbox", "menuitemcheckbox"],
								"value": "tristate"
							}
						]
					},
					{
						"name": "aria-colcount",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-colindex",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-colspan",
						"type": "property",
						"value": "integer",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "colspan",
								"value": null
							}
						]
					},
					{
						"name": "aria-controls",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-current",
						"type": "state",
						"value": "token",
						"enum": ["page", "step", "location", "date", "time", "true", "false"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"page": "Represents the current page within a set of pages.",
							"step": "Represents the current step within a process.",
							"location": "Represents the current location within an environment or context.",
							"date": "Represents the current date within a collection of dates.",
							"time": "Represents the current time within a set of times.",
							"true": "Represents the current item within a set.",
							"false": "Does not represent the current item within a set."
						}
					},
					{
						"name": "aria-describedby",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-details",
						"type": "property",
						"value": "ID reference",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-disabled",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "disabled",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The element is enabled.",
							"true": "The element and all focusable descendants are disabled and its value cannot be changed by the user."
						}
					},
					{
						"name": "aria-dropeffect",
						"type": "property",
						"deprecated": true,
						"value": "token list",
						"enum": ["copy", "execute", "link", "move", "none", "popup"],
						"defaultValue": "none",
						"isGlobal": true,
						"valueDescriptions": {
							"copy": "A duplicate of the source object will be dropped into the target.",
							"execute": "A function supported by the drop target is executed, using the drag source as an input.",
							"link": "A reference or shortcut to the dragged object will be created in the target object.",
							"move": "The source object will be removed from its current location and dropped into the target.",
							"none": "No operation can be performed; effectively cancels the drag operation if an attempt is made to drop on this object. Ignored if combined with any other token value. e.g., 'none copy' is equivalent to a 'copy' value.",
							"popup": "There is a popup menu or dialog that allows the user to choose one of the drag operations (copy, move, link, execute) and any other drag functionality, such as cancel."
						}
					},
					{
						"name": "aria-errormessage",
						"type": "property",
						"value": "ID reference",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-expanded",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The grouping element this element owns or controls is collapsed.",
							"true": "The grouping element this element owns or controls is expanded.",
							"undefined": "The element does not own or control a grouping element that is expandable."
						}
					},
					{
						"name": "aria-flowto",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-grabbed",
						"type": "state",
						"deprecated": true,
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Indicates that the element supports being dragged.",
							"true": "Indicates that the element has been \"grabbed\" for dragging.",
							"undefined": "Indicates that the element does not support being dragged."
						}
					},
					{
						"name": "aria-haspopup",
						"type": "property",
						"value": "token",
						"enum": ["false", "true", "menu", "listbox", "tree", "grid", "dialog"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Indicates the element does not have a popup.",
							"true": "Indicates the popup is a menu.",
							"menu": "Indicates the popup is a menu.",
							"listbox": "Indicates the popup is a listbox.",
							"tree": "Indicates the popup is a tree.",
							"grid": "Indicates the popup is a grid.",
							"dialog": "Indicates the popup is a dialog."
						}
					},
					{
						"name": "aria-hidden",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"isGlobal": true,
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "hidden",
								"value": "true",
								"isNotStrictEquivalent": true
							}
						],
						"valueDescriptions": {
							"false": "The element is exposed to the accessibility API as if it was rendered.",
							"true": "The element is hidden from the accessibility API.",
							"undefined": "The element's hidden state is determined by the user agent based on whether it is rendered."
						}
					},
					{
						"name": "aria-invalid",
						"type": "state",
						"value": "token",
						"enum": ["grammar", "false", "spelling", "true"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"grammar": "A grammatical error was detected.",
							"false": "There are no detected errors in the value.",
							"spelling": "A spelling error was detected.",
							"true": "The value entered by the user has failed validation."
						}
					},
					{
						"name": "aria-keyshortcuts",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-label",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-labelledby",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-level",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-live",
						"type": "property",
						"value": "token",
						"enum": ["assertive", "off", "polite"],
						"defaultValue": "off",
						"isGlobal": true,
						"valueDescriptions": {
							"assertive": "Indicates that updates to the region have the highest priority and should be presented the user immediately.",
							"off": "Indicates that updates to the region should not be presented to the user unless the user is currently focused on that region.",
							"polite": "Indicates that updates to the region should be presented at the next graceful opportunity, such as at the end of speaking the current sentence or when the user pauses typing."
						}
					},
					{
						"name": "aria-modal",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "Element is not modal.",
							"true": "Element is modal."
						}
					},
					{
						"name": "aria-multiline",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "This is a single-line text box.",
							"true": "This is a multi-line text box."
						}
					},
					{
						"name": "aria-multiselectable",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "Only one item can be selected.",
							"true": "More than one item in the widget may be selected at a time."
						}
					},
					{
						"name": "aria-orientation",
						"type": "property",
						"value": "token",
						"enum": ["horizontal", "undefined", "vertical"],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"horizontal": "The element is oriented horizontally.",
							"undefined": "The element's orientation is unknown/ambiguous.",
							"vertical": "The element is oriented vertically."
						}
					},
					{
						"name": "aria-owns",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-placeholder",
						"type": "property",
						"value": "string",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "placeholder",
								"value": null
							}
						]
					},
					{
						"name": "aria-posinset",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-pressed",
						"type": "state",
						"value": "tristate",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The element supports being pressed but is not currently pressed.",
							"mixed": "Indicates a mixed mode value for a tri-state toggle button.",
							"true": "The element is pressed.",
							"undefined": "The element does not support being pressed."
						}
					},
					{
						"name": "aria-readonly",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "readonly",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The user can set the value of the element.",
							"true": "The user cannot change the value of the element."
						}
					},
					{
						"name": "aria-relevant",
						"type": "property",
						"value": "token list",
						"enum": ["additions", "additions text", "all", "removals", "text"],
						"defaultValue": "additions text",
						"isGlobal": true,
						"valueDescriptions": {
							"additions": "Element nodes are added to the accessibility tree within the live region.",
							"additions text": "Equivalent to the combination of values, \"additions text\".",
							"all": "Equivalent to the combination of all values, \"additions removals text\".",
							"removals": "Text content, a text alternative, or an element node within the live region is removed from the accessibility tree.",
							"text": "Text content or a text alternative is added to any descendant in the accessibility tree of the live region."
						}
					},
					{
						"name": "aria-required",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "required",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "User input is not necessary to submit the form.",
							"true": "Users need to provide input on an element before a form is submitted."
						}
					},
					{
						"name": "aria-roledescription",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-rowcount",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-rowindex",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-rowspan",
						"type": "property",
						"value": "integer",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "rowspan",
								"value": null
							}
						]
					},
					{
						"name": "aria-selected",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The selectable element is not selected.",
							"true": "The selectable element is selected.",
							"undefined": "The element is not selectable."
						}
					},
					{
						"name": "aria-setsize",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-sort",
						"type": "property",
						"value": "token",
						"enum": ["ascending", "descending", "none", "other"],
						"defaultValue": "none",
						"valueDescriptions": {
							"ascending": "Items are sorted in ascending order by this column.",
							"descending": "Items are sorted in descending order by this column.",
							"none": "There is no defined sort applied to the column.",
							"other": "A sort algorithm other than ascending or descending has been applied."
						}
					},
					{
						"name": "aria-valuemax",
						"type": "property",
						"value": "number",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "max",
								"value": null
							}
						]
					},
					{
						"name": "aria-valuemin",
						"type": "property",
						"value": "number",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "min",
								"value": null
							}
						]
					},
					{
						"name": "aria-valuenow",
						"type": "property",
						"value": "number",
						"enum": []
					},
					{
						"name": "aria-valuetext",
						"type": "property",
						"value": "string",
						"enum": []
					}
				],
				"graphicsRoles": [
					{
						"name": "graphics-document",
						"description": "A type of document in which the visual appearance or layout of content conveys meaning.\n\nSimilar to other document types, the graphics-document role applies to the root element of a region of the page containing related information, where the user's primary interaction mode is expected to be browsing the document rather than controlling an application. The element with this role may be the root element of the document file, or of a nested structure within it.\n\nThe graphics-document may be distinguished from similar roles as follows:\n\nRelative to other documents, a graphics-document is distinguished by the semantic importance of its visual (usually two-dimensional) representation. User agents and assistive technologies SHOULD take this into consideration when supporting navigation of the graphic. Accessibility technologies that re-format or re-style a document SHOULD NOT alter the layout of a graphics-document except in ways that are consistent with the semantic roles and relationships of its content.\n\nRelative to an img, a graphics-document is distinguished by the structured nature of its content. Its child elements may have semantic meaning, and may include links or other interactive widgets.\n\nRelative to a graphics-object, a graphics-document is self-contained. Its meaning persists when separated from surrounding content. The element with the graphics-document role defines the scope and context for interpretation of the child content.\n\nIn general, authors SHOULD use the graphics-document role for structured graphics such as charts, maps, diagrams, technical drawing, blue prints and instructional graphics. However, if a single large graphic has discrete regions that may be safely re-arranged without sacrificing meaning, each of those regions SHOULD be a distinct graphics-document. An alternative role (such as figure) may be used to group them together. One graphics-document may also be nested inside another, for example a bar chart that is embedded in a map or a matrix of chart panels should have a role of graphics-document. The nested document provides encapsulation; navigation between components of the inner and outer graphics should be explicit.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the document role as a fallback value, in the form role=\"graphics-document document\".\n\nFuture specifications may define more specific roles for particular types of graphical documents with special semantic structures. Those more specific roles would be subclasses of graphics-document.\n\nAn SVG diagram of an electrical circuit is a simple graphical document:",
						"generalization": ["document"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "graphics-object",
						"description": "A section of a graphics-document that represents a distinct object or sub-component with semantic meaning. A graphical object may itself have nested sub-components.\n\nContainer elements that represent a collection of disconnected objects should be given the group or list roles, instead. Grouping elements that do not have semantic meaning and do not alter the semantic context provided by an ancestor (for example, a div or SVG g that is only used for styling or layout) SHOULD NOT be given a role. The lack of role may be explicitly indicated with the role none or presentation.\n\nUnlike a graphics-document, a graphics-object need not be self-contained, and it does not establish a new context for navigation. However, user agents and assistive technologies SHOULD provide a way for users, particularly non-visual users, to navigate the nested structure of objects in a hierarchical manner, similar to nested lists.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the group role as a fallback value, in the form role=\"graphics-object group\".\n\nThe code that follows is a portion of the markup for a structured graphic. It includes SVG g grouping elements with various roles:\n\nWhere a graphical object has multiple sub-components, the group role is provided as an explicit fallback.",
						"generalization": ["group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "graphics-symbol",
						"description": "A graphical object used to convey a simple meaning or category, where the meaning is more important than the particular visual appearance. It may be a component of a larger structured graphic such as a chart or map. The symbol itself is an atomic object; children are presentational.\n\nWhen used as part of a structured symbolic language, the aria-roledescription property (introduced in ARIA 1.1 [WAI-ARIA-1.1]) can be used to name the symbol type separately from the name and description for the particular instance of the symbol.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the img role as a fallback value, in the form role=\"graphics-symbol img\", if that is not already the default semantic role for the element.\n\nWithin an HTML document for a restaurant menu, an img element can represent a repeated symbol:\n\nWithin an SVG diagram of an electrical circuit, the graphics that represent batteries, switches, and loads like this lightbulb are each symbols:\n\nNote that the visible text must be included in the label for its parent symbol, in this example. As the child of a graphics-symbol, it is treated as presentational content, and is therefore not accessible as a separate element of the graphic.\n\nWithin an architectural blueprint-style SVG diagram, each SVG use element that creates a copy of a simple SVG symbol is a graphics-symbol:",
						"generalization": ["img"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-braillelabel",
								"inherited": true
							},
							{
								"name": "aria-brailleroledescription",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-description",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"deprecated": true,
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					}
				]
			},
			"1.1": {
				"roles": [
					{
						"name": "alert",
						"description": "A type of live region with important, and usually time-sensitive, information. See related alertdialog and status.\n\nAlerts are used to convey messages to alert the user. In the case of audio warnings this is an accessible alternative for a hearing-impaired user. The alert role goes on the node containing the alert message. Alerts are specialized forms of the status role, which will be processed as an atomic live region.\n\nAlerts are assertive live regions and will be processed as such by assistive technologies. Neither authors nor user agents are required to set or manage focus to them in order for them to be processed. Since alerts are not required to receive focus, content authors SHOULD NOT require users to close an alert. If the operating system allows, the user agent SHOULD fire a system alert event through the accessibility API when the WAI-ARIA alert is created. If an alert requires focus to close the alert, then content authors SHOULD use alertdialog instead.\n\nElements with the role alert have an implicit aria-live value of assertive, and an implicit aria-atomic value of true.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "alertdialog",
						"description": "A type of dialog that contains an alert message, where initial focus goes to an element within the dialog. See related alert and dialog.\n\nAlert dialogs are used to convey messages to alert the user. The alertdialog role goes on the node containing both the alert message and the rest of the dialog. Content authors SHOULD make alert dialogs modal by ensuring that, while the alertdialog is shown, keyboard and mouse interactions only operate within the dialog. See aria-modal.\n\nUnlike alert, alertdialog can receive a response from the user. For example, to confirm that the user understands the alert being generated. When the alert dialog is displayed, authors SHOULD set focus to an active element within the alert dialog, such as a form edit field or an OK button. The user agent SHOULD fire a system alert event through the accessibility API when the alert is created, provided one is specified by the intended accessibility API.\n\nAuthors SHOULD use aria-describedby on an alertdialog to reference the alert message element in the dialog. If they do not, an assistive technology can resort to its internal recovery mechanism to determine the contents of the alert message.",
						"generalization": ["alert", "dialog"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "application",
						"description": "A structure containing one or more focusable elements requiring user input, such as keyboard or gesture events, that do not follow a standard interaction pattern supported by a widget role.\n\nSome user agents and assistive technologies have a browse mode where standard input events, such as up and down arrow key events, are intercepted and used to control a reading cursor. This browse mode behavior prevents elements that do not have a widget role from receiving and using such keyboard and gesture events to provide interactive functionality.\n\nWhen there is a need to create an element with an interaction model that is not supported by any of the WAI-ARIA widget roles, authors MAY give that element role application. And, when a user navigates into an element with role application, assistive technologies that intercept standard input events SHOULD switch to a mode that passes most or all standard input events through to the web application.\n\nFor example, a presentation slide editor uses arrow keys to change the positions of textbox and image elements on the slide. There are not any WAI-ARIA widget roles that correspond to such an interaction model so an author could give the slide container role application, an aria-roledescription of \"Slide Editor\", and use aria-describedby to provide instructions.\n\nBecause only the focusable elements contained in an application element are accessible to users of some assistive technologies, authors MUST use one of the following techniques to ensure all non-decorative static text or image content inside an application is accessible:",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "article",
						"description": "A section of a page that consists of a composition that forms an independent part of a document, page, or site.\n\nAn article is not a navigational landmark, but may be nested to form a discussion where assistive technologies could pay attention to article nesting to assist the user in following the discussion. An article could be a forum post, a magazine or newspaper article, a web log entry, a user-submitted comment, or any other independent item of content. It is independent in that its contents could stand alone, for example in syndication. However, the element is still associated with its ancestors; for instance, contact information that applies to a parent body element still covers the article as well. When nesting articles, the child articles represent content that is related to the content of the parent article. For instance, a web log entry on a site that accepts user-submitted comments could represent the comments as articles nested within the article for the web log entry. Author, heading, date, or other information associated with an article does not apply to nested articles.\n\nWhen the user navigates to an element assigned the role of article, assistive technologies that typically intercept standard keyboard events SHOULD switch to document browsing mode, as opposed to passing keyboard events through to the web application. Assistive technologies MAY provide a feature allowing the user to navigate the hierarchy of any nested article elements.\n\nWhen an article is in the context of a feed, the author MAY specify values for aria-posinset and aria-setsize.",
						"generalization": ["document"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "banner",
						"description": "A region that contains mostly site-oriented content, rather than page-specific content.\n\nSite-oriented content typically includes things such as the logo or identity of the site sponsor, and a site-specific search tool. A banner usually appears at the top of the page and typically spans the full width.\n\nUser agents SHOULD treat elements with the role of banner as navigational landmarks.\n\nWithin any document or application, the author SHOULD mark no more than one element with the banner role.\n\nBecause document and application elements can be nested in the DOM, they may have multiple banner elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "button",
						"description": "An input that allows for user-triggered actions when clicked or pressed. See related link.\n\nButtons are mostly used for discrete actions. Standardizing the appearance of buttons enhances the user's recognition of the widgets as buttons and allows for a more compact display in toolbars.\n\nButtons support the optional attribute aria-pressed. Buttons with a non-empty aria-pressed attribute are toggle buttons. When aria-pressed is true the button is in a \"pressed\" state, when aria-pressed is false it is not pressed. If the attribute is not present, the button is a simple command button.",
						"generalization": ["command"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-pressed"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "cell",
						"description": "A cell in a tabular container. See related gridcell.\n\nAuthors MUST ensure elements with role cell are contained in, or owned by, an element with the role row.",
						"generalization": ["section"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex"
							},
							{
								"name": "aria-colspan"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex"
							},
							{
								"name": "aria-rowspan"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "checkbox",
						"description": "A checkable input that has three possible values: true, false, or mixed.\n\nThe aria-checked attribute of a checkbox indicates whether the input is checked (true), unchecked (false), or represents a group of elements that have a mixture of checked and unchecked values (mixed). Many checkboxes do not use the mixed value, and thus are effectively boolean checkboxes.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "columnheader",
						"description": "A cell containing header information for a column.\n\ncolumnheader can be used as a column header in a table or grid. It could also be used in a pie chart to show a similar relationship in the data.\n\nThe columnheader establishes a relationship between it and all cells in the corresponding column. It is the structural equivalent to an HTML th element with a column scope.\n\nAuthors MUST ensure elements with role columnheader are contained in, or owned by, an element with the role row.\n\nApplying the aria-selected state on a columnheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding column. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the columnheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a columnheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the columnheader descends from a grid.\n\nBecause cells are organized into rows, there is not a single container element for the column. The column is the set of gridcell elements in a particular position within their respective row containers.",
						"generalization": ["cell", "gridcell", "sectionhead"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-sort"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "combobox",
						"description": "A composite widget containing a single-line textbox and another element, such as a listbox or grid, that can dynamically pop up to help the user set the value of the textbox.\n\nAuthors MUST ensure an element with role combobox contains or owns a text input element with role textbox or searchbox and that the text input has aria-multiline set to false. If the combobox provides autocompletion behavior for the text input as described in aria-autocomplete, authors MUST set aria-autocomplete on the textbox element to the value that corresponds to the provided behavior.\n\nTypically, the default state of a combobox is collapsed. In the collapsed state, only the textbox element of a combobox is visible. A combobox is said to be expanded when both the textbox and a secondary element that serves as its popup are visible. Authors MUST set aria-expanded to true on an element with role combobox when it is expanded and false when it is collapsed. Elements with the role combobox have an implicit aria-expanded value of false.\n\nWhen a combobox is expanded, authors MUST ensure it contains or owns an element that has a role of listbox, tree, grid, or dialog. This element is the combobox popup. When the combobox is expanded, authors MUST set aria-controls on the textbox element to a value that refers to the combobox popup element.\n\nElements with the role combobox have an implicit aria-haspopup value of listbox. If the combobox popup element has a role other than listbox, authors MUST specify a value for aria-haspopup that corresponds to the type of its popup.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a combobox receives focus, authors SHOULD ensure focus is placed on the textbox element.\n\nAuthors SHOULD provide keyboard mechanisms for moving focus between the textbox element and the elements contained in the popup. For example, one common convention is that Down Arrow moves focus from the text input to the first focusable descendant of the popup element. If the popup element supports aria-activedescendant, in lieu of moving focus, such keyboard mechanisms can control the value of aria-activedescendant on the textbox element. When a descendant of the popup element is active, authors MAY set aria-activedescendant on the textbox to a value that refers to the active element within the popup while focus remains on the textbox element.\n\nThe ARIA 1.0 specification describes a combobox pattern where a text input element has the combobox role and owns a listbox element. User agents, assistive technologies, and conformance checkers SHOULD continue to support the ARIA 1.0 pattern so that existing implementations of the ARIA 1.0 pattern remain functional.\n\nThe features and behaviors of combobox implementations vary widely. Consequently, there are many important authoring considerations. See the WAI-ARIA Authoring Practices Guide [wai-aria-practices-1.1] for additional details on implementing combobox design patterns.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["listbox", "tree", "grid", "dialog"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete"
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"required": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"required": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "command",
						"description": "A form of widget that performs an action but does not receive input data.\n\ncommand is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "complementary",
						"description": "A supporting section of the document, designed to be complementary to the main content at a similar level in the DOM hierarchy, but remains meaningful when separated from the main content.\n\nThere are various types of content that would appropriately have this role. For example, in the case of a portal, this may include but not be limited to show times, current weather, related articles, or stocks to watch. The complementary role indicates that contained content is relevant to the main content. If the complementary content is completely separable from the main content, it may be appropriate to use a more general role.\n\nUser agents SHOULD treat elements with the role of complementary as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "composite",
						"description": "A widget that may contain navigable descendants or owned children.\n\nAuthors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to elements that are descendants or owned children of the composite element.\n\ncomposite is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "contentinfo",
						"description": "A large perceivable region that contains information about the parent document.\n\nExamples of information included in this region of the page are copyrights and links to privacy statements.\n\nUser agents SHOULD treat elements with the role of contentinfo as navigational landmarks.\n\nWithin any document or application, the author SHOULD mark no more than one element with the contentinfo role.\n\nBecause document and application elements can be nested in the DOM, they may have multiple contentinfo elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "definition",
						"description": "A definition of a term or concept. See related term.\n\nAuthors SHOULD identify the element being defined by giving that element a role of term and referencing it with the aria-labelledby attribute.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "dialog",
						"description": "A dialog is a descendant window of the primary window of a web application. For HTML pages, the primary application window is the entire web document, i.e., the body element.\n\nDialogs are most often used to prompt the user to enter or respond to information. A dialog that is designed to interrupt workflow is usually modal. See related alertdialog.\n\nAuthors SHOULD provide a dialog label, which can be done with the aria-label or aria-labelledby attribute.\n\nAuthors SHOULD ensure that all dialogs (both modal and non-modal) have at least one focusable descendant element. Authors SHOULD focus an element in the modal dialog when it is displayed, and authors SHOULD manage focus of modal dialogs.\n\nIn the description of this role, the term \"web application\" does not refer to the application role, which specifies specific assistive technology behaviors.",
						"generalization": ["window"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "directory",
						"description": "A list of references to members of a group, such as a static table of contents.\n\nAuthors SHOULD use this role for a static table of contents, whether linked or unlinked. This includes tables of contents built with lists, including nested lists. Dynamic tables of contents, however, might use a tree role instead.",
						"generalization": ["list"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "document",
						"description": "An element containing content that assistive technology users may want to browse in a reading mode.\n\nWhen user agent focus moves to an element assigned the role of document, assistive technologies having a reading mode for browsing static content MAY switch to that reading mode and intercept standard input events, such as Up or Down arrow keyboard events, to control the reading cursor.\n\nBecause assistive technologies that have a reading mode default to that mode for all elements except for those with either a widget or application role, the only circumstance where the document role is useful for changing assistive technology behavior is when the element with role document is a focusable child element of a widget or application. For example, given an application element which contains some static rich text, the author can apply role document to the element containing the text and give it a tabindex of 0. When a screen reader user presses the Tab key and places focus on the document element, the user will be able to read the text with the screen reader's reading cursor.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "feed",
						"description": "A scrollable list of articles where scrolling may cause articles to be added to or removed from either end of the list.\n\nA feed enables users of assistive technologies that have a document browse mode, such as screen readers, to use the browse mode reading cursor to both read and scroll through a stream of rich content that may continue scrolling infinitely by loading more content as the user reads. In a feed, assistive technologies provide a web application with signals of the user's reading cursor movement by moving user agent focus, enabling the application to both add new content and visually position content as the user browses the page. The feed also lets authors inform assistive technologies when additions and removals are occurring so assistive technologies can more reliably update their reading view without disrupting reading or degrading performance.\n\nFor example, a feed could be used to present a stream of news stories where each article contains a story with text, links, images, and comments as well as widgets for sharing and commenting. As a screen reader user reads and interacts with each story and moves the screen reader reading cursor from story to story, each story scrolls into view and, as needed, new stories are loaded.\n\nA feed is a container element whose children have role article. When articles are added or removed from either or both ends of a feed, authors SHOULD set aria-busy to true on the feed element before the changes are made and set it to false after the changes are complete. Authors SHOULD avoid inserting or removing articles in the middle of a feed. These requirements help assistive technologies gracefully respond to changes in the feed content that occur simultaneously with user commands to move the reading cursor within the feed.\n\nAuthors SHOULD make each article in a feed focusable and ensure that the application scrolls an article into view when user agent focus is set on the article or one of its descendant elements. For example, in HTML, each article element should have a tabindex value of either -1 or 0.\n\nWhen an assistive technology reading cursor moves from one article to another, assistive technologies SHOULD set user agent focus on the article that contains the reading cursor. If the reading cursor lands on a focusable element inside the article, the assistive technology MAY set focus on that element in lieu of setting focus on the containing article.\n\nBecause the ability to scroll to another article with an assistive technology reading cursor depends on the presence of another article in the page, authors SHOULD attempt to load additional articles before user agent focus reaches an article at either end of the set of articles that has been loaded. Alternatively, authors MAY include an article at either or both ends of the loaded set of articles that includes an element, such as a button, that lets the user request more articles to be loaded.\n\nIn addition to providing a brief label, authors MAY apply aria-describedby to article elements in a feed to suggest to screen readers which elements to speak after the label when users navigate by article. Screen readers MAY provide users with a way to quickly scan feed content by speaking both the label and accessible description when navigating by article, enabling the user to ignore repetitive or less important elements, such as embedded interaction widgets, that the author has left out of the description.\n\nAuthors SHOULD provide keyboard commands for moving focus among articles in a feed so users who do not utilize an assistive technology that provides article navigation features can use the keyboard to navigate the feed.\n\nIf the number of articles available in a feed supply is static, authors MAY specify aria-setsize on article elements in that feed. However, if the total number is extremely large, indefinite, or changes often, authors MAY set aria-setsize to -1 to communicate the unknown size of the set.\n\nSee the WAI-ARIA Authoring Practices [wai-aria-practices-1.1] for additional details on implementing a feed design pattern.",
						"generalization": ["list"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["article"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "figure",
						"description": "A perceivable section of content that typically contains a graphical document, images, code snippets, or example text. The parts of a figure MAY be user-navigable.\n\nAuthors SHOULD provide a reference to the figure from the main text, but the figure need not be displayed at the same location as the referencing element. Authors MAY reference text serving as a caption using aria-describedby. Authors MAY provide a label using aria-label or MAY reference text serving as a label using aria-labelledby.\n\nAssistive technologies SHOULD enable users to quickly navigate to figures. Mainstream user agents MAY enable users to quickly navigate to figures.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "form",
						"description": "A landmark region that contains a collection of items and objects that, as a whole, combine to create a form. See related search.\n\nA form may be a mix of host language form controls, scripted controls, and hyperlinks. Authors are reminded to use native host language semantics to create form controls, whenever possible. For search facilities, authors SHOULD use the search role and not the generic form role. Authors SHOULD provide a visible label for the form referenced with aria-labelledby. If an author uses a script to submit a form based on a user action that would otherwise not trigger an onsubmit event (for example, a form submission triggered by the user changing a form element's value), the author SHOULD provide the user with advance notification of the behavior.\n\nUser agents SHOULD treat elements with the role of form as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "grid",
						"description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It may be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are owned by elements with role row, which are in turn owned by an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key may switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell may show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements owned by the grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nSee the WAI-ARIA Authoring Practices Guide [wai-aria-practices-1.1] for additional details on implementing grid design patterns.",
						"generalization": ["composite", "table"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "gridcell",
						"description": "A cell in a grid or treegrid.\n\nA gridcell may be focusable, editable, and selectable. A gridcell may have relationships such as aria-controls to address the application of functional relationships.\n\nIf an author intends a gridcell to have a row header, column header, or both, and if the relevant headers cannot be determined from the DOM structure, authors SHOULD explicitly indicate which header cells are relevant to the gridcell by applying aria-describedby on the gridcell and referencing elements with role rowheader or columnheader.\n\nIn a treegrid, authors MAY define a gridcell as expandable by using the aria-expanded attribute. If the aria-expanded attribute is provided, it applies only to the individual cell. It is not a proxy for the container row, which also can be expanded. The main use case for providing this attribute on a gridcell is pivot table behavior.\n\nAuthors MUST ensure elements with role gridcell are contained in, or owned by, an element with the role row.",
						"generalization": ["cell", "widget"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "group",
						"description": "A set of user interface objects which are not intended to be included in a page summary or table of contents by assistive technologies.\n\nContrast with region which is a grouping of user interface objects that will be included in a page summary or table of contents.\n\nAuthors SHOULD use a group to form logical collection of items in a widget such as children in a tree widget forming a collection of siblings in a hierarchy, or a collection of items having the same container in a directory. However, when a group is used in the context of list, authors MUST limit its children to listitem elements. Therefore, proper handling of group by authors and assistive technologies is determined by the context in which it is provided.\n\nAuthors MAY nest group elements. If a section is significant enough to warrant inclusion in the web page's table of contents, the author SHOULD assign the section a role of region or a standard landmark role.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "heading",
						"description": "A heading for a section of the page.\n\nOften, heading elements will be referenced with the aria-labelledby attribute of the section for which they serve as a heading. If headings are organized into a logical outline, the aria-level attribute is used to indicate the nesting level.",
						"generalization": ["sectionhead"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level",
								"required": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "img",
						"description": "A container for a collection of elements that form an image.\n\nAn img can contain captions and descriptive text, as well as multiple image files that when viewed together give the impression of a single image. An img represents a single graphic within a document, whether or not it is formed by a collection of drawing objects. In order for elements with a role of img be perceivable, authors MUST provide alternative text or a label determined by the accessible name calculation.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "input",
						"description": "A generic type of widget that allows user input.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "landmark",
						"description": "A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology.\n\nAuthors designate the purpose of the content by assigning a role that is a subclass of the landmark role and, when needed, by providing a brief, descriptive label.\n\nElements with a role that is a subclass of the landmark role are known as landmark regions or navigational landmark regions. Assistive technologies SHOULD enable users to quickly navigate to landmark regions. Mainstream user agents MAY enable users to quickly navigate to landmark regions.\n\nlandmark is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "link",
						"description": "An interactive reference to an internal or external resource that, when activated, causes the user agent to navigate to that resource. See related button.\n\nIf this is a native link in the host language (such as an HTML anchor with an href value), activating the link causes the user agent to navigate to that resource. If this is a simulated link, the web application author is responsible for managing navigation.\n\nIf pressing the link triggers an action but does not change browser focus or page location, authors are advised to consider using the button role instead of the link role.",
						"generalization": ["command"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "list",
						"description": "A section containing listitem elements. See related listbox.\n\nLists contain children whose role is listitem, or elements whose role is group which in turn contains children whose role is listitem.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["group > listitem", "listitem"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "listbox",
						"description": "A widget that allows the user to select one or more items from a list of choices. See related combobox and list.\n\nItems within the list are static and, unlike standard HTML select elements, may contain images. List boxes contain children whose role is option.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role listbox have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["option"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "listitem",
						"description": "A single item in a list or directory.\n\nAuthors MUST ensure elements with role listitem are contained in, or owned by, an element with the role list or group.",
						"generalization": ["section"],
						"requiredContextRole": ["group", "list"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "log",
						"description": "A type of live region where new information is added in meaningful order and old information may disappear. See related marquee.\n\nExamples include chat logs, messaging history, game log, or an error log. In contrast to other live regions, in this role there is a relationship between the arrival of new items in the log and the reading order. The log contains a meaningful sequence and new information is added only to the end of the log, not at arbitrary points.\n\nElements with the role log have an implicit aria-live value of polite.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "main",
						"description": "The main content of a document.\n\nThis marks the content that is directly related to or expands upon the central topic of the document. The main role is a non-obtrusive alternative for \"skip to main content\" links, where the navigation option to go to the main content (or other landmarks) is provided by the user agent through a dialog or by assistive technologies.\n\nUser agents SHOULD treat elements with the role of main as navigational landmarks.\n\nWithin any document or application, the author SHOULD mark no more than one element with the main role.\n\nBecause document and application elements can be nested in the DOM, they may have multiple main elements as DOM descendants, assuming each of those is associated with different document nodes, either by a DOM nesting (e.g., document within document) or by use of the aria-owns attribute.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "marquee",
						"description": "A type of live region where non-essential information changes frequently. See related log.\n\nCommon usages of marquee include stock tickers and ad banners. The primary difference between a marquee and a log is that logs usually have a meaningful order or sequence of important content changes.\n\nElements with the role marquee have an implicit aria-live value of off.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "math",
						"description": "Content that represents a mathematical expression.\n\nContent with the role math is intended to be marked up in an accessible format such as MathML [MathML3], or with another type of textual representation such as TeX or LaTeX, which can be converted to an accessible format by native browser implementations or a polyfill library.\n\nWhile it is not ideal to use an image of a mathematical expression, there exists a significant amount of legacy content where images are used to represent mathematical expressions. Authors SHOULD ensure that images of math are labeled by text that describes the mathematical expression as it might be spoken.\n\nBrowsers that support native implementations of MathML are able to provide a more robust, accessible math experience than can be accomplished with plain text approximations of math. Some rendering engines have close integration with screen readers that allow spacial touch exploration of the formula and refreshable braille display output in the Nemeth Braille format. This level of integration is not supported with images of mathematical formulas, even if the author provides a plain text approximation.\n\nAt the time of this writing, some mainstream browsers do not support MathML natively, and must be retrofit using a JavaScript polyfill library. When authoring math content, use native MathML wherever possible, and test thoroughly. Use a polyfill library or provide a fallback image with a text alternative approximation if necessary.\n\nIf a rendering engine does not support a native math format such as MathML, authors MAY use JavaScript to downgrade the content to a format the browser can display, such as this HTML image using a data URI and plain text alternative.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menu",
						"description": "A type of widget that offers a list of choices to the user.\n\nA menu is often a list of common actions or functions that the user can invoke. The menu role is appropriate when a list of menu items is presented in a manner similar to a menu on a desktop application.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menu have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": [
							"group > menuitemradio",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio"
						],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menubar",
						"description": "A presentation of menu that usually remains visible and is usually presented horizontally.\n\nThe menubar role is used to create a menu bar similar to those found in Windows, Mac, and Gnome desktop applications. A menu bar is used to create a consistent set of frequently used commands. Authors SHOULD ensure that menubar interaction is similar to the typical menu bar interaction in a desktop graphical user interface.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menubar have an implicit aria-orientation value of horizontal.",
						"generalization": ["menu"],
						"requiredContextRole": [],
						"requiredOwnedElements": [
							"group > menuitemradio",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio"
						],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitem",
						"description": "An option in a set of choices contained by a menu or menubar.\n\nAuthors MAY disable a menu item with the aria-disabled attribute. If the menu item has its aria-haspopup attribute set to true, it indicates that the menu item may be used to launch a sub-level menu, and authors SHOULD display a new sub-level menu when the menu item is activated.\n\nAuthors MUST ensure that menu items are owned by an element with role menu or menubar in order to identify that they are related widgets. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
						"generalization": ["command"],
						"requiredContextRole": ["group", "menu", "menubar"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitemcheckbox",
						"description": "A menuitem with a checkable state whose possible values are true, false, or mixed.\n\nThe aria-checked attribute of a menuitemcheckbox indicates whether the menu item is checked (true), unchecked (false), or represents a sub-level menu of other menu items that have a mixture of checked and unchecked values (mixed).\n\nAuthors MUST ensure that menu item checkboxes are owned by an element with role menu or menubar in order to identify that they are related widgets. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
						"generalization": ["checkbox", "menuitem"],
						"requiredContextRole": ["menu", "menubar"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "menuitemradio",
						"description": "A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time.\n\nAuthors SHOULD enforce that only one menuitemradio in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).\n\nAuthors MUST ensure that menu item radios are owned by an element with role group, menu, or menubar in order to identify that they are related widgets. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.\n\nIf a menu or menubar contains more than one group of menuitemradio elements, or if the menu contains one group and other, unrelated menu items, authors SHOULD nest each set of related menuitemradio elements in an element using the group role, and authors SHOULD delimit the group from other menu items with an element using the separator role.",
						"generalization": ["menuitemcheckbox", "radio"],
						"requiredContextRole": ["group", "menu", "menubar"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "navigation",
						"description": "A collection of navigational elements (usually links) for navigating the document or related documents.\n\nUser agents SHOULD treat elements with the role of navigation as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "none",
						"description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym presentation.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.\n\nUntil implementations include sufficient support for role=\"none\", web authors are advised to use the presentation role alone role=\"presentation\" or redundantly as a fallback to the none role role=\"none presentation\".",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "note",
						"description": "A section whose content is parenthetic or ancillary to the main content of the resource.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "option",
						"description": "A selectable item in a select list.\n\nAuthors MUST ensure elements with role option are contained in, or owned by, an element with the role listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.\n\nElements with the role option have an implicit aria-selected value of false.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"required": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "presentation",
						"description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym none.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.\n\nUntil implementations include sufficient support for role=\"none\", web authors are advised to use the presentation role alone role=\"presentation\" or redundantly as a fallback to the none role role=\"none presentation\".\n\nThe intended use is when an element is used to change the look of the page but does not have all the functional, interactive, or structural relevance implied by the element type, or may be used to provide for an accessible fallback in older browsers that do not support WAI-ARIA.\n\nExample use cases:\n\nFor any element with a role of presentation and which is not focusable, the user agent MUST NOT expose the implicit native semantics of the element (the role and its states and properties) to accessibility APIs. However, the user agent MUST expose content and descendant elements that do not have an explicit or inherited role of presentation. Thus, the presentation role causes a given element to be treated as having no role or to be removed from the accessibility tree, but does not cause the content contained within the element to be removed from the accessibility tree.\n\nFor example, according to an accessibility API, the following markup elements would appear to have identical role semantics (no role) and identical content.\n\nThe presentation role is used on an element that has implicit native semantics, meaning that there is a default accessibility API role for the element. Some elements are only complete when additional descendant elements are provided. For example, in HTML, table elements (matching the grid role) require tr descendants (the row role), which in turn require th or td children (the gridcell, columnheader, rowheader roles). Similarly, lists require list item children. The descendant elements that complete the semantics of an element are described in WAI-ARIA as required owned elements.\n\nWhen an explicit or inherited role of presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has required owned elements, in addition to the element with the explicit role of presentation, the user agent MUST apply an inherited role of presentation to any owned elements that do not have an explicit role defined. Also, when an explicit or inherited role of presentation is applied to a host language element which has required children as defined by the host language specification, in addition to the element with the explicit role of presentation, the user agent MUST apply an inherited role of presentation to any required children that do not have an explicit role defined.\n\nIn HTML, the img element is treated as a single entity regardless of the type of image file. Consequently, using role=\"presentation\" or role=\"none\" on an HTML img is equivalent to using aria-hidden=\"true\". In order to make the image contents accessible, authors can embed the object using an object or iframe element, or use inline SVG code, and follow the accessibility guidelines for the image content.\n\nFor any element with an explicit or inherited role of presentation and which is not focusable, user agents MUST ignore role-specific WAI-ARIA states and properties for that element. For example, in HTML, a ul or ol element with a role of presentation will have the implicit native semantics of its li elements removed because the list role to which the ul or ol corresponds has a required owned element of listitem. Likewise, although an HTML table element does not have an implicit native semantic role corresponding directly to a WAI-ARIA role, the implicit native semantics of its thead/tbody/tfoot/tr/th/td descendants will also be removed, because the HTML specification indicates that these are required structural descendants of the table element.\n\nOnly the implicit native semantics of elements that correspond to WAI-ARIA required owned elements are removed. All other content remains intact, including nested tables or lists, unless those elements also have a explicit role of presentation applied.\n\nFor example, according to an accessibility API, the following markup elements would appear to have identical role semantics (no roles) and identical content.\n\nThere are other WAI-ARIA roles with required children for which this situation is applicable (e.g., radiogroups and listboxes), but tables and lists are the most common real-world cases in which the presentation inheritance is likely to apply.\n\nFor any element with an explicit or inherited role of presentation, user agents MUST apply an inherited role of presentation to all host-language-specific labeling elements for the presentational element. For example, a table element with a role of presentation will have the implicit native semantics of its caption element removed, because the caption is merely a label for the presentational table.\n\nAuthors SHOULD NOT provide meaningful alternative text (for example, use alt=\"\" in HTML) when the presentation role is applied to an image.\n\nIn the following code sample, the containing img and is appropriately labeled by the caption paragraph. In this example the img element can be marked as presentation because the role and the text alternatives are provided by the containing element.\n\nIn the following code sample, because the anchor (HTML a element) is acting as the treeitem, the list item (HTML li element) is assigned an explicit WAI-ARIA role of presentation to override the user agent's implicit native semantics for list items.\n\nThere are a number of ways presentational role conflicts are resolved.\n\nHost languages elements, having implicit presentational roles for which no roles, may be applied, MUST never be exposed to in the accessibility tree. With this exception, user agents MUST always expose global WAI-ARIA states and properties to accessibility APIs. In this case, the user agent ignores the presentation role and exposes the element according to its implicit native semantics. However, user agents MUST ignore any non-global, role-specific WAI-ARIA states and properties, unless it is on an inherited presentational role where an explicit role is applied.\n\nFor example, aria-haspopup is a global attribute and would always be applied; aria-level is not a global attribute and would therefore only apply if the element was not in a presentational state.\n\nExplicit roles on a descendant or owned element override the inherited role of presentation, and cause the owned element to behave as any other element with an explicit role. If the action of exposing the implicit role causes the accessibility tree to be malformed, the expected results are undefined and the user agent MAY resort to an internal recovery mechanism to repair the accessibility tree.\n\nIf an element with a role of presentation is focusable, or otherwise interactive, user agents MUST ignore the normal effect of the role and expose the element with implicit native semantics, in order to ensure that the element is both understandable and operable.\n\nUser agents MUST always expose global WAI-ARIA states and properties to accessibility APIs, even if an element has an explicit or inherited role of presentation. In this case, the user agent ignores the presentation role and exposes the element according to its implicit native semantics. However, user agents MUST ignore any non-global, role-specific WAI-ARIA states and properties, unless it is on an inherited presentational role where an explicit role is applied.",
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "progressbar",
						"description": "An element that displays the progress status for tasks that take a long time.\n\nA progressbar indicates that the user's request has been received and the application is making progress toward completing the requested action. The author SHOULD supply values for aria-valuenow, aria-valuemin, and aria-valuemax, unless the value is indeterminate, in which case the author SHOULD omit the aria-valuenow attribute. Authors SHOULD update these values when the visual progress indicator is updated. If the progressbar is describing the loading progress of a particular region of a page, the author SHOULD use aria-describedby to point to the status, and set the aria-busy attribute to true on the region until it is finished loading. It is not possible for the user to alter the value of a progressbar because it is always readonly.\n\nAssistive technologies generally will render the value of aria-valuenow as a percent of a range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified. It is best to set the values for aria-valuemin, aria-valuemax, and aria-valuenow in a manner that is appropriate for this calculation.",
						"generalization": ["range", "status"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"inherited": true
							},
							{
								"name": "aria-valuemin",
								"inherited": true
							},
							{
								"name": "aria-valuenow",
								"inherited": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "radio",
						"description": "A checkable input in a group of elements with the same role, only one of which can be checked at a time.\n\nAuthors SHOULD ensure that elements with role radio are explicitly grouped in order to indicate which ones affect the same value. This is achieved by enclosing the radio elements in an element with role radiogroup. If it is not possible to make the radio buttons DOM children of the radiogroup, authors SHOULD use the aria-owns attribute on the radiogroup element to indicate the relationship to its children.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "radiogroup",
						"description": "A group of radio buttons.\n\nA radiogroup is a type of select list that can only have a single entry checked at any one time. Authors SHOULD enforce that only one radio button in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["radio"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "range",
						"description": "An input representing a range of values that can be set by the user.\n\nrange is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax"
							},
							{
								"name": "aria-valuemin"
							},
							{
								"name": "aria-valuenow"
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "region",
						"description": "A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology.\n\nAuthors SHOULD limit use of the region role to sections containing content with a purpose that is not accurately described by one of the other landmark roles, such as main, complementary, or navigation.\n\nAuthors MUST give each element with role region a brief label that describes the purpose of the content in the region. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present. Authors SHOULD include the label inside of a heading whenever possible. The heading MAY be an instance of the standard host language heading element or an instance of an element with role heading.\n\nAssistive technologies SHOULD enable users to quickly navigate to elements with role region. Mainstream user agents MAY enable users to quickly navigate to elements with role region.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "roletype",
						"description": "The base role from which all other roles in this taxonomy inherit.\n\nProperties of this role describe the structural and functional purpose of objects that are assigned this role (known in RDF terms as \"instances\"). A role is a concept that can be used to understand and operate instances.\n\nroletype is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": [],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic"
							},
							{
								"name": "aria-busy"
							},
							{
								"name": "aria-controls"
							},
							{
								"name": "aria-current"
							},
							{
								"name": "aria-describedby"
							},
							{
								"name": "aria-details"
							},
							{
								"name": "aria-disabled"
							},
							{
								"name": "aria-dropeffect"
							},
							{
								"name": "aria-errormessage"
							},
							{
								"name": "aria-flowto"
							},
							{
								"name": "aria-grabbed"
							},
							{
								"name": "aria-haspopup"
							},
							{
								"name": "aria-hidden"
							},
							{
								"name": "aria-invalid"
							},
							{
								"name": "aria-keyshortcuts"
							},
							{
								"name": "aria-label"
							},
							{
								"name": "aria-labelledby"
							},
							{
								"name": "aria-live"
							},
							{
								"name": "aria-owns"
							},
							{
								"name": "aria-relevant"
							},
							{
								"name": "aria-roledescription"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "row",
						"description": "A row of cells in a tabular container.\n\nRows contain cell or gridcell elements, and thus serve to organize the table or grid.\n\nIn a treegrid, authors MAY mark rows as expandable, using the aria-expanded attribute to indicate the present status. This is not the case for an ordinary table or grid, in which the aria-expanded attribute is not present.\n\nAuthors MUST ensure elements with role row are contained in, or owned by, an element with the role table, grid, rowgroup, or treegrid.",
						"generalization": ["group", "widget"],
						"requiredContextRole": ["grid", "rowgroup", "table", "treegrid"],
						"requiredOwnedElements": ["cell", "columnheader", "gridcell", "rowheader"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex"
							},
							{
								"name": "aria-selected"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "rowgroup",
						"description": "A structure containing one or more row elements in a tabular container.\n\nThe rowgroup role establishes a relationship between owned row elements. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.\n\nAuthors MUST ensure elements with role rowgroup are contained in, or owned by, an element with the role table or grid.\n\nThe rowgroup role exists, in part, to support role symmetry in HTML, and allows for the propagation of presentation inheritance on HTML table elements with an explicit presentation role applied.\n\nThis role does not differentiate between types of row groups (e.g., thead vs. tbody), but an issue has been raised for WAI-ARIA 2.0.",
						"generalization": ["structure"],
						"requiredContextRole": ["grid", "table", "treegrid"],
						"requiredOwnedElements": ["row"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "rowheader",
						"description": "A cell containing header information for a row in a grid.\n\nRowheader can be used as a row header in a table or grid. The rowheader establishes a relationship between it and all cells in the corresponding row. It is a structural equivalent to setting scope=\"row\" on an HTML th element.\n\nAuthors MUST ensure elements with role rowheader are contained in, or owned by, an element with the role grid.\n\nApplying the aria-selected state on a rowheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding row. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the rowheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a rowheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the rowheader descends from a grid.",
						"generalization": ["cell", "gridcell", "sectionhead"],
						"requiredContextRole": ["row"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colindex",
								"inherited": true
							},
							{
								"name": "aria-colspan",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowindex",
								"inherited": true
							},
							{
								"name": "aria-rowspan",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-sort"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "scrollbar",
						"description": "A graphical object that controls the scrolling of content within a viewing area, regardless of whether the content is fully displayed within the viewing area.\n\nA scrollbar represents the current value and range of possible values via the size of the scrollbar and position of the thumb with respect to the visible range of the orientation (horizontal or vertical) it controls. Its orientation represents the orientation of the scrollbar and the scrolling effect on the viewing area controlled by the scrollbar. It is typically possible to add or subtract to the current value by using directional keys such as arrow keys.\n\nAuthors MUST set the aria-controls attribute on the scrollbar element to reference the scrollable area it controls.\n\nAuthors MUST set the aria-valuemin, aria-valuemax, and aria-valuenow attributes. If missing, their implicit values follow the same rules as the HTML range input type:\n\nElements with the role scrollbar have an implicit aria-orientation value of vertical.\n\nAssistive technologies generally will render the value of aria-valuenow as a percent of a range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified. It is best to set the values for aria-valuemin, aria-valuemax, and aria-valuenow in a manner that is appropriate for this calculation.",
						"generalization": ["range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"required": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"required": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"required": true
							},
							{
								"name": "aria-valuemin",
								"required": true
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "search",
						"description": "A landmark region that contains a collection of items and objects that, as a whole, combine to create a search facility. See related form and searchbox.\n\nA search region may be a mix of host language form controls, scripted controls, and hyperlinks.\n\nUser agents SHOULD treat elements with the role of search as navigational landmarks.",
						"generalization": ["landmark"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "searchbox",
						"description": "A type of textbox intended for specifying search criteria. See related textbox and search.",
						"generalization": ["textbox"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiline",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-placeholder",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "section",
						"description": "A renderable structural containment unit in a document or application.\n\nsection is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "sectionhead",
						"description": "A structure that labels or summarizes the topic of its related section.\n\nsectionhead is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["structure"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "select",
						"description": "A form widget that allows the user to make selections from a set of choices.\n\nselect is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["composite", "group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "separator",
						"description": "A divider that separates and distinguishes sections of content or groups of menuitems.\n\nThere are two types of separators: a static structure that provides only a visible boundary and a focusable, interactive widget that is also moveable. If a separator is not focusable, it is revealed to assistive technologies as a static structural element. For example, a static separator can be used to help visually divide two groups of menu items in a menu or to provide a horizontal rule between two sections of a page.\n\nAuthors MAY make a separator focusable to create a widget that both provides a visible boundary between two sections of content and enables the user to change the relative size of the sections by changing the position of the separator. A variable separator widget can be moved continuously within a range, whereas a fixed separator widget supports only two discrete positions. Typically, a fixed separator widget is used to toggle one of the sections between expanded and collapsed states.\n\nIf the separator is focusable, authors MUST set the value of aria-valuenow to a number reflecting the current position of the separator and update that value when it changes. Authors SHOULD also provide the value of aria-valuemin if it is not 0 and the value of aria-valuemax if it is not 100. If missing or not a number, the implicit values of these attributes are as follows:\n\nIn applications where there is more than one focusable separator, authors SHOULD provide an accessible name for each one.\n\nElements with the role separator have an implicit aria-orientation value of horizontal.",
						"generalization": ["structure", "widget"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"required": true
							},
							{
								"name": "aria-valuemin",
								"required": true
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "slider",
						"description": "A user input where the user selects a value from within a given range.\n\nA slider represents the current value and range of possible values via the size of the slider and position of the thumb. It is typically possible to add or subtract to the value by using directional keys such as arrow keys.\n\nAuthors MUST set the aria-valuemin, aria-valuemax, and aria-valuenow attributes. If missing, their implicit values follow the same rules as the HTML range input type:\n\nElements with the role slider have an implicit aria-orientation value of horizontal.",
						"generalization": ["input", "range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"required": true
							},
							{
								"name": "aria-valuemin",
								"required": true
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "spinbutton",
						"description": "A form of range that expects the user to select from among discrete choices.\n\nA spinbutton typically allows the user to select from the given range through the use of an up and down button on the keyboard. Visibly, the current value is incremented or decremented until a maximum or minimum value is reached. Authors SHOULD ensure this functionality is accomplished programmatically through the use of up and down arrows on the keyboard.\n\nAlthough a spinbutton is similar in appearance to many presentations of select, it is advisable to use spinbutton when working with known ranges (especially in the case of large ranges) as opposed to distinct options. For example, a spinbutton representing a range from 1 to 1,000,000 would provide much better performance than a select widget representing the same values.\n\nAuthors MAY create a spinbutton with children or owned elements, but MUST limit those elements to a textbox and/or two buttons.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a spinbutton receives focus, authors SHOULD ensure focus is placed on the textbox element if one is present, and on the spinbutton itself otherwise. Authors SHOULD NOT include contained button elements in the primary navigation ring, e.g., the Tab ring in HTML, because they are superfluous for people using keyboard devices.\n\nAuthors MUST set the aria-valuenow attribute. Authors SHOULD set the aria-valuemin attribute when there is a minimum value, and the aria-valuemax attribute when there is a maximum value. If missing or not a number, the implicit values of these attributes are as follows:",
						"generalization": ["composite", "input", "range"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-valuemax",
								"required": true
							},
							{
								"name": "aria-valuemin",
								"required": true
							},
							{
								"name": "aria-valuenow",
								"required": true
							},
							{
								"name": "aria-valuetext",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "status",
						"description": "A type of live region whose content is advisory information for the user but is not important enough to justify an alert, often but not necessarily presented as a status bar.\n\nAuthors SHOULD ensure an element with role status does not receive focus as a result of change in status.\n\nStatus is a form of live region. If another part of the page controls what appears in the status, authors SHOULD make the relationship explicit with the aria-controls attribute.\n\nAssistive technologies MAY reserve some cells of a Braille display to render the status.\n\nElements with the role status have an implicit aria-live value of polite and an implicit aria-atomic value of true.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "structure",
						"description": "A document structural element.\n\nRoles for document structure support the accessibility of dynamic web content by helping assistive technologies determine active content versus static document content. Structural roles by themselves do not all map to accessibility APIs, but are used to create widget roles or assist content adaptation for assistive technologies.\n\nstructure is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "switch",
						"description": "A type of checkbox that represents on/off values, as opposed to checked/unchecked values. See related checkbox.\n\nThe aria-checked attribute of a switch indicates whether the input is on (true) or off (false). The mixed value is invalid, and user agents MUST treat a mixed value as equivalent to false for this role.\n\nA switch provides approximately the same functionality as a checkbox and toggle button, but makes it possible for assistive technologies to present the widget in a fashion consistent with its on-screen appearance.",
						"generalization": ["checkbox"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"required": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tab",
						"description": "A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user.\n\nIf a tabpanel or item in a tabpanel has focus, the associated tab is the currently active tab in the tablist, as defined in Managing Focus. tablist elements, which contain a set of associated tab elements, are typically placed near a series of tabpanel elements, usually preceding it. See the WAI-ARIA Authoring Practices [wai-aria-practices-1.1] for details on implementing a tab set design pattern.\n\nAuthors MUST ensure elements with role tab are contained in, or owned by, an element with the role tablist.\n\nAuthors SHOULD ensure the tabpanel associated with the currently active tab is perceivable to the user.\n\nFor a single-selectable tablist, authors SHOULD hide other tabpanel elements from the user until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure each visible tabpanel has its aria-expanded attribute set to true, and that the remaining hidden tabpanel elements have their aria-expanded attributes set to false.\n\nIn either case, authors SHOULD ensure that a selected tab has its aria-selected attribute set to true, that inactive tab elements have their aria-selected attribute set to false, and that the currently selected tab provides a visual indication that it is selected. In the absence of an aria-selected attribute on the current tab, user agents SHOULD indicate to assistive technologies through the platform accessibility API that the currently focused tab is selected.",
						"generalization": ["sectionhead", "widget"],
						"requiredContextRole": ["tablist"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected"
							},
							{
								"name": "aria-setsize"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "table",
						"description": "A section containing data arranged in rows and columns. See related grid.\n\nThe table role is intended for tabular containers which are not interactive. If the tabular container maintains a selection state, provides its own two-dimensional navigation, or allows the user to rearrange or otherwise manipulate its contents or the display thereof, authors SHOULD use grid or treegrid instead.\n\nAuthors SHOULD prefer the use of the host language's semantics for table whenever possible, such as the HTML table element.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount"
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount"
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tablist",
						"description": "A list of tab elements, which are references to tabpanel elements.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nFor a single-selectable tablist, authors SHOULD hide other tabpanel elements from the user until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure each visible tabpanel has its aria-expanded attribute set to true, and that the remaining hidden tabpanel elements have their aria-expanded attributes set to false.\n\ntablist elements are typically placed near usually preceding, a series of tabpanel elements. See the WAI-ARIA Authoring Practices [wai-aria-practices-1.1] for details on implementing a tab set design pattern.\n\nElements with the role tablist have an implicit aria-orientation value of horizontal.",
						"generalization": ["composite"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["tab"],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level"
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tabpanel",
						"description": "A container for the resources associated with a tab, where each tab is contained in a tablist.\n\nAuthors SHOULD associate a tabpanel element with its tab, either by using the aria-controls attribute on the tab to reference the tab panel, or by using the aria-labelledby attribute on the tab panel to reference the tab.\n\ntablist elements are typically placed near, usually preceding, a series of tabpanel elements. See the WAI-ARIA Authoring Practices [wai-aria-practices-1.1] for details on implementing a tab set design pattern.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "term",
						"description": "A word or phrase with a corresponding definition. See related definition.\n\nThe term role is used to explicitly identify a word or phrase for which a definition has been provided by the author or is expected to be provided by the user.\n\nAuthors SHOULD NOT use the term role on interactive elements such as links because doing so could prevent users of assistive technologies from interacting with those elements.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "textbox",
						"description": "A type of input that allows free-form text as its value.\n\nIf the aria-multiline attribute is true, the widget accepts line breaks within the input, as in an HTML textarea. Otherwise, this is a simple text box. The intended use is for languages that do not have a text input element, or cases in which an element with different semantics is repurposed as a text field.\n\nIn most user agent implementations, the default behavior of the ENTER or RETURN key is different between the single-line and multi-line text fields in HTML. When user has focus in a single-line <input type=\"text\"> element, the keystroke usually submits the form. When user has focus in a multi-line <textarea> element, the keystroke inserts a line break. The WAI-ARIA textbox role differentiates these types of boxes with the aria-multiline attribute, so authors are advised to be aware of this distinction when designing the field.",
						"generalization": ["input"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant"
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-autocomplete"
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiline"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-placeholder"
							},
							{
								"name": "aria-readonly"
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "timer",
						"description": "A type of live region containing a numerical counter which indicates an amount of elapsed time from a start point, or the time remaining until an end point.\n\nThe text contents of the timer object indicate the current time measurement, and are updated as that amount changes. The timer value is not necessarily machine parsable, but authors SHOULD update the text contents at fixed intervals, except when the timer is paused or reaches an end-point.\n\nElements with the role timer have an implicit aria-live value of off.",
						"generalization": ["status"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "toolbar",
						"description": "A collection of commonly used function buttons or controls represented in compact visual form.\n\nThe toolbar is often a subset of functions found in a menubar, designed to reduce user effort in using these functions. Authors MUST supply a label on each toolbar when the application contains more than one toolbar.\n\nAuthors MAY manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role toolbar have an implicit aria-orientation value of horizontal.",
						"generalization": ["group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-orientation"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tooltip",
						"description": "A contextual popup that displays a description for an element.\n\nThe tooltip typically becomes visible in response to a mouse hover, or after the owning element receives keyboard focus. In each of these cases, authors SHOULD display the tooltip after a short delay. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.\n\nTypical tooltip delays last from one to five seconds.\n\nAuthors SHOULD ensure that elements with the role tooltip are referenced through the use of aria-describedby before or at the time the tooltip is displayed.",
						"generalization": ["section"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "tree",
						"description": "A type of list that may contain sub-level nested groups that can be collapsed and expanded.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role tree have an implicit aria-orientation value of vertical.",
						"generalization": ["select"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["group > treeitem", "treeitem"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable"
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required"
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "treegrid",
						"description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements owned by the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.",
						"generalization": ["grid", "tree"],
						"requiredContextRole": [],
						"requiredOwnedElements": ["row", "rowgroup > row"],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-colcount",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-multiselectable",
								"inherited": true
							},
							{
								"name": "aria-orientation",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-readonly",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-required",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-rowcount",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "treeitem",
						"description": "An option item of a tree. This is an element within a tree that may be expanded or collapsed if it contains a sub-level group of tree item elements.\n\nA collection of treeitem elements to be expanded and collapsed are enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are contained in, or owned by, an element with the role group or tree.",
						"generalization": ["listitem", "option"],
						"requiredContextRole": ["group", "tree"],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-checked",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-level",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-posinset",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							},
							{
								"name": "aria-selected",
								"inherited": true
							},
							{
								"name": "aria-setsize",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "widget",
						"description": "An interactive component of a graphical user interface (GUI).\n\nWidgets are discrete user interface objects with which the user can interact. Widget roles map to standard features in accessibility APIs. When the user navigates an element assigned any of the non-abstract subclass roles of widget, assistive technologies that typically intercept standard keyboard events SHOULD switch to an application browsing mode, and pass keyboard events through to the web application. The intent is to hint to certain assistive technologies to switch from normal browsing mode into a mode more appropriate for interacting with a web application; some user agents have a browse navigation mode where keys, such as up and down arrows, are used to browse the document, and this native behavior prevents the use of these keys by a web application.\n\nwidget is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": false,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "window",
						"description": "A browser or application window.\n\nElements with this role have a window-like behavior in a graphical user interface (GUI) context, regardless of whether they are implemented as a native window in the operating system, or merely as a section of the document styled to look like a window.\n\nIn the description of this role, the term \"application\" does not refer to the application role, which specifies specific assistive technology behaviors.\n\nwindow is an abstract role used for the ontology. Authors should not use this role in content.",
						"isAbstract": true,
						"generalization": ["roletype"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded"
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-modal"
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					}
				],
				"props": [
					{
						"name": "aria-activedescendant",
						"type": "property",
						"value": "ID reference",
						"enum": []
					},
					{
						"name": "aria-atomic",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Assistive technologies will present only the changed node or nodes.",
							"true": "Assistive technologies will present the entire changed region as a whole, including the author-defined label if one exists."
						}
					},
					{
						"name": "aria-autocomplete",
						"type": "property",
						"value": "token",
						"enum": ["inline", "list", "both", "none"],
						"defaultValue": "none",
						"valueDescriptions": {
							"inline": "When a user is providing input, text suggesting one way to complete the provided input may be dynamically inserted after the caret.",
							"list": "When a user is providing input, an element containing a collection of values that could complete the provided input may be displayed.",
							"both": "When a user is providing input, an element containing a collection of values that could complete the provided input may be displayed. If displayed, one value in the collection is automatically selected, and the text needed to complete the automatically selected value appears after the caret in the input.",
							"none": "When a user is providing input, an automatic suggestion that attempts to predict how the user intends to complete the input is not displayed."
						}
					},
					{
						"name": "aria-busy",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "There are no expected updates for the element.",
							"true": "The element is being updated."
						}
					},
					{
						"name": "aria-checked",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "undefined",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "checked",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The element supports being checked but is not currently checked.",
							"mixed": "Indicates a mixed mode value for a tri-state checkbox or menuitemcheckbox.",
							"true": "The element is checked.",
							"undefined": "The element does not support being checked."
						},
						"conditionalValue": [
							{
								"role": ["checkbox", "menuitemcheckbox"],
								"value": "tristate"
							}
						]
					},
					{
						"name": "aria-colcount",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-colindex",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-colspan",
						"type": "property",
						"value": "integer",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "colspan",
								"value": null
							}
						]
					},
					{
						"name": "aria-controls",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-current",
						"type": "state",
						"value": "token",
						"enum": ["page", "step", "location", "date", "time", "true", "false"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"page": "Represents the current page within a set of pages.",
							"step": "Represents the current step within a process.",
							"location": "Represents the current location within an environment or context.",
							"date": "Represents the current date within a collection of dates.",
							"time": "Represents the current time within a set of times.",
							"true": "Represents the current item within a set.",
							"false": "Does not represent the current item within a set."
						}
					},
					{
						"name": "aria-describedby",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-details",
						"type": "property",
						"value": "ID reference",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-disabled",
						"type": "state",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"isGlobal": true,
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "disabled",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The element is enabled.",
							"true": "The element and all focusable descendants are disabled and its value cannot be changed by the user."
						}
					},
					{
						"name": "aria-dropeffect",
						"type": "property",
						"deprecated": true,
						"value": "token list",
						"enum": ["copy", "execute", "link", "move", "none", "popup"],
						"defaultValue": "none",
						"isGlobal": true,
						"valueDescriptions": {
							"copy": "A duplicate of the source object will be dropped into the target.",
							"execute": "A function supported by the drop target is executed, using the drag source as an input.",
							"link": "A reference or shortcut to the dragged object will be created in the target object.",
							"move": "The source object will be removed from its current location and dropped into the target.",
							"none": "No operation can be performed; effectively cancels the drag operation if an attempt is made to drop on this object. Ignored if combined with any other token value. e.g., 'none copy' is equivalent to a 'copy' value.",
							"popup": "There is a popup menu or dialog that allows the user to choose one of the drag operations (copy, move, link, execute) and any other drag functionality, such as cancel."
						}
					},
					{
						"name": "aria-errormessage",
						"type": "property",
						"value": "ID reference",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-expanded",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The element, or another grouping element it controls, is collapsed.",
							"true": "The element, or another grouping element it controls, is expanded.",
							"undefined": "The element, or another grouping element it controls, is neither expandable nor collapsible; all its child elements are shown or there are no child elements."
						}
					},
					{
						"name": "aria-flowto",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-grabbed",
						"type": "state",
						"deprecated": true,
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Indicates that the element supports being dragged.",
							"true": "Indicates that the element has been \"grabbed\" for dragging.",
							"undefined": "Indicates that the element does not support being dragged."
						}
					},
					{
						"name": "aria-haspopup",
						"type": "property",
						"value": "token",
						"enum": ["false", "true", "menu", "listbox", "tree", "grid", "dialog"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"false": "Indicates the element does not have a popup.",
							"true": "Indicates the popup is a menu.",
							"menu": "Indicates the popup is a menu.",
							"listbox": "Indicates the popup is a listbox.",
							"tree": "Indicates the popup is a tree.",
							"grid": "Indicates the popup is a grid.",
							"dialog": "Indicates the popup is a dialog."
						}
					},
					{
						"name": "aria-hidden",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"isGlobal": true,
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "hidden",
								"value": "true",
								"isNotStrictEquivalent": true
							}
						],
						"valueDescriptions": {
							"false": "The element is exposed to the accessibility API as if it was rendered.",
							"true": "The element is hidden from the accessibility API.",
							"undefined": "The element's hidden state is determined by the user agent based on whether it is rendered."
						}
					},
					{
						"name": "aria-invalid",
						"type": "state",
						"value": "token",
						"enum": ["grammar", "false", "spelling", "true"],
						"defaultValue": "false",
						"isGlobal": true,
						"valueDescriptions": {
							"grammar": "A grammatical error was detected.",
							"false": "There are no detected errors in the value.",
							"spelling": "A spelling error was detected.",
							"true": "The value entered by the user has failed validation."
						}
					},
					{
						"name": "aria-keyshortcuts",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-label",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-labelledby",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-level",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-live",
						"type": "property",
						"value": "token",
						"enum": ["assertive", "off", "polite"],
						"defaultValue": "off",
						"isGlobal": true,
						"valueDescriptions": {
							"assertive": "Indicates that updates to the region have the highest priority and should be presented the user immediately.",
							"off": "Indicates that updates to the region should not be presented to the user unless the used is currently focused on that region.",
							"polite": "Indicates that updates to the region should be presented at the next graceful opportunity, such as at the end of speaking the current sentence or when the user pauses typing."
						}
					},
					{
						"name": "aria-modal",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "Element is not modal.",
							"true": "Element is modal."
						}
					},
					{
						"name": "aria-multiline",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "This is a single-line text box.",
							"true": "This is a multi-line text box."
						}
					},
					{
						"name": "aria-multiselectable",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"valueDescriptions": {
							"false": "Only one item can be selected.",
							"true": "More than one item in the widget may be selected at a time."
						}
					},
					{
						"name": "aria-orientation",
						"type": "property",
						"value": "token",
						"enum": ["horizontal", "undefined", "vertical"],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"horizontal": "The element is oriented horizontally.",
							"undefined": "The element's orientation is unknown/ambiguous.",
							"vertical": "The element is oriented vertically."
						}
					},
					{
						"name": "aria-owns",
						"type": "property",
						"value": "ID reference list",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-placeholder",
						"type": "property",
						"value": "string",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "placeholder",
								"value": null
							}
						]
					},
					{
						"name": "aria-posinset",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-pressed",
						"type": "state",
						"value": "tristate",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The element supports being pressed but is not currently pressed.",
							"mixed": "Indicates a mixed mode value for a tri-state toggle button.",
							"true": "The element is pressed.",
							"undefined": "The element does not support being pressed."
						}
					},
					{
						"name": "aria-readonly",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "readonly",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "The user can set the value of the element.",
							"true": "The user cannot change the value of the element."
						}
					},
					{
						"name": "aria-relevant",
						"type": "property",
						"value": "token list",
						"enum": ["additions", "additions text", "all", "removals", "text"],
						"defaultValue": "additions text",
						"isGlobal": true,
						"valueDescriptions": {
							"additions": "Element nodes are added to the accessibility tree within the live region.",
							"additions text": "Equivalent to the combination of values, \"additions text\".",
							"all": "Equivalent to the combination of all values, \"additions removals text\".",
							"removals": "Text content, a text alternative, or an element node within the live region is removed from the accessibility tree.",
							"text": "Text content or a text alternative is added to any descendant in the accessibility tree of the live region."
						}
					},
					{
						"name": "aria-required",
						"type": "property",
						"value": "true/false",
						"enum": [],
						"defaultValue": "false",
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "required",
								"value": "true"
							}
						],
						"valueDescriptions": {
							"false": "User input is not necessary to submit the form.",
							"true": "Users need to provide input on an element before a form is submitted."
						}
					},
					{
						"name": "aria-roledescription",
						"type": "property",
						"value": "string",
						"enum": [],
						"isGlobal": true
					},
					{
						"name": "aria-rowcount",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-rowindex",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-rowspan",
						"type": "property",
						"value": "integer",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "rowspan",
								"value": null
							}
						]
					},
					{
						"name": "aria-selected",
						"type": "state",
						"value": "true/false/undefined",
						"enum": [],
						"defaultValue": "undefined",
						"valueDescriptions": {
							"false": "The selectable element is not selected.",
							"true": "The selectable element is selected.",
							"undefined": "The element is not selectable."
						}
					},
					{
						"name": "aria-setsize",
						"type": "property",
						"value": "integer",
						"enum": []
					},
					{
						"name": "aria-sort",
						"type": "property",
						"value": "token",
						"enum": ["ascending", "descending", "none", "other"],
						"defaultValue": "none",
						"valueDescriptions": {
							"ascending": "Items are sorted in ascending order by this column.",
							"descending": "Items are sorted in descending order by this column.",
							"none": "There is no defined sort applied to the column.",
							"other": "A sort algorithm other than ascending or descending has been applied."
						}
					},
					{
						"name": "aria-valuemax",
						"type": "property",
						"value": "number",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "max",
								"value": null
							}
						]
					},
					{
						"name": "aria-valuemin",
						"type": "property",
						"value": "number",
						"enum": [],
						"equivalentHtmlAttrs": [
							{
								"htmlAttrName": "min",
								"value": null
							}
						]
					},
					{
						"name": "aria-valuenow",
						"type": "property",
						"value": "number",
						"enum": []
					},
					{
						"name": "aria-valuetext",
						"type": "property",
						"value": "string",
						"enum": []
					}
				],
				"graphicsRoles": [
					{
						"name": "graphics-document",
						"description": "A type of document in which the visual appearance or layout of content conveys meaning.\n\nSimilar to other document types, the graphics-document role applies to the root element of a region of the page containing related information, where the user's primary interaction mode is expected to be browsing the document rather than controlling an application. The element with this role may be the root element of the document file, or of a nested structure within it.\n\nThe graphics-document may be distinguished from similar roles as follows:\n\nRelative to other documents, a graphics-document is distinguished by the semantic importance of its visual (usually two-dimensional) representation. User agents and assistive technologies SHOULD take this into consideration when supporting navigation of the graphic. Accessibility technologies that re-format or re-style a document SHOULD NOT alter the layout of a graphics-document except in ways that are consistent with the semantic roles and relationships of its content.\n\nRelative to an img, a graphics-document is distinguished by the structured nature of its content. Its child elements may have semantic meaning, and may include links or other interactive widgets.\n\nRelative to a graphics-object, a graphics-document is self-contained. Its meaning persists when separated from surrounding content. The element with the graphics-document role defines the scope and context for interpretation of the child content.\n\nIn general, authors SHOULD use the graphics-document role for structured graphics such as charts, maps, diagrams, technical drawing, blue prints and instructional graphics. However, if a single large graphic has discrete regions that may be safely re-arranged without sacrificing meaning, each of those regions SHOULD be a distinct graphics-document. An alternative role (such as figure) may be used to group them together. One graphics-document may also be nested inside another, for example a bar chart that is embedded in a map or a matrix of chart panels should have a role of graphics-document. The nested document provides encapsulation; navigation between components of the inner and outer graphics should be explicit.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the document role as a fallback value, in the form role=\"graphics-document document\".\n\nFuture specifications may define more specific roles for particular types of graphical documents with special semantic structures. Those more specific roles would be subclasses of graphics-document.\n\nAn SVG diagram of an electrical circuit is a simple graphical document:",
						"generalization": ["document"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "graphics-object",
						"description": "A section of a graphics-document that represents a distinct object or sub-component with semantic meaning. A graphical object may itself have nested sub-components.\n\nContainer elements that represent a collection of disconnected objects should be given the group or list roles, instead. Grouping elements that do not have semantic meaning and do not alter the semantic context provided by an ancestor (for example, a div or SVG g that is only used for styling or layout) SHOULD NOT be given a role. The lack of role may be explicitly indicated with the role none or presentation.\n\nUnlike a graphics-document, a graphics-object need not be self-contained, and it does not establish a new context for navigation. However, user agents and assistive technologies SHOULD provide a way for users, particularly non-visual users, to navigate the nested structure of objects in a hierarchical manner, similar to nested lists.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the group role as a fallback value, in the form role=\"graphics-object group\".\n\nThe code that follows is a portion of the markup for a structured graphic. It includes SVG g grouping elements with various roles:\n\nWhere a graphical object has multiple sub-components, the group role is provided as an explicit fallback.",
						"generalization": ["group"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": false,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": true,
						"accessibleNameProhibited": false,
						"childrenPresentational": false,
						"ownedProperties": [
							{
								"name": "aria-activedescendant",
								"inherited": true
							},
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					},
					{
						"name": "graphics-symbol",
						"description": "A graphical object used to convey a simple meaning or category, where the meaning is more important than the particular visual appearance. It may be a component of a larger structured graphic such as a chart or map. The symbol itself is an atomic object; children are presentational.\n\nWhen used as part of a structured symbolic language, the aria-roledescription property (introduced in ARIA 1.1 [WAI-ARIA-1.1]) can be used to name the symbol type separately from the name and description for the particular instance of the symbol.\n\nTo support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the img role as a fallback value, in the form role=\"graphics-symbol img\", if that is not already the default semantic role for the element.\n\nWithin an HTML document for a restaurant menu, an img element can represent a repeated symbol:\n\nWithin an SVG diagram of an electrical circuit, the graphics that represent batteries, switches, and loads like this lightbulb are each symbols:\n\nNote that the visible text must be included in the label for its parent symbol, in this example. As the child of a graphics-symbol, it is treated as presentational content, and is therefore not accessible as a separate element of the graphic.\n\nWithin an architectural blueprint-style SVG diagram, each SVG use element that creates a copy of a simple SVG symbol is a graphics-symbol:",
						"generalization": ["img"],
						"requiredContextRole": [],
						"requiredOwnedElements": [],
						"accessibleNameRequired": true,
						"accessibleNameFromAuthor": true,
						"accessibleNameFromContent": false,
						"accessibleNameProhibited": false,
						"childrenPresentational": true,
						"ownedProperties": [
							{
								"name": "aria-atomic",
								"inherited": true
							},
							{
								"name": "aria-busy",
								"inherited": true
							},
							{
								"name": "aria-controls",
								"inherited": true
							},
							{
								"name": "aria-current",
								"inherited": true
							},
							{
								"name": "aria-describedby",
								"inherited": true
							},
							{
								"name": "aria-details",
								"inherited": true
							},
							{
								"name": "aria-disabled",
								"inherited": true
							},
							{
								"name": "aria-dropeffect",
								"inherited": true
							},
							{
								"name": "aria-errormessage",
								"inherited": true
							},
							{
								"name": "aria-expanded",
								"inherited": true
							},
							{
								"name": "aria-flowto",
								"inherited": true
							},
							{
								"name": "aria-grabbed",
								"inherited": true
							},
							{
								"name": "aria-haspopup",
								"inherited": true
							},
							{
								"name": "aria-hidden",
								"inherited": true
							},
							{
								"name": "aria-invalid",
								"inherited": true
							},
							{
								"name": "aria-keyshortcuts",
								"inherited": true
							},
							{
								"name": "aria-label",
								"inherited": true
							},
							{
								"name": "aria-labelledby",
								"inherited": true
							},
							{
								"name": "aria-live",
								"inherited": true
							},
							{
								"name": "aria-owns",
								"inherited": true
							},
							{
								"name": "aria-relevant",
								"inherited": true
							},
							{
								"name": "aria-roledescription",
								"inherited": true
							}
						],
						"prohibitedProperties": []
					}
				]
			}
		},
		"#contentModels": {
			"#metadata": ["base", "link", "meta", "noscript", "script", "style", "template", "title"],
			"#flow": [
				"a",
				"abbr",
				"address",
				"area",
				"article",
				"aside",
				"audio",
				"b",
				"bdi",
				"bdo",
				"blockquote",
				"br",
				"button",
				"canvas",
				"cite",
				"code",
				"data",
				"datalist",
				"del",
				"details",
				"dfn",
				"dialog",
				"div",
				"dl",
				"em",
				"embed",
				"fieldset",
				"figure",
				"footer",
				"form",
				"h1",
				"h2",
				"h3",
				"h4",
				"h5",
				"h6",
				"header",
				"hgroup",
				"hr",
				"i",
				"iframe",
				"img",
				"input",
				"ins",
				"kbd",
				"label",
				"link[itemprop]",
				"link[rel=dns-prefetch]",
				"link[rel=modulepreload]",
				"link[rel=pingback]",
				"link[rel=preconnect]",
				"link[rel=prefetch]",
				"link[rel=preload]",
				"link[rel=prerender]",
				"link[rel=stylesheet]",
				"main",
				"map",
				"mark",
				"math",
				"menu",
				"meta[itemprop]",
				"meter",
				"nav",
				"noscript",
				"object",
				"ol",
				"output",
				"p",
				"picture",
				"pre",
				"progress",
				"q",
				"ruby",
				"s",
				"samp",
				"script",
				"search",
				"section",
				"select",
				"slot",
				"small",
				"span",
				"strong",
				"sub",
				"sup",
				"svg|svg",
				"table",
				"template",
				"textarea",
				"time",
				"u",
				"ul",
				"var",
				"video",
				"wbr",
				"#custom",
				"#text"
			],
			"#sectioning": ["article", "aside", "nav", "section"],
			"#heading": ["h1", "h2", "h3", "h4", "h5", "h6", "hgroup:has(h1,h2,h3,h4,h5,h6)"],
			"#phrasing": [
				"a",
				"abbr",
				"area",
				"audio",
				"b",
				"bdi",
				"bdo",
				"br",
				"button",
				"canvas",
				"cite",
				"code",
				"data",
				"datalist",
				"del",
				"dfn",
				"em",
				"embed",
				"i",
				"iframe",
				"img",
				"input",
				"ins",
				"kbd",
				"label",
				"link[itemprop]",
				"link[rel=dns-prefetch]",
				"link[rel=modulepreload]",
				"link[rel=pingback]",
				"link[rel=preconnect]",
				"link[rel=prefetch]",
				"link[rel=preload]",
				"link[rel=prerender]",
				"link[rel=stylesheet]",
				"map",
				"mark",
				"math",
				"meta[itemprop]",
				"meter",
				"noscript",
				"object",
				"output",
				"picture",
				"progress",
				"q",
				"ruby",
				"s",
				"samp",
				"script",
				"select",
				"slot",
				"small",
				"span",
				"strong",
				"sub",
				"sup",
				"svg|svg",
				"template",
				"textarea",
				"time",
				"u",
				"var",
				"video",
				"wbr",
				"#custom",
				"#text"
			],
			"#embedded": ["audio", "canvas", "embed", "iframe", "img", "math", "object", "picture", "svg|svg", "video"],
			"#interactive": [
				"a[href]",
				"audio[controls]",
				"button",
				"details",
				"embed",
				"iframe",
				"img[usemap]",
				"input:not([type='hidden' i])",
				"label",
				"select",
				"textarea",
				"video[controls]"
			],
			"#palpable": [
				"a",
				"abbr",
				"address",
				"article",
				"aside",
				"audio[controls]",
				"b",
				"bdi",
				"bdo",
				"blockquote",
				"button",
				"canvas",
				"cite",
				"code",
				"data",
				"del",
				"details",
				"dfn",
				"div",
				"dl:has(>:is(dt+dd))",
				"em",
				"embed",
				"fieldset",
				"figure",
				"footer",
				"form",
				"h1",
				"h2",
				"h3",
				"h4",
				"h5",
				"h6",
				"header",
				"hgroup",
				"i",
				"iframe",
				"img",
				"input:not([type='hidden' i])",
				"ins",
				"kbd",
				"label",
				"main",
				"map",
				"mark",
				"math",
				"menu:has(>li)",
				"meter",
				"nav",
				"object",
				"ol:has(>li)",
				"output",
				"p",
				"picture",
				"pre",
				"progress",
				"q",
				"ruby",
				"s",
				"samp",
				"search",
				"section",
				"select",
				"small",
				"span",
				"strong",
				"sub",
				"sup ",
				"svg",
				"table",
				"textarea",
				"time",
				"u",
				"ul:has(>li)",
				"var",
				"video",
				"#custom",
				"#text"
			],
			"#script-supporting": ["script", "template"],
			"#SVGAnimation": [
				"svg|animate",
				"svg|animateColor",
				"svg|animateMotion",
				"svg|animateTransform",
				"svg|discard",
				"svg|mpath",
				"svg|set"
			],
			"#SVGBasicShapes": ["svg|circle", "svg|ellipse", "svg|line", "svg|polygon", "svg|polyline", "svg|rect"],
			"#SVGContainer": [
				"svg|a",
				"svg|defs",
				"svg|g",
				"svg|marker",
				"svg|mask",
				"svg|missing-glyph",
				"svg|pattern",
				"svg|svg",
				"svg|switch",
				"svg|symbol"
			],
			"#SVGDescriptive": ["svg|desc", "svg|metadata", "svg|title"],
			"#SVGFilterPrimitive": [
				"svg|feBlend",
				"svg|feColorMatrix",
				"svg|feComponentTransfer",
				"svg|feComposite",
				"svg|feConvolveMatrix",
				"svg|feDiffuseLighting",
				"svg|feDisplacementMap",
				"svg|feDropShadow",
				"svg|feFlood",
				"svg|feFuncA",
				"svg|feFuncB",
				"svg|feFuncG",
				"svg|feFuncR",
				"svg|feGaussianBlur",
				"svg|feImage",
				"svg|feMerge",
				"svg|feMergeNode",
				"svg|feMorphology",
				"svg|feOffset",
				"svg|feSpecularLighting",
				"svg|feTile",
				"svg|feTurbulence"
			],
			"#SVGFont": [
				"svg|font",
				"svg|font-face",
				"svg|font-face-format",
				"svg|font-face-name",
				"svg|font-face-src",
				"svg|font-face-uri",
				"svg|hkern",
				"svg|vkern"
			],
			"#SVGGradient": ["svg|linearGradient", "svg|radialGradient", "svg|stop"],
			"#SVGGraphics": [
				"svg|circle",
				"svg|ellipse",
				"svg|image",
				"svg|line",
				"svg|path",
				"svg|polygon",
				"svg|polyline",
				"svg|rect",
				"svg|text",
				"svg|use"
			],
			"#SVGGraphicsReferencing": ["svg|use"],
			"#SVGLightSource": ["svg|feDistantLight", "svg|fePointLight", "svg|feSpotLight"],
			"#SVGNeverRendered": [
				"svg|clipPath",
				"svg|defs",
				"svg|linearGradient",
				"svg|marker",
				"svg|mask",
				"svg|metadata",
				"svg|pattern",
				"svg|radialGradient",
				"svg|script",
				"svg|style",
				"svg|symbol",
				"svg|title"
			],
			"#SVGPaintServer": ["svg|linearGradient", "svg|pattern", "svg|radialGradient", "svg|solidcolor"],
			"#SVGRenderable": [
				"svg|a",
				"svg|circle",
				"svg|ellipse",
				"svg|foreignObject",
				"svg|g",
				"svg|image",
				"svg|line",
				"svg|path",
				"svg|polygon",
				"svg|polyline",
				"svg|rect",
				"svg|svg",
				"svg|switch",
				"svg|symbol",
				"svg|text",
				"svg|textPath",
				"svg|tspan",
				"svg|unknown",
				"svg|use"
			],
			"#SVGShape": [
				"svg|circle",
				"svg|ellipse",
				"svg|line",
				"svg|path",
				"svg|polygon",
				"svg|polyline",
				"svg|rect"
			],
			"#SVGStructural": ["svg|defs", "svg|g", "svg|svg", "svg|symbol", "svg|use"],
			"#SVGStructurallyExternal": [],
			"#SVGTextContent": [
				"svg|altGlyph",
				"svg|altGlyphDef",
				"svg|altGlyphItem",
				"svg|glyph",
				"svg|glyphRef",
				"svg|textPath",
				"svg|text",
				"svg|tref",
				"svg|tspan"
			],
			"#SVGTextContentChild": ["svg|altGlyph", "svg|textPath", "svg|tref", "svg|tspan"]
		}
	},
	"specs": [
		{
			"name": "a",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a",
			"description": "The <a> HTML element (or anchor element), with its href attribute, creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address. Content within each <a> should indicate the link's destination. If the href attribute is present, pressing the enter key while focused on the <a> element will activate it.",
			"categories": ["#flow", "#phrasing", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"transparent": ":not(:model(interactive), a, [tabindex], :has(:model(interactive), a, [tabindex]))"
					}
				]
			},
			"aria": {
				"implicitRole": "link",
				"permittedRoles": [
					"button",
					"checkbox",
					"menuitem",
					"menuitemcheckbox",
					"menuitemradio",
					"option",
					"radio",
					"switch",
					"tab",
					"treeitem"
				],
				"properties": {
					"global": true,
					"role": true,
					"without": [
						{
							"type": "not-recommended",
							"name": "aria-disabled",
							"value": "true",
							"alt": {
								"method": "remove-attr",
								"target": "href"
							}
						}
					]
				},
				"conditions": {
					":not([href])": {
						"implicitRole": "generic",
						"permittedRoles": true,
						"namingProhibited": true
					}
				},
				"1.1": {
					"conditions": {
						":not([href])": {
							"implicitRole": false
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": [
					"href",
					"target",
					"download",
					"ping",
					"rel",
					"hreflang",
					"type",
					"referrerpolicy"
				]
			},
			"attributes": {
				"attributionsrc": {
					"description": "Specifies that you want the browser to send an Attribution-Reporting-Eligible header. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source header in the response, to register a navigation-based attribution source. The browser stores the source data associated with the navigation-based attribution source (as provided in the Attribution-Reporting-Register-Source response header) when the user clicks the link. See the Attribution Reporting API for more details. There are two versions of this attribute that you can set: Boolean, i.e., just the attributionsrc name. This specifies that you want the Attribution-Reporting-Eligible header sent to the same server as the href attribute points to. This is fine when you are handling the attribution source registration on the same server. Value containing one or more URLs, for example: htmlattributionsrc=\"https://a.example/register-source https://b.example/register-source\" This is useful in cases where the requested resource is not on a server you control, or you just want to handle registering the attribution source on a different server. In this case, you can specify one or more URLs as the value of attributionsrc. When the resource request occurs, the Attribution-Reporting-Eligible header will be sent to the URL(s) specified in attributionsrc in addition to the resource origin. These URLs can then respond with the Attribution-Reporting-Register-Source to complete registration. Note: Specifying multiple URLs means that multiple attribution sources can be registered on the same feature. You might for example have different campaigns that you are trying to measure the success of, which involve generating different reports on different data. <a> elements cannot be used as attribution triggers, only sources.",
					"deprecated": true
				},
				"charset": {
					"description": "Hinted at the character encoding of the linked URL. Note: This attribute is deprecated and should not be used by authors. Use the HTTP Content-Type header on the linked URL.",
					"deprecated": true
				},
				"coords": {
					"description": "Used with the shape attribute. A comma-separated list of coordinates.",
					"deprecated": true
				},
				"download": {
					"description": "Causes the browser to treat the linked URL as a download. Can be used with or without a filename value: Without a value, the browser will suggest a filename/extension, generated from various sources: The Content-Disposition HTTP header The final segment in the URL path The media type (from the Content-Type header, the start of a data: URL, or Blob.type for a blob: URL) filename: defining a value suggests it as the filename. / and \\ characters are converted to underscores (_). Filesystems may forbid other characters in filenames, so browsers will adjust the suggested name if necessary. Note: download only works for same-origin URLs, or the blob: and data: schemes. How browsers treat downloads varies by browser, user settings, and other factors. The user may be prompted before a download starts, or the file may be saved automatically, or it may open automatically, either in an external application or in the browser itself. If the Content-Disposition header has different information from the download attribute, resulting behavior may differ: If the header specifies a filename, it takes priority over a filename specified in the download attribute. If the header specifies a disposition of inline, Chrome and Firefox prioritize the attribute and treat it as a download. Old Firefox versions (before 82) prioritize the header and will display the content inline."
				},
				"href": {
					"description": "The URL that the hyperlink points to. Links are not restricted to HTTP-based URLs — they can use any URL scheme supported by browsers: Telephone numbers with tel: URLs Email addresses with mailto: URLs SMS text messages with sms: URLs Executable code with javascript: URLs While web browsers may not support other URL schemes, websites can with registerProtocolHandler() Moreover other URL features can locate specific parts of the resource, including: Sections of a page with document fragments Specific text portions with text fragments Pieces of media files with media fragments"
				},
				"hreflang": {
					"description": "Hints at the human language of the linked URL. No built-in functionality. Allowed values are the same as the global lang attribute."
				},
				"interestfor": {
					"description": "Defines the <a> element as an interest invoker. Its value is the id of the target element, which will be affected in some way (normally shown or hidden) when interest is shown or lost on the invoker element (for example, by hovering/unhovering or focusing/blurring it). See Using interest invokers for more details and examples.",
					"experimental": true,
					"nonStandard": true,
					"type": "DOMID"
				},
				"name": {
					"description": "Was required to define a possible target location in a page. In HTML 4.01, id and name could both be used on <a>, as long as they had identical values. Note: Use the global attribute id instead.",
					"deprecated": true
				},
				"ping": {
					"description": "A space-separated list of URLs. When the link is followed, the browser will send POST requests with the body PING to the URLs. Typically for tracking."
				},
				"referrerpolicy": {
					"description": "How much of the referrer to send when following the link. no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
				},
				"rel": {
					"description": "The relationship of the linked URL as space-separated link types."
				},
				"rev": {
					"description": "Specified a reverse link; the opposite of the rel attribute. Deprecated for being very confusing.",
					"deprecated": true
				},
				"shape": {
					"description": "The shape of the hyperlink's region in an image map. Note: Use the <area> element for image maps instead.",
					"deprecated": true
				},
				"target": {
					"description": "Where to display the linked URL, as the name for a browsing context (a tab, window, or <iframe>). The following keywords have special meanings for where to load the URL: _self: The current browsing context. (Default) _blank: Usually a new tab, but users can configure browsers to open a new window instead. _parent: The parent browsing context of the current one. If no parent, behaves as _self. _top: The topmost browsing context. To be specific, this means the \"highest\" context that's an ancestor of the current one. If no ancestors, behaves as _self. _unfencedTop: Allows embedded fenced frames to navigate the top-level frame (i.e., traversing beyond the root of the fenced frame, unlike other reserved destinations). Note that the navigation will still succeed if this is used outside of a fenced frame context, but it will not act like a reserved keyword. Note: Setting target=\"_blank\" on <a> elements implicitly provides the same rel behavior as setting rel=\"noopener\" which does not set window.opener."
				},
				"type": {
					"description": "Hints at the linked URL's format with a MIME type. No built-in functionality."
				}
			}
		},
		{
			"name": "abbr",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/abbr",
			"description": "The <abbr> HTML element represents an abbreviation or acronym. When including an abbreviation or acronym, provide a full expansion of the term in plain text on first use, along with the <abbr> to mark up the abbreviation. This informs the user what the abbreviation or acronym means. The optional title attribute can provide an expansion for the abbreviation or acronym when a full expansion is not present. This provides a hint to user agents on how to announce/display the content while informing all users what the abbreviation means. If present, title must contain this full description and nothing else.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "acronym",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <acronym> HTML element allows authors to clearly indicate a sequence of characters that compose an acronym or abbreviation for a word. Warning: Don't use this element. Use the <abbr> element instead.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "address",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/address",
			"description": "The <address> HTML element indicates that the enclosed HTML provides contact information for a person or people, or for an organization.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow):not(address, :model(heading), :model(sectioning), header, foooter, :has(address, :model(heading), :model(sectioning), header, foooter))"
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "applet",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "area",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/area",
			"description": "The <area> HTML element defines an area inside an image map that has predefined clickable areas. An image map allows geometric areas on an image to be associated with hypertext links. This element is used only within a <map> element.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": false,
				"descendantOf": "map"
			},
			"aria": {
				"implicitRole": "link",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "link"
				},
				"conditions": {
					":not([href])": {
						"implicitRole": "generic",
						"permittedRoles": ["button", "link"],
						"namingProhibited": true
					}
				},
				"1.1": {
					"conditions": {
						":not([href])": {
							"implicitRole": false,
							"permittedRoles": false
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": [
					"href",
					"target",
					"download",
					"ping",
					"rel",
					"hreflang",
					"type",
					"referrerpolicy"
				]
			},
			"attributes": {
				"alt": {
					"description": "A text string alternative to display on browsers that do not display images. The text should be phrased so that it presents the user with the same kind of choice as the image would offer when displayed without the alternative text. This attribute is required only if the href attribute is used.",
					"type": "Any",
					"required": true,
					"condition": "[href]"
				},
				"coords": {
					"description": "The coords attribute details the coordinates of the shape attribute in size, shape, and placement of an <area>. This attribute must not be used if shape is set to default. rect: the value is x1,y1,x2,y2. The value specifies the coordinates of the top-left and bottom-right corner of the rectangle. For example, in <area shape=\"rect\" coords=\"0,0,253,27\" href=\"#\" target=\"_blank\" alt=\"Mozilla\"> the coordinates are 0,0 and 253,27, indicating the top-left and bottom-right corners of the rectangle, respectively. circle: the value is x,y,radius. Value specifies the coordinates of the circle center and the radius. For example: <area shape=\"circle\" coords=\"130,136,60\" href=\"#\" target=\"_blank\" alt=\"MDN\"> poly: the value is x1,y1,x2,y2,..,xn,yn. Value specifies the coordinates of the edges of the polygon. If the first and last coordinate pairs are not the same, the browser will add the last coordinate pair to close the polygon The values are numbers of CSS pixels. Our shape generator can help you generate the coords syntax by selecting points on an image you upload.",
					"type": {
						"token": "Number",
						"disallowToSurroundBySpaces": true,
						"separator": "comma"
					}
				},
				"download": {
					"description": "This attribute, if present, indicates that the linked resource is intended to be downloaded rather than displayed in the browser. See <a> for a full description of the download attribute."
				},
				"href": {
					"description": "The hyperlink target for the area. Its value is a valid URL. This attribute may be omitted; if so, the <area> element does not represent a hyperlink."
				},
				"interestfor": {
					"description": "Defines the <area> element as an interest invoker. Its value is the id of the target element, which will be affected in some way (normally shown or hidden) when interest is shown or lost on the invoker element (for example, by hovering/unhovering or focusing/blurring it). See Using interest invokers for more details and examples.",
					"experimental": true,
					"nonStandard": true,
					"type": "DOMID"
				},
				"ping": {
					"description": "Contains a space-separated list of URLs to which, when the hyperlink is followed, POST requests with the body PING will be sent by the browser (in the background). Typically used for tracking."
				},
				"referrerpolicy": {
					"description": "A string indicating which referrer to use when fetching the resource: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
				},
				"rel": {
					"description": "For anchors containing the href attribute, this attribute specifies the relationship of the target object to the link object. The value is a space-separated list of link types. The values and their semantics will be registered by some authority that might have meaning to the document author. The default relationship, if no other is given, is void. Use this attribute only if the href attribute is present."
				},
				"shape": {
					"description": "The shape of the associated hot spot. The specifications for HTML defines the values rect, which defines a rectangular region; circle, which defines a circular region; poly, which defines a polygon; and default, which indicates the entire region beyond any defined shapes.",
					"type": {
						"enum": ["rect", "circle", "poly", "default"],
						"missingValueDefault": "rect",
						"invalidValueDefault": "rect"
					}
				},
				"target": {
					"description": "A keyword or author-defined name of the browsing context to display the linked resource. The following keywords have special meanings: _self (default): Show the resource in the current browsing context. _blank: Show the resource in a new, unnamed browsing context. _parent: Show the resource in the parent browsing context of the current one, if the current page is inside a frame. If there is no parent, acts the same as _self. _top: Show the resource in the topmost browsing context (the browsing context that is an ancestor of the current one and has no parent). If there is no parent, acts the same as _self. Use this attribute only if the href attribute is present. Note: Setting target=\"_blank\" on <area> elements implicitly provides the same rel behavior as setting rel=\"noopener\" which does not set window.opener. See browser compatibility for support status."
				}
			}
		},
		{
			"name": "article",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/article",
			"description": "The <article> HTML element represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable (e.g., in syndication). Examples include: a forum post, a magazine or newspaper article, or a blog entry, a product card, a user-submitted comment, an interactive widget or gadget, or any other independent item of content.",
			"categories": ["#flow", "#sectioning", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "article",
				"permittedRoles": ["application", "document", "feed", "main", "none", "presentation", "region"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "aside",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/aside",
			"description": "The <aside> HTML element represents a portion of a document whose content is only indirectly related to the document's main content. Asides are frequently presented as sidebars or call-out boxes.",
			"categories": ["#flow", "#sectioning", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "complementary",
				"permittedRoles": ["feed", "none", "note", "presentation", "region", "search"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "audio",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/audio",
			"description": "The <audio> HTML element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element: the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.",
			"categories": ["#flow", "#phrasing", "#embedded", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "source"
					},
					{
						"zeroOrMore": "track"
					},
					{
						"transparent": ":not(audio, video, :has(audio, video))"
					}
				],
				"conditional": [
					{
						"condition": "[src]",
						"contents": [
							{
								"zeroOrMore": "track"
							},
							{
								"transparent": ":not(audio, video, :has(audio, video))"
							}
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["application"],
				"properties": {
					"global": true,
					"role": "application"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["src", "preload", "autoplay", "loop", "muted", "controls"],
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["crossorigin"]
			},
			"attributes": {
				"autoplay": {
					"description": "A Boolean attribute: if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading. Note: Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control. See our autoplay guide for additional information about how to properly use autoplay."
				},
				"controls": {
					"description": "If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback."
				},
				"controlslist": {
					"description": "The controlslist attribute, when specified, helps the browser select what controls to show for the audio element whenever the browser shows its own set of controls (that is, when the controls attribute is specified). The allowed values are nodownload, nofullscreen and noremoteplayback."
				},
				"crossorigin": {
					"description": "This enumerated attribute indicates whether to use CORS to fetch the related audio file. CORS-enabled resources can be reused in the <canvas> element without being tainted. The allowed values are: anonymous Sends a cross-origin request without a credential. In other words, it sends the Origin: HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin: HTTP header), the resource will be tainted, and its usage restricted. use-credentials Sends a cross-origin request with a credential. In other words, it sends the Origin: HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through Access-Control-Allow-Credentials: HTTP header), the resource will be tainted and its usage restricted. When not present, the resource is fetched without a CORS request (i.e., without sending the Origin: HTTP header), preventing its non-tainted use in <canvas> elements. If invalid, it is handled as if the enumerated keyword anonymous was used. See CORS settings attributes for additional information."
				},
				"disableremoteplayback": {
					"description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See the proposed Remote Playback API specification for more information. In Safari, you can use x-webkit-airplay=\"deny\" as a fallback."
				},
				"loop": {
					"description": "A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio."
				},
				"muted": {
					"description": "A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is false."
				},
				"preload": {
					"description": "This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. It may have one of the following values: none: Indicates that the audio should not be preloaded. metadata: Indicates that only audio metadata (e.g., length) is fetched. auto: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it. empty string: A synonym of the auto value. The default value is different for each browser. The spec advises it to be set to metadata. Note: The autoplay attribute has precedence over preload. If autoplay is specified, the browser would obviously need to start downloading the audio for playback. The browser is not forced by the specification to follow the value of this attribute; it is a mere hint."
				},
				"src": {
					"description": "The URL of the audio to embed. This is subject to HTTP access controls. This is optional; you may instead use the <source> element within the audio block to specify the audio to embed."
				}
			}
		},
		{
			"name": "b",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/b",
			"description": "The <b> HTML element is used to draw the reader's attention to the element's contents, which are not otherwise granted special importance. This was formerly known as the Boldface element, and most browsers still draw the text in boldface. However, you should not use <b> for styling text or granting importance. If you wish to create boldface text, you should use the CSS font-weight property. If you wish to indicate an element is of special importance, you should use the <strong> element.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "base",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/base",
			"description": "The <base> HTML element specifies the base URL to use for all relative URLs in a document. There can be only one <base> element in a document. A document's used base URL can be accessed by scripts with Node.baseURI. If the document has no <base> elements, then baseURI defaults to location.href.",
			"categories": ["#metadata"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["href", "target"]
			},
			"attributes": {
				"href": {
					"description": "The base URL to be used throughout the document for relative URLs. Absolute and relative URLs are allowed. data: and javascript: URLs are not allowed.",
					"type": "BaseURL"
				},
				"target": {
					"description": "A keyword or author-defined name of the default browsing context to show the results of navigation from <a>, <area>, or <form> elements without explicit target attributes. The following keywords have special meanings: _self (default): Show the result in the current browsing context. _blank: Show the result in a new, unnamed browsing context. _parent: Show the result in the parent browsing context of the current one, if the current page is inside a frame. If there is no parent, acts the same as _self. _top: Show the result in the topmost browsing context (the browsing context that is an ancestor of the current one and has no parent). If there is no parent, acts the same as _self."
				}
			}
		},
		{
			"name": "basefont",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "bdi",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/bdi",
			"description": "The <bdi> HTML element tells the browser's bidirectional algorithm to treat the text it contains in isolation from its surrounding text. It's particularly useful when a website dynamically inserts some text and doesn't know the directionality of the text being inserted.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "bdo",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/bdo",
			"description": "The <bdo> HTML element overrides the current directionality of text, so that the text within is rendered in a different direction.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"dir": {
					"description": "The direction in which text should be rendered in this element's contents. Possible values are: ltr: Indicates that the text should go in a left-to-right direction. rtl: Indicates that the text should go in a right-to-left direction."
				}
			}
		},
		{
			"name": "bgsound",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "big",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <big> HTML deprecated element renders the enclosed text at a font size one level larger than the surrounding text (medium becomes large, for example). The size is capped at the browser's maximum permitted font size. Warning: This element has been removed from the specification and shouldn't be used anymore. Use the CSS font-size property to adjust the font size.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "blink",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "blockquote",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/blockquote",
			"description": "The <blockquote> HTML element indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (see Notes for how to change it). A URL for the source of the quotation may be given using the cite attribute, while a text representation of the source can be given using the <cite> element.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "blockquote",
				"permittedRoles": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"cite": {
					"description": "A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.",
					"type": "URL"
				}
			}
		},
		{
			"name": "body",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/body",
			"description": "The <body> HTML element represents the content of an HTML document. There can be only one <body> element in a document.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": false,
				"namingProhibited": true,
				"properties": {
					"global": true,
					"without": [
						{
							"name": "aria-hidden",
							"type": "must-not"
						}
					]
				},
				"1.1": {
					"implicitRole": false,
					"permittedRoles": false,
					"properties": {
						"global": true,
						"role": "document"
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"alink": {
					"description": "Color of text for hyperlinks when selected. Use the CSS color property in conjunction with the :active and :focus pseudo-classes instead.",
					"deprecated": true
				},
				"background": {
					"description": "URI of an image to use as a background. Use the CSS background-image property instead.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Background color for the document. Use the CSS background-color property instead.",
					"deprecated": true
				},
				"bottommargin": {
					"description": "The margin of the bottom of the body. Use the CSS margin-bottom property (or the logical margin-block-end property) instead.",
					"deprecated": true
				},
				"leftmargin": {
					"description": "The margin of the left of the body. Use the CSS margin-left property (or the logical margin-inline-start property) instead.",
					"deprecated": true
				},
				"link": {
					"description": "Color of text for unvisited hypertext links. Use the CSS color property in conjunction with the :link pseudo-class instead.",
					"deprecated": true
				},
				"onafterprint": {
					"type": "FunctionBody"
				},
				"onbeforeprint": {
					"type": "FunctionBody"
				},
				"onbeforeunload": {
					"type": "FunctionBody"
				},
				"onhashchange": {
					"type": "FunctionBody"
				},
				"onlanguagechange": {
					"type": "FunctionBody"
				},
				"onmessage": {
					"type": "FunctionBody"
				},
				"onmessageerror": {
					"type": "FunctionBody"
				},
				"onoffline": {
					"type": "FunctionBody"
				},
				"ononline": {
					"type": "FunctionBody"
				},
				"onpagehide": {
					"type": "FunctionBody"
				},
				"onpagereveal": {
					"type": "FunctionBody"
				},
				"onpageshow": {
					"type": "FunctionBody"
				},
				"onpageswap": {
					"type": "FunctionBody"
				},
				"onpopstate": {
					"type": "FunctionBody"
				},
				"onrejectionhandled": {
					"type": "FunctionBody"
				},
				"onstorage": {
					"type": "FunctionBody"
				},
				"onunhandledrejection": {
					"type": "FunctionBody"
				},
				"onunload": {
					"type": "FunctionBody"
				},
				"rightmargin": {
					"description": "The margin of the right of the body. Use the CSS margin-right property or the logical margin-inline-end property) instead.",
					"deprecated": true
				},
				"text": {
					"description": "Foreground color of text. Use the CSS color property instead.",
					"deprecated": true
				},
				"topmargin": {
					"description": "The margin of the top of the body. Use the CSS margin-top property (or the logical margin-block-start property) instead.",
					"deprecated": true
				},
				"vlink": {
					"description": "Color of text for visited hypertext links. Use the CSS color property in conjunction with the :visited pseudo-class instead.",
					"deprecated": true
				}
			}
		},
		{
			"name": "br",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/br",
			"description": "The <br> HTML element produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is significant.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["none", "presentation"],
				"properties": {
					"only": ["aria-hidden"]
				},
				"1.1": {
					"properties": {
						"global": true,
						"role": true
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"clear": {
					"description": "Indicates where to begin the next line after the break.",
					"deprecated": true
				}
			}
		},
		{
			"name": "button",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/button",
			"description": "The <button> HTML element is an interactive element activated by a user with a mouse, keyboard, finger, voice command, or other assistive technology. Once activated, it then performs an action, such as submitting a form or opening a dialog. By default, HTML buttons are presented in a style resembling the platform the user agent runs on, but you can change buttons' appearance with CSS.",
			"categories": ["#flow", "#phrasing", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing):not(:model(interactive), :has(:model(interactive)))"
					}
				]
			},
			"aria": {
				"implicitRole": "button",
				"permittedRoles": [
					"checkbox",
					"combobox",
					"gridcell",
					"link",
					"menuitem",
					"menuitemcheckbox",
					"menuitemradio",
					"option",
					"radio",
					"separator",
					"slider",
					"switch",
					"tab",
					"treeitem"
				],
				"1.1": {
					"permittedRoles": [
						"checkbox",
						"link",
						"menuitem",
						"menuitemcheckbox",
						"menuitemradio",
						"option",
						"radio",
						"switch",
						"tab"
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": [
					"disabled",
					"form",
					"formaction",
					"formenctype",
					"formmethod",
					"formnovalidate",
					"formtarget",
					"name"
				],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"autofocus": {
					"description": "This Boolean attribute specifies that the button should have input focus when the page loads. Only one element in a document can have this attribute."
				},
				"command": {
					"description": "Specifies the action to be performed on an element being controlled by a control <button> specified via the commandfor attribute. The possible values are: \"show-modal\" The button will show a <dialog> as modal. If the dialog is already modal, no action will be taken. This is a declarative equivalent of calling the HTMLDialogElement.showModal() method on the <dialog> element. \"close\" The button will close a <dialog> element. If the dialog is already closed, no action will be taken. This is a declarative equivalent of calling the HTMLDialogElement.close() method on the <dialog> element. When used with the value attribute, the button's value will be passed as the dialog's returnValue property. \"request-close\" The button will trigger a cancel event on a <dialog> element to request that the browser dismiss it, followed by a close event. This differs from the close command in that authors can call Event.preventDefault() on the cancel event to prevent the <dialog> from closing. If the dialog is already closed, no action will be taken. This is a declarative equivalent of calling the HTMLDialogElement.requestClose() method on the <dialog> element. When used with the button's value attribute, the value will be passed as the dialog's returnValue property. \"show-popover\" The button will show a hidden popover. If you try to show an already showing popover, no action will be taken. See Popover API for more details. This is equivalent to setting a value of show for the popovertargetaction attribute, and also provides a declarative equivalent to calling the HTMLElement.showPopover() method on the popover element. \"hide-popover\" The button will hide a showing popover. If you try to hide an already hidden popover, no action will be taken. See Popover API for more details. This is equivalent to setting a value of hide for the popovertargetaction attribute, and also provides a declarative equivalent to calling the HTMLElement.hidePopover() method on the popover element. \"toggle-popover\" The button will toggle a popover between showing and hidden. If the popover is hidden, it will be shown; if the popover is showing, it will be hidden. See Popover API for more details. This is equivalent to setting a value of toggle for the popovertargetaction attribute, and also provides a declarative equivalent to calling the HTMLElement.togglePopover() method on the popover element. Custom values This attribute can represent custom values that are prefixed with a two hyphen characters (--). Buttons with a custom value will dispatch the CommandEvent on the controlled element.",
					"type": [
						{
							"enum": [
								"toggle-popover",
								"show-popover",
								"hide-popover",
								"close",
								"request-close",
								"show-modal"
							],
							"invalidValueDefault": "unknown",
							"missingValueDefault": "unknown"
						},
						"ValidCustomCommand"
					]
				},
				"commandfor": {
					"description": "Turns a <button> element into a command button, controlling a given interactive element by issuing the command specified in the button's command attribute. The commandfor attribute takes the ID of the element to control as its value. This is a more general version of popovertarget.",
					"type": "DOMID"
				},
				"disabled": {
					"description": "This Boolean attribute prevents the user from interacting with the button: it cannot be pressed or focused."
				},
				"form": {
					"description": "The <form> element to associate the button with (its form owner). The value of this attribute must be the id of a <form> in the same document. (If this attribute is not set, the <button> is associated with its ancestor <form> element, if any.) This attribute lets you associate <button> elements to <form>s anywhere in the document, not just inside a <form>. It can also override an ancestor <form> element."
				},
				"formaction": {
					"description": "The URL that processes the information submitted by the button. Overrides the action attribute of the button's form owner. Does nothing if there is no form owner."
				},
				"formenctype": {
					"description": "If the button is a submit button (it's inside/associated with a <form> and doesn't have type=\"button\"), specifies how to encode the form data that is submitted. Possible values: application/x-www-form-urlencoded: The default if the attribute is not used. multipart/form-data: Used to submit <input> elements with their type attributes set to file. text/plain: Specified as a debugging aid; shouldn't be used for real form submission. If this attribute is specified, it overrides the enctype attribute of the button's form owner."
				},
				"formmethod": {
					"description": "If the button is a submit button (it's inside/associated with a <form> and doesn't have type=\"button\"), this attribute specifies the HTTP method used to submit the form. Possible values: post: The data from the form are included in the body of the HTTP request when sent to the server. Use when the form contains information that shouldn't be public, like login credentials. get: The form data are appended to the form's action URL, with a ? as a separator, and the resulting URL is sent to the server. Use this method when the form has no side effects, like search forms. dialog: This method is used to indicate that the button closes the dialog with which it is associated, and does not transmit the form data at all. If specified, this attribute overrides the method attribute of the button's form owner."
				},
				"formnovalidate": {
					"description": "If the button is a submit button, this Boolean attribute specifies that the form is not to be validated when it is submitted. If this attribute is specified, it overrides the novalidate attribute of the button's form owner. This attribute is also available on <input type=\"image\"> and <input type=\"submit\"> elements."
				},
				"formtarget": {
					"description": "If the button is a submit button, this attribute is an author-defined name or standardized, underscore-prefixed keyword indicating where to display the response from submitting the form. This is the name of, or keyword for, a browsing context (a tab, window, or <iframe>). If this attribute is specified, it overrides the target attribute of the button's form owner. The following keywords have special meanings: _self: Load the response into the same browsing context as the current one. This is the default if the attribute is not specified. _blank: Load the response into a new unnamed browsing context — usually a new tab or window, depending on the user's browser settings. _parent: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as _self. _top: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as _self."
				},
				"interestfor": {
					"description": "Defines the <button> element as an interest invoker. Its value is the id of a target element, which will be affected in some way (normally shown or hidden) when interest is shown or lost on the invoker element (for example, by hovering/unhovering or focusing/blurring it). See Using interest invokers for more details and examples.",
					"experimental": true,
					"nonStandard": true,
					"type": "DOMID"
				},
				"name": {
					"description": "The name of the button, submitted as a pair with the button's value as part of the form data, when that button is used to submit the form."
				},
				"popovertarget": {
					"description": "Turns a <button> element into a popover control button; takes the ID of the popover element to control as its value. Establishing a relationship between a popover and its invoker button using the popovertarget attribute has two additional useful effects: The browser creates an implicit aria-details and aria-expanded relationship between popover and invoker, and places the popover in a logical position in the keyboard focus navigation order when shown. This makes the popover more accessible to keyboard and assistive technology (AT) users (see also Popover accessibility features). The browser creates an implicit anchor reference between the two, making it very convenient to position popovers relative to their controls using CSS anchor positioning. See Popover anchor positioning for more details.",
					"type": "DOMID"
				},
				"popovertargetaction": {
					"description": "Specifies the action to be performed on a popover element being controlled by a control <button>. Possible values are: \"hide\" The button will hide a shown popover. If you try to hide an already hidden popover, no action will be taken. \"show\" The button will show a hidden popover. If you try to show an already showing popover, no action will be taken. \"toggle\" The button will toggle a popover between showing and hidden. If the popover is hidden, it will be shown; if the popover is showing, it will be hidden. If popovertargetaction is omitted, \"toggle\" is the default action that will be performed by the control button.",
					"type": {
						"enum": ["toggle", "show", "hide"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "toggle",
						"missingValueDefault": "toggle"
					}
				},
				"type": {
					"description": "The default behavior of the button. Possible values are: submit: The button submits the form data to the server. This is the default if the attribute is not specified for buttons associated with a <form>, or if the attribute is an empty or invalid value. reset: The button resets all the controls to their initial values, like <input type=\"reset\">. (This behavior tends to annoy users.) button: The button has no default behavior, and does nothing when pressed by default. It can have client-side scripts listen to the element's events, which are triggered when the events occur.",
					"type": {
						"enum": ["submit", "reset", "button"],
						"invalidValueDefault": "submit",
						"missingValueDefault": "submit"
					}
				},
				"value": {
					"description": "Defines the value associated with the button's name when it's submitted with the form data. This value is passed to the server in params when the form is submitted using this button. When used with the close or request-close commands, the value attribute sets the returnValue of the <dialog> element being controlled.",
					"type": "Any"
				}
			}
		},
		{
			"name": "canvas",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/canvas",
			"description": "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.",
			"categories": ["#flow", "#phrasing", "#embedded", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"transparent": ":not(:model(interactive), :has(:model(interactive)))"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["height", "width"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"height": {
					"description": "The height of the coordinate space in CSS pixels. Defaults to 150.",
					"defaultValue": "150"
				},
				"moz-opaque": {
					"description": "Lets the canvas know whether translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized canvas.getContext('2d', { alpha: false }) instead.",
					"deprecated": true,
					"nonStandard": true
				},
				"width": {
					"description": "The width of the coordinate space in CSS pixels. Defaults to 300.",
					"defaultValue": "300"
				}
			}
		},
		{
			"name": "caption",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/caption",
			"description": "The <caption> HTML element specifies the caption (or title) of a table, providing the table an accessible name or accessible description.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "caption",
				"permittedRoles": false,
				"namingProhibited": true,
				"properties": {
					"global": true
				},
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies on which side of the table the caption should be displayed. The possible enumerated values are left, top, right, or bottom. Use the caption-side and text-align CSS properties instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "center",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <center> HTML element is a block-level element that displays its block-level or inline contents centered horizontally within its containing element. The container is usually, but isn't required to be, <body>. This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the CSS text-align property, which can be applied to the <div> element or to an individual <p>. For centering blocks, use other CSS properties like margin-left and margin-right and set them to auto (or set margin to 0 auto).",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "cite",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/cite",
			"description": "The <cite> HTML element is used to mark up the title of a creative work. The reference may be in an abbreviated form according to context-appropriate conventions related to citation metadata.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "code",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/code",
			"description": "The <code> HTML element displays its contents styled in a fashion intended to indicate that the text is a short fragment of computer code. By default, the content text is displayed using the user agent's default monospace font.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "code",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "col",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/col",
			"description": "The <col> HTML element defines one or more columns in a column group represented by its parent <colgroup> element. The <col> element is only valid as a child of a <colgroup> element that has no span attribute defined.",
			"categories": [],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of each column cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and on offset defined by the charoff attribute. Note that this attribute overrides the specified align of its <colgroup> parent element. Use the text-align CSS property on the <td> and <th> elements instead, as this attribute is deprecated. Note: Setting text-align on the <col> element has no effect as <col> has no descendants, and therefore no elements inherit from it. If the table does not use a colspan attribute, use the td:nth-of-type(an+b) CSS selector. Set a to zero and b to the position of the column in the table, e.g., td:nth-of-type(2) { text-align: right; } to right-align the second column cells. If the table does use a colspan attribute, the effect can be achieved by combining adequate CSS attribute selectors like [colspan=n], though this is not trivial.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of each column cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Does nothing. It was originally intended to specify the alignment of the content to a character of each column cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored, though it will still override the specified char of its <colgroup> parent element.",
					"deprecated": true
				},
				"charoff": {
					"description": "Does nothing. It was originally intended to specify the number of characters to offset the column cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"span": {
					"description": "Specifies the number of consecutive columns the <col> element spans. The value must be a positive integer greater than zero. If not present, its default value is 1.",
					"type": {
						"type": "integer",
						"gt": 0,
						"lte": 1000,
						"clampable": true
					},
					"defaultValue": "1"
				},
				"valign": {
					"description": "Specifies the vertical alignment of each column cell. The possible enumerated values are baseline, bottom, middle, and top. Note that this attribute overrides the specified valign of its <colgroup> parent element. Use the vertical-align CSS property on the <td> and <th> elements instead, as this attribute is deprecated. Note: Setting vertical-align on the <col> element has no effect as <col> has no descendants, and therefore no elements inherit from it. If the table does not use a colspan attribute, use the td:nth-of-type(an+b) CSS selector. Set a to zero and b to the position of the column in the table, e.g., td:nth-of-type(2) { vertical-align: middle; } to center the second column cells vertically. If the table does use a colspan attribute, the effect can be achieved by combining adequate CSS attribute selectors like [colspan=n], though this is not trivial.",
					"deprecated": true
				},
				"width": {
					"description": "Specifies a default width for each column. In addition to the standard pixel and percentage values, this attribute can take the special form 0*, which means that the width of each column spanned should be the minimum width necessary to hold the column's contents. Relative widths such as 5* can also be used. Note that this attribute overrides the specified width of its <colgroup> parent element. Use the width CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "colgroup",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/colgroup",
			"description": "The <colgroup> HTML element defines a group of columns within a table.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "col"
					}
				],
				"conditional": [
					{
						"condition": "[span]",
						"contents": false
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of each column group cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and the offset defined by the charoff attribute. Note that the descendant <col> elements may override this value using their own align attribute. Use the text-align CSS property on the <td> and <th> elements instead, as this attribute is deprecated. Note: Setting text-align on the <colgroup> element has no effect as <td> and <th> elements are not descendants of the <colgroup> element, and therefore they do not inherit from it. If the table does not use a colspan attribute, use the td:nth-of-type(an+b) CSS selector per column, where a is the total number of the columns in the table and b is the ordinal position of the column in the table, e.g., td:nth-of-type(7n+2) { text-align: right; } to right-align the second column cells. If the table does use a colspan attribute, the effect can be achieved by combining adequate CSS attribute selectors like [colspan=n], though this is not trivial.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of each column group cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Does nothing. It was originally intended to specify the alignment of the content to a character of each column group cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored, though it will still be used as the default value for the align of the <col> elements which are members of this column group.",
					"deprecated": true
				},
				"charoff": {
					"description": "Does nothing. It was originally intended to specify the number of characters to offset the column group cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"span": {
					"description": "Specifies the number of consecutive columns the <colgroup> element spans. The value must be a positive integer greater than zero. If not present, its default value is 1. Note: The span attribute is not permitted if there are one or more <col> elements within the <colgroup>.",
					"type": {
						"type": "integer",
						"gt": 0,
						"lte": 1000,
						"clampable": true
					},
					"defaultValue": "1"
				},
				"valign": {
					"description": "Specifies the vertical alignment of each column group cell. The possible enumerated values are baseline, bottom, middle, and top. Note that the descendant <col> elements may override this value using their own valign attribute. Use the vertical-align CSS property on the <td> and <th> elements instead, as this attribute is deprecated. Note: Setting vertical-align on the <colgroup> element has no effect as <td> and <th> elements are not descendants of the <colgroup> element, and therefore they do not inherit from it. If the table does not use a colspan attribute, use the td:nth-of-type() CSS selector per column, e.g., td:nth-of-type(2) { vertical-align: middle; } to center the second column cells vertically. If the table does use a colspan attribute, the effect can be achieved by combining adequate CSS attribute selectors like [colspan=n], though this is not trivial.",
					"deprecated": true
				},
				"width": {
					"description": "Specifies a default width for each column in the current column group. In addition to the standard pixel and percentage values, this attribute can take the special form 0*, which means that the width of each column spanned should be the minimum width necessary to hold the column's contents. Relative widths such as 5* can also be used. Note that the descendant <col> elements may override this value using their own width attribute. Use the width CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "data",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/data",
			"description": "The <data> HTML element links a given piece of content with a machine-readable translation. If the content is time- or date-related, the <time> element must be used.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"value": {
					"description": "This attribute specifies the machine-readable translation of the content of the element.",
					"type": "Any",
					"required": true
				}
			}
		},
		{
			"name": "datalist",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/datalist",
			"description": "The <datalist> HTML element contains a set of <option> elements that represent the permissible or recommended options available to choose from within other controls.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"oneOrMore": ":model(phrasing)"
								}
							],
							[
								{
									"zeroOrMore": ["option", ":model(script-supporting)"]
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": "listbox",
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "dd",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dd",
			"description": "The <dd> HTML element provides the description, definition, or value for the preceding term (<dt>) in a description list (<dl>).",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "definition"
				},
				"1.1": {
					"implicitRole": "definition"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "del",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/del",
			"description": "The <del> HTML element represents a range of text that has been deleted from a document. This can be used when rendering \"track changes\" or source code diff information, for example. The <ins> element can be used for the opposite purpose: to indicate text that has been added to the document.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"transparent": "*"
					}
				]
			},
			"aria": {
				"implicitRole": "deletion",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"cite": {
					"description": "A URI for a resource that explains the change (for example, meeting minutes).",
					"type": "URL"
				},
				"datetime": {
					"description": "This attribute indicates the time and date of the change and must be a valid date string with an optional time. If the value cannot be parsed as a date with an optional time string, the element does not have an associated timestamp. For the format of the string without a time, see Date strings. The format of the string if it includes both date and time is covered in Local date and time strings.",
					"type": "DateTime"
				}
			}
		},
		{
			"name": "details",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/details",
			"description": "The <details> HTML element creates a disclosure widget in which information is visible only when the widget is toggled into an open state. A summary or label must be provided using the <summary> element. A disclosure widget is typically presented onscreen using a small triangle that rotates (or twists) to indicate open/closed state, with a label next to the triangle. The contents of the <summary> element are used as the label for the disclosure widget. The contents of the <details> provide the accessible description for the <summary>.",
			"categories": ["#flow", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"require": "summary"
					},
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "group"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"name": {
					"description": "This attribute enables multiple <details> elements to be connected, with only one open at a time. This allows developers to easily create UI features such as accordions without scripting. The name attribute specifies a group name — give multiple <details> elements the same name value to group them. Only one of the grouped <details> elements can be open at a time — opening one will cause another to close. If multiple grouped <details> elements are given the open attribute, only the first one in the source order will be rendered open. Note: <details> elements don't have to be adjacent to one another in the source to be part of the same group.",
					"type": "NoEmptyAny"
				},
				"open": {
					"description": "This Boolean attribute indicates whether the details — that is, the contents of the <details> element — are currently visible. The details are shown when this attribute exists, or hidden when this attribute is absent. By default this attribute is absent which means the details are not visible. Note: You have to remove this attribute entirely to make the details hidden. open=\"false\" makes the details visible because this attribute is Boolean.",
					"type": "Boolean"
				}
			}
		},
		{
			"name": "dfn",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dfn",
			"description": "The <dfn> HTML element indicates a term to be defined. The <dfn> element should be used in a complete definition statement, where the full definition of the term can be one of the following: The ancestor paragraph (a block of text, sometimes marked by a <p> element) The <dt>/<dd> pairing The nearest section ancestor of the <dfn> element,",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing):not(dfn, :has(dfn))"
					}
				]
			},
			"aria": {
				"implicitRole": "term",
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "dialog",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dialog",
			"description": "The <dialog> HTML element represents a modal or non-modal dialog box or other interactive component, such as a dismissible alert, inspector, or subwindow. The HTML <dialog> element is used to create both modal and non-modal dialog boxes. Modal dialog boxes interrupt interaction with the rest of the page being inert, while non-modal dialog boxes allow interaction with the rest of the page. JavaScript should be used to display the <dialog> element. Use the .showModal() method to display a modal dialog and the .show() method to display a non-modal dialog. The dialog box can be closed using the .close() method or using the dialog method when submitting a <form> that is nested within the <dialog> element. Modal dialogs can also be closed by pressing the Esc key.",
			"categories": ["#flow"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "dialog",
				"permittedRoles": ["alertdialog"],
				"properties": {
					"global": true,
					"role": "dialog"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"closedby": {
					"description": "Specifies the types of user actions that can be used to close the <dialog> element. This attribute distinguishes three methods by which a dialog might be closed: A light dismiss user action, in which the <dialog> is closed when the user clicks or taps outside it. This is equivalent to the \"light dismiss\" behavior of \"auto\" state popovers. A platform-specific user action, such as pressing the Esc key on desktop platforms, or a \"back\" or \"dismiss\" gesture on mobile platforms. A developer-specified mechanism such as a <button> with a click handler that invokes HTMLDialogElement.close() or a <form> submission. Possible values are: any The dialog can be dismissed using any of the three methods. closerequest The dialog can be dismissed with a platform-specific user action or a developer-specified mechanism. none The dialog can only be dismissed with a developer-specified mechanism. If the <dialog> element does not have a valid closedby value specified, then if it was opened using showModal(), it behaves as if the value was \"closerequest\" otherwise, it behaves as if the value was \"none\".",
					"type": {
						"enum": ["any", "closerequest", "none"],
						"invalidValueDefault": "auto",
						"missingValueDefault": "auto"
					}
				},
				"open": {
					"description": "Indicates that the dialog box is active and is available for interaction. If the open attribute is not set, the dialog box will not be visible to the user. It is recommended to use the .show() or .showModal() method to render dialogs, rather than the open attribute. If a <dialog> is opened using the open attribute, it is non-modal. Note: While you can toggle between the open and closed states of non-modal dialog boxes by toggling the presence of the open attribute, this approach is not recommended. See open for more information.",
					"type": "Boolean"
				},
				"tabindex": {
					"noUse": true
				}
			}
		},
		{
			"name": "dir",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <dir> HTML element is used as a container for a directory of files and/or folders, potentially with styles and icons applied by the user agent. Do not use this obsolete element; instead, you should use the <ul> element for lists, including lists of files. Warning: Do not use this element. Though present in early HTML specifications, it has been deprecated in HTML 4, and has since been removed entirely.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {
				"compact": {
					"description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn't work in all browsers.",
					"deprecated": true
				}
			}
		},
		{
			"name": "div",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/div",
			"description": "The <div> HTML element is the generic container for flow content. It has no effect on the content or layout until styled in some way using CSS (e.g., styling is directly applied to it, or some kind of layout model like Flexbox is applied to its parent element).",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				],
				"conditional": [
					{
						"condition": "dl > div",
						"contents": [
							{
								"oneOrMore": [
									{
										"zeroOrMore": ":model(script-supporting)"
									},
									{
										"oneOrMore": "dt"
									},
									{
										"zeroOrMore": ":model(script-supporting)"
									},
									{
										"oneOrMore": "dd"
									},
									{
										"zeroOrMore": ":model(script-supporting)"
									}
								]
							}
						]
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"conditions": {
					"dl > div": {
						"permittedRoles": ["presentation", "none"]
					}
				},
				"1.1": {
					"implicitRole": false,
					"permittedRoles": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "dl",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dl",
			"description": "The <dl> HTML element represents a description list. The element encloses a list of groups of terms (specified using the <dt> element) and descriptions (provided by <dd> elements). Common uses for this element are to implement a glossary or to display metadata (a list of key-value pairs).",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"oneOrMore": [
										{
											"zeroOrMore": ":model(script-supporting)"
										},
										{
											"oneOrMore": "dt"
										},
										{
											"zeroOrMore": ":model(script-supporting)"
										},
										{
											"oneOrMore": "dd"
										},
										{
											"zeroOrMore": ":model(script-supporting)"
										}
									]
								}
							],
							[
								{
									"zeroOrMore": ":model(script-supporting)"
								},
								{
									"oneOrMore": "div"
								},
								{
									"zeroOrMore": ":model(script-supporting)"
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["group", "list", "none", "presentation"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"compact": {
					"description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute is browser-specific. Use CSS instead: to give a similar effect as the compact attribute, the CSS property line-height can be used with a value of 80%.",
					"deprecated": true
				}
			}
		},
		{
			"name": "dt",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dt",
			"description": "The <dt> HTML element specifies a term in a description or definition list, and as such must be used inside a <dl> element. It is usually followed by a <dd> element; however, multiple <dt> elements in a row indicate several terms that are all defined by the immediate next <dd> element. The subsequent <dd> (Description Details) element provides the definition or other related text associated with the term specified using <dt>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["listitem"],
				"1.1": {
					"implicitRole": "term"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "em",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/em",
			"description": "The <em> HTML element marks text that has stress emphasis. The <em> element can be nested, with each level of nesting indicating a greater degree of emphasis.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "emphasis",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "embed",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/embed",
			"description": "The <embed> HTML element embeds external content at the specified point in the document. This content is provided by an external application or other source of interactive content such as a browser plug-in.",
			"categories": ["#flow", "#phrasing", "#embedded", "#interactive", "#palpable"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["application", "document", "img", "none", "presentation"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["height", "width"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"height": {
					"description": "The displayed height of the resource, in CSS pixels. This must be an absolute value; percentages are not allowed."
				},
				"src": {
					"description": "The URL of the resource being embedded.",
					"type": "URL",
					"required": "[itemprop]"
				},
				"type": {
					"description": "The MIME type to use to select the plug-in to instantiate.",
					"type": "MIMEType"
				},
				"width": {
					"description": "The displayed width of the resource, in CSS pixels. This must be an absolute value; percentages are not allowed."
				}
			}
		},
		{
			"name": "fieldset",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/fieldset",
			"description": "The <fieldset> HTML element is used to group several controls as well as labels (<label>) within a web form.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"optional": "legend"
					},
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": ["radiogroup", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": ["disabled", "form", "name"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"disabled": {
					"description": "If this Boolean attribute is set, all form controls that are descendants of the <fieldset>, are disabled, meaning they are not editable and won't be submitted along with the <form>. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the <legend> element won't be disabled."
				},
				"form": {
					"description": "This attribute takes the value of the id attribute of a <form> element you want the <fieldset> to be part of, even if it is not inside the form. Please note that usage of this is confusing — if you want the <input> elements inside the <fieldset> to be associated with the form, you need to use the form attribute directly on those elements. You can check which elements are associated with a form via JavaScript, using HTMLFormElement.elements."
				},
				"name": {
					"description": "The name associated with the group. Note: The caption for the fieldset is given by the first <legend> element nested inside it."
				}
			}
		},
		{
			"name": "figcaption",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/figcaption",
			"description": "The <figcaption> HTML element represents a caption or legend describing the rest of the contents of its parent <figure> element, providing the <figure> an accessible name.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["group", "none", "presentation"],
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "figure",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/figure",
			"description": "The <figure> HTML element represents self-contained content, potentially with an optional caption, which is specified using the <figcaption> element. The figure, its caption, and its contents are referenced as a single unit.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"require": "figcaption"
								},
								{
									"oneOrMore": ":model(flow)"
								}
							],
							[
								{
									"oneOrMore": ":model(flow)"
								},
								{
									"require": "figcaption"
								}
							],
							[
								{
									"oneOrMore": ":model(flow)"
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": "figure",
				"permittedRoles": true,
				"conditions": {
					":has(figcaption)": {
						"permittedRoles": false
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "font",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <font> HTML element defines the font size, color and face for its content. Warning: Do not use this element. Use the CSS Fonts properties to style text.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {
				"color": {
					"description": "This attribute sets the text color using either a named color or a color specified in the hexadecimal #RRGGBB format.",
					"deprecated": true
				},
				"face": {
					"description": "This attribute contains a comma-separated list of one or more font names. The document text in the default style is rendered in the first font face that the client's browser supports. If no font listed is installed on the local system, the browser typically defaults to the proportional or fixed-width font for that system.",
					"deprecated": true
				},
				"size": {
					"description": "This attribute specifies the font size as either a numeric or relative value. Numeric values range from 1 to 7 with 1 being the smallest and 3 the default. It can be defined using a relative value, like +2 or -3, which sets it relative to 3, the default value.",
					"deprecated": true
				}
			}
		},
		{
			"name": "footer",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/footer",
			"description": "The <footer> HTML element represents a footer for its nearest ancestor sectioning content or sectioning root element. A <footer> typically contains information about the author of the section, copyright data or links to related documents.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow):not(header, footer, :has(header, footer))"
					}
				]
			},
			"aria": {
				"implicitRole": "contentinfo",
				"permittedRoles": ["group", "presentation", "none"],
				"conditions": {
					":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])": {
						"implicitRole": "generic",
						"namingProhibited": true
					}
				},
				"1.1": {
					"implicitRole": "contentinfo",
					"conditions": {
						":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])": {
							"implicitRole": false
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "form",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/form",
			"description": "The <form> HTML element represents a document section containing interactive controls for submitting information.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow):not(form, :has(form))"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"conditions": {
					":aria(has name)": {
						"implicitRole": "form"
					}
				},
				"permittedRoles": ["search", "none", "presentation"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"accept": {
					"description": "Comma-separated content types the server accepts. Note: This attribute has been deprecated and should not be used. Instead, use the accept attribute on <input type=file> elements.",
					"deprecated": true
				},
				"accept-charset": {
					"description": "The character encoding accepted by the server. The specification allows a single case-insensitive value of \"UTF-8\", reflecting the ubiquity of this encoding (historically multiple character encodings could be specified as a comma-separated or space-separated list).",
					"type": {
						"enum": ["utf-8"],
						"caseInsensitive": true
					}
				},
				"action": {
					"type": "URL"
				},
				"autocapitalize": {
					"description": "Controls whether inputted text is automatically capitalized and, if so, in what manner. See the autocapitalize global attribute page for more information."
				},
				"autocomplete": {
					"description": "Indicates whether input elements can by default have their values automatically completed by the browser. autocomplete attributes on form elements override it on <form>. Possible values: off: The browser may not automatically complete entries. (Browsers tend to ignore this for suspected login forms; see Managing autofill for login fields.) on: The browser may automatically complete entries.",
					"type": {
						"enum": ["on", "off"],
						"invalidValueDefault": "on",
						"missingValueDefault": "on"
					}
				},
				"enctype": {
					"type": {
						"enum": ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"],
						"invalidValueDefault": "application/x-www-form-urlencoded",
						"missingValueDefault": "application/x-www-form-urlencoded"
					}
				},
				"method": {
					"type": {
						"enum": ["post", "get", "dialog"],
						"invalidValueDefault": "get",
						"missingValueDefault": "get"
					}
				},
				"name": {
					"description": "The name of the form. The value must not be the empty string, and must be unique among the form elements in the forms collection that it is in, if any. The name becomes a property of the Window, Document, and document.forms objects, containing a reference to the form element.",
					"type": "NoEmptyAny"
				},
				"novalidate": {
					"type": "Boolean"
				},
				"rel": {
					"description": "Controls the annotations and what kinds of links the form creates. Annotations include external, nofollow, opener, noopener, and noreferrer. Link types include help, prev, next, search, and license. The rel value is a space-separated list of these enumerated values.",
					"type": "LinkTypeForFormElement"
				},
				"target": {
					"type": "NavigableTargetNameOrKeyword"
				}
			}
		},
		{
			"name": "frame",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <frame> HTML element defines a particular area in which another HTML document can be displayed. A frame should be used within a <frameset>. Using the <frame> element is not encouraged because of certain disadvantages such as performance problems and lack of accessibility for users with screen readers. Instead of the <frame> element, <iframe> may be preferred.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {
				"frameborder": {
					"description": "This attribute allows you to specify a frame's border.",
					"deprecated": true
				},
				"marginheight": {
					"description": "This attribute defines the height of the margin between frames.",
					"deprecated": true
				},
				"marginwidth": {
					"description": "This attribute defines the width of the margin between frames.",
					"deprecated": true
				},
				"name": {
					"description": "This attribute is used for labeling frames. Without labeling, every link will open in the frame that it's in – the closest parent frame. See the target attribute for more information.",
					"deprecated": true
				},
				"noresize": {
					"description": "This attribute prevents resizing of frames by users.",
					"deprecated": true
				},
				"scrolling": {
					"description": "This attribute defines the existence of a scrollbar. If this attribute is not used, the browser adds a scrollbar when necessary. There are two choices: \"yes\" for forcing a scrollbar even when it is not necessary and \"no\" for forcing no scrollbar even when it is necessary.",
					"deprecated": true
				},
				"src": {
					"description": "This attribute specifies the document that will be displayed by the frame.",
					"deprecated": true
				}
			}
		},
		{
			"name": "frameset",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <frameset> HTML element is used to contain <frame> elements. Note: Because the use of frames is now discouraged in favor of using <iframe>, this element is not typically used by modern websites.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {
				"cols": {
					"description": "This attribute specifies the number and size of horizontal spaces in a frameset.",
					"deprecated": true
				},
				"rows": {
					"description": "This attribute specifies the number and size of vertical spaces in a frameset.",
					"deprecated": true
				}
			}
		},
		{
			"name": "h1",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
			"description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest. By default, all heading elements create a block-level box in the layout, starting on a new line and taking up the full width available in their containing block.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "heading",
				"implicitProperties": {
					"aria-level": "1"
				},
				"permittedRoles": ["tab", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "h2",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
			"description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest. By default, all heading elements create a block-level box in the layout, starting on a new line and taking up the full width available in their containing block.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "heading",
				"implicitProperties": {
					"aria-level": "2"
				},
				"permittedRoles": ["tab", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "h3",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
			"description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest. By default, all heading elements create a block-level box in the layout, starting on a new line and taking up the full width available in their containing block.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "heading",
				"implicitProperties": {
					"aria-level": "3"
				},
				"permittedRoles": ["tab", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "h4",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
			"description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest. By default, all heading elements create a block-level box in the layout, starting on a new line and taking up the full width available in their containing block.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "heading",
				"implicitProperties": {
					"aria-level": "4"
				},
				"permittedRoles": ["tab", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "h5",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
			"description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest. By default, all heading elements create a block-level box in the layout, starting on a new line and taking up the full width available in their containing block.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "heading",
				"implicitProperties": {
					"aria-level": "5"
				},
				"permittedRoles": ["tab", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "h6",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements",
			"description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest. By default, all heading elements create a block-level box in the layout, starting on a new line and taking up the full width available in their containing block.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "heading",
				"implicitProperties": {
					"aria-level": "6"
				},
				"permittedRoles": ["tab", "presentation", "none"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "head",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/head",
			"description": "The <head> HTML element contains machine-readable information (metadata) about the document, like its title, scripts, and style sheets. There can be only one <head> element in an HTML document. Note: <head> primarily holds information for machine processing, not human-readability. For human-visible information, like top-level headings and listed authors, see the <header> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ":model(metadata):not(title)"
					},
					{
						"require": "title"
					},
					{
						"zeroOrMore": ":model(metadata):not(title)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"profile": {
					"description": "The URIs of one or more metadata profiles, separated by white space.",
					"deprecated": true
				}
			}
		},
		{
			"name": "header",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/header",
			"description": "The <header> HTML element represents introductory content, typically a group of introductory or navigational aids. It may contain some heading elements but also a logo, a search form, an author name, and other elements.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow):not(header, footer, :has(header, footer))"
					}
				]
			},
			"aria": {
				"implicitRole": "banner",
				"permittedRoles": ["group", "presentation", "none"],
				"conditions": {
					":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])": {
						"implicitRole": "generic",
						"namingProhibited": true
					}
				},
				"1.1": {
					"implicitRole": "banner",
					"conditions": {
						":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])": {
							"implicitRole": false
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "hgroup",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/hgroup",
			"description": "The <hgroup> HTML element represents a heading and related content. It groups a single <h1>–<h6> element with one or more <p>.",
			"categories": ["#flow", "#heading", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"zeroOrMore": "p"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"require": ["h1", "h2", "h3", "h4", "h5", "h6"]
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"zeroOrMore": "p"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "hr",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/hr",
			"description": "The <hr> HTML element represents a thematic break between paragraph-level elements: for example, a change of scene in a story, or a shift of topic within a section.",
			"categories": ["#flow"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": "separator",
				"permittedRoles": ["presentation", "none"],
				"properties": {
					"global": true,
					"role": "separator"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Sets the alignment of the rule on the page. If no value is specified, the default value is left.",
					"deprecated": true,
					"nonStandard": true
				},
				"color": {
					"description": "Sets the color of the rule through color name or hexadecimal value.",
					"deprecated": true,
					"nonStandard": true
				},
				"noshade": {
					"description": "Sets the rule to have no shading.",
					"deprecated": true,
					"nonStandard": true
				},
				"size": {
					"description": "Sets the height, in pixels, of the rule.",
					"deprecated": true,
					"nonStandard": true
				},
				"width": {
					"description": "Sets the length of the rule on the page through a pixel or percentage value.",
					"deprecated": true,
					"nonStandard": true
				}
			}
		},
		{
			"name": "html",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/html",
			"description": "The <html> HTML element represents the root (top-level element) of an HTML document, so it is also referred to as the root element. All other elements must be descendants of this element. There can be only one <html> element in a document.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"require": "head"
					},
					{
						"require": "body"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": ["document", "generic"],
				"namingProhibited": true,
				"properties": false,
				"1.1": {
					"implicitRole": "document",
					"permittedRoles": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"version": {
					"description": "Specifies the version of the HTML Document Type Definition that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration.",
					"deprecated": true
				},
				"xmlns": {
					"description": "Specifies the XML Namespace of the document. Default value is \"http://www.w3.org/1999/xhtml\". This is required in documents parsed with XML parsers, and optional in text/html documents."
				}
			}
		},
		{
			"name": "i",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/i",
			"description": "The <i> HTML element represents a range of text that is set off from the normal text for some reason, such as idiomatic text, technical terms, taxonomical designations, among others. Historically, these have been presented using italicized type, which is the original source of the <i> naming of this element.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "iframe",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe",
			"description": "The <iframe> HTML element represents a nested browsing context, embedding another HTML page into the current one.",
			"categories": ["#flow", "#phrasing", "#embedded", "#interactive", "#palpable"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["application", "document", "img", "none", "presentation"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["src", "height", "width"],
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["referrerpolicy", "loading", "fetchpriority"]
			},
			"attributes": {
				"align": {
					"description": "The alignment of this element with respect to the surrounding context.",
					"deprecated": true
				},
				"allow": {
					"description": "Specifies a Permissions Policy for the <iframe>. The policy defines what features are available to the <iframe> (for example, access to the microphone, camera, battery, web-share, etc.) based on the origin of the request. See iframes in the Permissions-Policy topic for examples. Note: A Permissions Policy specified by the allow attribute implements a further restriction on top of the policy specified in the Permissions-Policy header. It doesn't replace it.",
					"type": "SerializedPermissionsPolicy"
				},
				"allowfullscreen": {
					"description": "Set to true if the <iframe> can activate fullscreen mode by calling the requestFullscreen() method. Note: This attribute is considered a legacy attribute and redefined as allow=\"fullscreen *\".",
					"type": "Boolean"
				},
				"allowpaymentrequest": {
					"description": "Set to true if a cross-origin <iframe> should be allowed to invoke the Payment Request API. Note: This attribute is considered a legacy attribute and redefined as allow=\"payment *\".",
					"deprecated": true,
					"nonStandard": true
				},
				"browsingtopics": {
					"description": "A boolean attribute that, if present, specifies that the selected topics for the current user should be sent with the request for the <iframe>'s source. See Using the Topics API for more details.",
					"deprecated": true,
					"nonStandard": true
				},
				"credentialless": {
					"description": "Set to true to make the <iframe> credentialless, meaning that its content will be loaded in a new, ephemeral context. It doesn't have access to the network, cookies, and storage data associated with its origin. It uses a new context local to the top-level document lifetime. In return, the Cross-Origin-Embedder-Policy (COEP) embedding rules can be lifted, so documents with COEP set can embed third-party documents that do not. See IFrame credentialless for more details.",
					"experimental": true
				},
				"csp": {
					"description": "A Content Security Policy enforced for the embedded resource. See HTMLIFrameElement.csp for details.",
					"experimental": true
				},
				"frameborder": {
					"description": "The value 1 (the default) draws a border around this frame. The value 0 removes the border around this frame, but you should instead use the CSS property border to control <iframe> borders.",
					"deprecated": true
				},
				"height": {
					"description": "The height of the frame in CSS pixels. Default is 150."
				},
				"loading": {
					"description": "Indicates when the browser should load the iframe: eager Load the iframe immediately on page load (this is the default value). lazy Defer loading of the iframe until it reaches a calculated distance from the visual viewport, as defined by the browser. The intent is to avoid using the network and storage bandwidth required to fetch the frame until the browser is reasonably certain that it will be needed. This improves the performance and cost in most typical use cases, in particular by reducing initial page load times. Note: Loading is only deferred when JavaScript is enabled. This is an anti-tracking measure."
				},
				"longdesc": {
					"description": "A URL of a long description of the frame's content. Due to widespread misuse, this is not helpful for non-visual browsers.",
					"deprecated": true
				},
				"marginheight": {
					"description": "The amount of space in pixels between the frame's content and its top and bottom borders.",
					"deprecated": true
				},
				"marginwidth": {
					"description": "The amount of space in pixels between the frame's content and its left and right borders.",
					"deprecated": true
				},
				"name": {
					"description": "A targetable name for the embedded browsing context. This can be used in the target attribute of the <a>, <form>, or <base> elements; the formtarget attribute of the <input> or <button> elements; or the windowName parameter in the window.open() method. In addition, the name becomes a property of the Window and Document objects, containing a reference to the embedded window or the element itself.",
					"type": "NavigableTargetName"
				},
				"privateToken": {
					"description": "Contains a string representation of an options object representing a private state token operation; this object has the same structure as the RequestInit dictionary's privateToken property. IFrames containing this attribute can initiate operations such as issuing or redeeming tokens when their embedded content is loaded.",
					"experimental": true,
					"type": "Any"
				},
				"referrerpolicy": {
					"description": "Indicates which referrer to send when fetching the frame's resource: no-referrer The Referer header will not be sent. no-referrer-when-downgrade The Referer header will not be sent to origins without TLS (HTTPS). origin The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default) Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
				},
				"sandbox": {
					"description": "Controls the restrictions applied to the content embedded in the <iframe>. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions: allow-downloads Allows downloading files through an <a> or <area> element with the download attribute, as well as through the navigation that leads to a download of a file. This works regardless of whether the user clicked on the link, or JS code initiated it without user interaction. allow-forms Allows the page to submit forms. If this keyword is not used, a form will be displayed as normal, but submitting it will not trigger input validation, send data to a web server, or close a dialog. allow-modals Allows the page to open modal windows by Window.alert(), Window.confirm(), Window.print() and Window.prompt(), while opening a <dialog> is allowed regardless of this keyword. It also allows the page to receive BeforeUnloadEvent event. allow-orientation-lock Lets the resource lock the screen orientation. allow-pointer-lock Allows the page to use the Pointer Lock API. allow-popups Allows popups (created, for example, by Window.open() or target=\"_blank\"). If this keyword is not used, such functionality will silently fail. allow-popups-to-escape-sandbox Allows a sandboxed document to open a new browsing context without forcing the sandboxing flags upon it. This will allow, for example, a third-party advertisement to be safely sandboxed without forcing the same restrictions upon the page the ad links to. If this flag is not included, a redirected page, popup window, or new tab will be subject to the same sandbox restrictions as the originating <iframe>. allow-presentation Allows embedders to have control over whether an iframe can start a presentation session. allow-same-origin If this token is not used, the resource is treated as being from a special origin that always fails the same-origin policy (potentially preventing access to data storage/cookies and some JavaScript APIs). Note: When allow-same-origin is present, a same-origin parent document can still access and interact with the iframe's DOM even if allow-scripts is not set. The allow-scripts token only controls script execution within the embedded browsing context and does not affect DOM access from the parent. allow-scripts Allows the page to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed. allow-storage-access-by-user-activation Experimental Allows a document loaded in the <iframe> to use the Storage Access API to request access to unpartitioned cookies. allow-top-navigation Lets the resource navigate the top-level browsing context (the one named _top). allow-top-navigation-by-user-activation Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture. allow-top-navigation-to-custom-protocols Allows navigations to non-http protocols built into browser or registered by a website. This feature is also activated by allow-popups or allow-top-navigation keyword. Note: When the embedded document has the same origin as the embedding page, it is strongly discouraged to use both allow-scripts and allow-same-origin, as that lets the embedded document remove the sandbox attribute — making it no more secure than not using the sandbox attribute at all. Sandboxing is useless if the attacker can display content outside a sandboxed iframe — such as if the viewer opens the frame in a new tab. Such content should be also served from a separate origin to limit potential damage. Note: When redirecting the user, opening a popup window, or opening a new tab from an embedded page within an <iframe> with the sandbox attribute, the new browsing context is subject to the same sandbox restrictions. This can create issues — for example, if a page embedded within an <iframe> without a sandbox=\"allow-forms\" or sandbox=\"allow-popups-to-escape-sandbox\" attribute set on it opens a new site in a separate tab, form submission in that new browsing context will silently fail.",
					"type": {
						"token": {
							"enum": [
								"allow-forms",
								"allow-modals",
								"allow-orientation-lock",
								"allow-pointer-lock",
								"allow-popups",
								"allow-popups-to-escape-sandbox",
								"allow-presentation",
								"allow-same-origin",
								"allow-scripts",
								"allow-top-navigation",
								"allow-top-navigation-by-user-activation",
								"allow-downloads",
								"allow-custom-protocols-navigation"
							]
						},
						"caseInsensitive": true,
						"ordered": true,
						"unique": true,
						"separator": "space"
					}
				},
				"scrolling": {
					"description": "Indicates when the browser should provide a scrollbar for the frame: auto Only when the frame's content is larger than its dimensions. yes Always show a scrollbar. no Never show a scrollbar.",
					"deprecated": true
				},
				"src": {
					"description": "The URL of the page to embed. Use a value of about:blank to embed an empty page that conforms to the same-origin policy. Also note that programmatically removing an <iframe>'s src attribute (e.g., via Element.removeAttribute()) causes about:blank to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS. Note: The about:blank page uses the embedding document's URL as its base URL when resolving any relative URLs, such as anchor links.",
					"required": "[itemprop]",
					"ineffective": "[srcdoc]"
				},
				"srcdoc": {
					"description": "Inline HTML to embed, overriding the src attribute. Its content should follow the syntax of a full HTML document, which includes the doctype directive, <html>, <body> tags, etc., although most of them can be omitted, leaving only the body content. This doc will have about:srcdoc as its location. If a browser does not support the srcdoc attribute, it will fall back to the URL in the src attribute. Note: The about:srcdoc page uses the embedding document's URL as its base URL when resolving any relative URLs, such as anchor links.",
					"type": "Any"
				},
				"width": {
					"description": "The width of the frame in CSS pixels. Default is 300."
				}
			}
		},
		{
			"name": "img",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img",
			"description": "The <img> HTML element embeds an image into the document.",
			"categories": ["#flow", "#phrasing", "#embedded", "#interactive", "#palpable"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": "img",
				"permittedRoles": [
					"button",
					"checkbox",
					"link",
					"math",
					"menuitem",
					"menuitemcheckbox",
					"menuitemradio",
					"meter",
					"option",
					"progressbar",
					"radio",
					"scrollbar",
					"separator",
					"slider",
					"switch",
					"tab",
					"treeitem"
				],
				"conditions": {
					"[alt=\"\"]": {
						"implicitRole": "presentation",
						"permittedRoles": false,
						"properties": {
							"only": [
								{
									"name": "aria-hidden",
									"value": "true"
								}
							]
						}
					},
					":not([alt]):aria(has no name)": {
						"implicitRole": "img",
						"permittedRoles": false,
						"properties": {
							"only": [
								{
									"name": "aria-hidden",
									"value": "true"
								}
							]
						}
					}
				},
				"1.1": {
					"permittedRoles": [
						"button",
						"checkbox",
						"link",
						"menuitem",
						"menuitemcheckbox",
						"menuitemradio",
						"option",
						"progressbar",
						"scrollbar",
						"separator",
						"slider",
						"switch",
						"tab",
						"treeitem"
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["src", "height", "srcset", "sizes", "width"],
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["crossorigin", "referrerpolicy", "loading", "fetchpriority"]
			},
			"attributes": {
				"align": {
					"description": "Aligns the image with its surrounding context. Use the float and/or vertical-align CSS properties instead of this attribute. Allowed values: top Equivalent to vertical-align: top or vertical-align: text-top middle Equivalent to vertical-align: -moz-middle-with-baseline bottom The default, equivalent to vertical-align: unset or vertical-align: initial left Equivalent to float: left right Equivalent to float: right",
					"deprecated": true
				},
				"alt": {
					"description": "Defines text that can replace the image in the page. Note: Browsers do not always display images. There are a number of situations in which a browser might not display images, such as: Non-visual browsers (such as those used by people with visual impairments) The user chooses not to display images (saving bandwidth, privacy reasons) The image is invalid or an unsupported type In these cases, the browser may replace the image with the text in the element's alt attribute. For these reasons and others, provide a useful value for alt whenever possible. Setting this attribute to an empty string (alt=\"\") indicates that this image is not a key part of the content (it's decoration or a tracking pixel), and that non-visual browsers may omit it from rendering. Visual browsers will also hide the broken image icon if the alt attribute is empty and the image failed to display. This attribute is also used when copying and pasting the image to text, or saving a linked image to a bookmark.",
					"type": "Any"
				},
				"attributionsrc": {
					"description": "Specifies that you want the browser to send an Attribution-Reporting-Eligible header along with the image request. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header in the response, to register an image-based attribution source or attribution trigger, respectively. Which response header should be sent back depends on the value of the Attribution-Reporting-Eligible header that triggered the registration. The corresponding source or trigger event is set off once the browser receives the response containing the image file. Note: See the Attribution Reporting API for more details. There are two versions of this attribute that you can set: Boolean, i.e., just the attributionsrc name. This specifies that you want the Attribution-Reporting-Eligible header sent to the same server as the src attribute points to. This is fine when you are handling the attribution source or trigger registration on the same server. When registering an attribution trigger this property is optional, and a boolean value will be used if it is omitted. Value containing one or more URLs, for example: html<img src=\"image-file.png\" alt=\"My image file description\" attributionsrc=\"https://a.example/register-source https://b.example/register-source\" /> This is useful in cases where the requested resource is not on a server you control, or you just want to handle registering the attribution source on a different server. In this case, you can specify one or more URLs as the value of attributionsrc. When the resource request occurs the Attribution-Reporting-Eligible header will be sent to the URL(s) specified in attributionSrc in addition to the resource origin. These URLs can then respond with an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header as appropriate to complete registration. Note: Specifying multiple URLs means that multiple attribution sources can be registered on the same feature. You might for example have different campaigns that you are trying to measure the success of, which involve generating different reports on different data.",
					"deprecated": true
				},
				"border": {
					"description": "The width of a border around the image. Use the border CSS property instead.",
					"deprecated": true
				},
				"crossorigin": {
					"description": "Indicates if the fetching of the image must be done using a CORS request. Image data from a CORS-enabled image returned from a CORS request can be reused in the <canvas> element without being marked \"tainted\". If the crossorigin attribute is not specified, then a non-CORS request is sent (without the Origin request header), and the browser marks the image as tainted and restricts access to its image data, preventing its usage in <canvas> elements. If the crossorigin attribute is specified, then a CORS request is sent (with the Origin request header); but if the server does not opt into allowing cross-origin access to the image data by the origin site (by not sending any Access-Control-Allow-Origin response header, or by not including the site's origin in any Access-Control-Allow-Origin response header it does send), then the browser blocks the image from loading, and logs a CORS error to the devtools console. Allowed values: anonymous A CORS request is sent with credentials omitted (that is, no cookies, X.509 certificates, or Authorization request header). use-credentials The CORS request is sent with any credentials included (that is, cookies, X.509 certificates, and the Authorization request header). If the server does not opt into sharing credentials with the origin site (by sending back the Access-Control-Allow-Credentials: true response header), then the browser marks the image as tainted and restricts access to its image data. If the attribute has an invalid value, browsers handle it as if the anonymous value was used. See CORS settings attributes for additional information."
				},
				"decoding": {
					"description": "This attribute provides a hint to the browser as to whether it should perform image decoding along with rendering the other DOM content in a single presentation step that looks more \"correct\" (sync), or render and present the other DOM content first and then decode the image and present it later (async). In practice, async means that the next paint does not wait for the image to decode. It is often difficult to perceive any noticeable effect when using decoding on static <img> elements. They'll likely be initially rendered as empty images while the image files are fetched (either from the network or from the cache) and then handled independently anyway, so the \"syncing\" of content updates is less apparent. However, the blocking of rendering while decoding happens, while often quite small, can be measured — even if it is difficult to observe with the human eye. See What does the image decoding attribute actually do? for a more detailed analysis (tunetheweb.com, 2023). Using different decoding types can result in more noticeable differences when dynamically inserting <img> elements into the DOM via JavaScript — see HTMLImageElement.decoding for more details. Allowed values: sync Decode the image synchronously along with rendering the other DOM content, and present everything together. async Decode the image asynchronously, after rendering and presenting the other DOM content. auto No preference for the decoding mode; the browser decides what is best for the user. This is the default value.",
					"type": {
						"enum": ["sync", "async", "auto"],
						"invalidValueDefault": "auto",
						"missingValueDefault": "auto"
					}
				},
				"elementtiming": {
					"description": "Marks the image for observation by the PerformanceElementTiming API. The value given becomes an identifier for the observed image element. See also the elementtiming attribute page."
				},
				"fetchpriority": {
					"description": "Provides a hint of the relative priority to use when fetching the image. Allowed values: high Fetch the image at a high priority relative to other images. low Fetch the image at a low priority relative to other images. auto Don't set a preference for the fetch priority. This is the default. It is used if no value or an invalid value is set."
				},
				"height": {
					"description": "The intrinsic height of the image, in pixels. Must be an integer without a unit. Note: Including height and width enables the aspect ratio of the image to be calculated by the browser prior to the image being loaded. This aspect ratio is used to reserve the space needed to display the image, reducing or even preventing a layout shift when the image is downloaded and painted to the screen. Reducing layout shift is a major component of good user experience and web performance."
				},
				"hspace": {
					"description": "The number of pixels of white space on the left and right of the image. Use the margin CSS property instead.",
					"deprecated": true
				},
				"ismap": {
					"description": "This Boolean attribute indicates that the image is part of a server-side map. If so, the coordinates where the user clicked on the image are sent to the server. Note: This attribute is allowed only if the <img> element is a descendant of an <a> element with a valid href attribute. This gives users without pointing devices a fallback destination.",
					"type": "Boolean",
					"condition": "a[href] img"
				},
				"loading": {
					"description": "Indicates how the browser should load the image: eager Loads the image immediately, regardless of whether or not the image is currently within the visible viewport (this is the default value). lazy Defers loading the image until it reaches a calculated distance from the viewport, as defined by the browser. The intent is to avoid the network and storage bandwidth needed to handle the image until it's reasonably certain that it will be needed. This generally improves the performance of the content in most typical use cases. While explicit width and height attributes are recommended for all images to avoid layout shift, they are especially important for lazy-loaded ones. Lazy-loaded images will never be loaded if they do not intersect a visible part of an element, even if loading them would change that, because unloaded images have a width and height of 0. It creates an even more disruptive user experience when the content visible in the viewport reflows in the middle of reading it. The load event is fired after eager-loaded images have been fetched and processed, but before lazy-laded ones are, even if the lazy-loaded images are located within the visual viewport immediately upon initial page load. These images are still loaded as soon as layout completes; they just don't affect the timing of the load event. That means that when load fires, it's possible that any lazy-loaded images located in the visual viewport may not yet be visible. Loading is only deferred when JavaScript is enabled. This is an anti-tracking measure, because if a user agent supported lazy loading when scripting is disabled, it would still be possible for a site to track a user's approximate scroll position throughout a session, by strategically placing images in a page's markup such that a server can track how many images are requested and when."
				},
				"longdesc": {
					"description": "A link to a more detailed description of the image. Possible values are a URL or an element id. Note: This attribute is considered obsolete in the HTML spec. It has an uncertain future; authors should use a WAI-ARIA alternative such as aria-describedby or aria-details.",
					"deprecated": true
				},
				"name": {
					"description": "A name for the element. Use the id attribute instead.",
					"deprecated": true
				},
				"referrerpolicy": {
					"description": "A string indicating which referrer to use when fetching the resource: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
				},
				"sizes": {
					"description": "One or more values separated by commas, which can be source sizes or the auto keyword. The spec requires that the sizes attribute to only be present when srcset uses width descriptors. A source size consists of: A media condition, omitted for the last item in the list. A source size value. Media conditions describe properties of the viewport, not the image. For example, (height <= 500px) 1000px proposes using an image source of 1000px width if the viewport height is 500px or less. Because a source size descriptor specifies the width to use for the image during layout, the media condition is typically (but not necessarily) based on the width. Source size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the srcset attribute, when those sources are described using width (w) descriptors. The selected source size affects the intrinsic size of the image (the image's display size if no CSS styling is applied). A source size value can be any non-negative length. It must not use CSS functions other than the math functions. Units are interpreted in the same way as media queries, meaning that all relative length units are relative to the document root rather than the <img> element. For example, an em value is relative to the root font size, not the font size of the image. Percentage values are not allowed. If the sizes attribute is not provided, it has a default value of 100vw (the viewport width). The auto keyword can replace the whole list of sizes or the first entry in the list. It is only valid when combined with loading=\"lazy\", and resolves to the concrete size of the image. Since the intrinsic size of the image is not yet known, width and height attributes (or CSS equivalents) should also be specified to prevent the browser from assuming the default image width of 300px. For better backward compatibility with browsers that do not support auto, you can include fallback sizes after auto in the sizes attribute: html<img loading=\"lazy\" width=\"200\" height=\"200\" sizes=\"auto, (max-width: 30em) 100vw, (max-width: 50em) 50vw, calc(33vw - 100px)\" srcset=\" swing-200.jpg 200w, swing-400.jpg 400w, swing-800.jpg 800w, swing-1600.jpg 1600w \" src=\"swing-400.jpg\" alt=\"Kettlebell Swing\" />"
				},
				"src": {
					"description": "The image URL. At least one of src and srcset is required for an <img> element. If srcset is specified, src is used in one of two ways: as a fallback for browsers that don't support srcset. if srcset uses the \"x\" descriptor, then src is equivalent to a source with the density descriptor 1x; that is, the image specified by src is used on low-density screens (such as typical 72 DPI or 96 DPI displays).",
					"type": "URL",
					"requiredEither": ["srcset"]
				},
				"srcset": {
					"description": "One or more strings separated by commas, indicating possible image sources for the user agent to use. Each string is composed of: A URL to an image Optionally, whitespace followed by one of: A width descriptor (a positive integer directly followed by w). It must match the intrinsic width of the referenced image. The width descriptor is divided by the source size given in the sizes attribute to calculate the effective pixel density. For example, to provide an image resource to be used when the renderer needs a 450 pixel wide image, use the width descriptor 450w. When a srcset contains \"w\" descriptors, the browser uses those descriptors together with the sizes attribute to pick a resource. A pixel density descriptor (a positive floating point number directly followed by x). It specifies the condition in which the corresponding image resource should be used as the display's pixel density. For example, to provide an image resource to be used when the pixel density is double the standard density, use the pixel density descriptor 2x or 2.0x. If no descriptor is specified, the source is assigned the default descriptor of 1x. It is incorrect to mix width descriptors and pixel density descriptors in the same srcset attribute. Duplicate descriptors (for instance, two sources in the same srcset which are both described with 2x) are also invalid. Space characters, other than the whitespace separating the URL and the corresponding condition descriptor, are ignored; this includes both leading and trailing space, as well as space before or after each comma. However, if an image candidate string contains no descriptors and no whitespace after the URL, the following image candidate string, if there is one, must begin with one or more whitespace, or the comma will be considered part of the URL. When the <img> element's srcset uses x descriptors, browsers also consider the URL in the src attribute (if present) as a candidate, and assign it a default descriptor of 1x. On the other hand, if the srcset attribute uses width descriptors, src is not considered, and the sizes attribute is used instead. The user agent selects any of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or bandwidth conditions. See our Responsive images tutorial for an example.",
					"type": "Srcset",
					"requiredEither": ["src"]
				},
				"usemap": {
					"description": "The partial URL (starting with #) of an image map associated with the element. Note: You cannot use this attribute if the <img> element is inside an <a> or <button> element.",
					"type": "HashName",
					"condition": ":is(:not(a):not(button)) img"
				},
				"vspace": {
					"description": "The number of pixels of white space above and below the image. Use the margin CSS property instead.",
					"deprecated": true
				},
				"width": {
					"description": "The intrinsic width of the image in pixels. Must be an integer without a unit."
				}
			}
		},
		{
			"name": "input",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input",
			"description": "The <input> HTML element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent. The <input> element is one of the most powerful and complex in all of HTML due to the sheer number of combinations of input types and attributes.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": "textbox",
				"permittedRoles": ["combobox", "searchbox", "spinbutton"],
				"conditions": {
					"[type='button' i]": {
						"implicitRole": "button",
						"permittedRoles": [
							"checkbox",
							"combobox",
							"link",
							"menuitem",
							"menuitemcheckbox",
							"menuitemradio",
							"option",
							"radio",
							"switch",
							"tab"
						]
					},
					"[type='checkbox' i]": {
						"implicitRole": "checkbox",
						"permittedRoles": ["menuitemcheckbox", "option", "switch"],
						"properties": {
							"global": true,
							"role": true,
							"without": [
								{
									"type": "must-not",
									"name": "aria-checked",
									"alt": {
										"method": "set-attr",
										"target": "checked"
									}
								}
							]
						}
					},
					"[type='checkbox' i][aria-pressed]": {
						"implicitRole": "checkbox",
						"permittedRoles": ["button"],
						"properties": {
							"global": true,
							"role": true,
							"without": [
								{
									"type": "must-not",
									"name": "aria-checked",
									"alt": {
										"method": "set-attr",
										"target": "checked"
									}
								}
							]
						}
					},
					"[type='color' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true
						}
					},
					"[type='date' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='datetime-local' i]": {
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='email' i]:not([list])": {
						"implicitRole": "textbox",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='file' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true
						}
					},
					"[type='hidden' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": false
					},
					"[type='image' i]": {
						"implicitRole": "button",
						"permittedRoles": ["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio", "switch"]
					},
					"[type='month' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='number' i]": {
						"implicitRole": "spinbutton",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "spinbutton"
						}
					},
					"[type='password' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='radio' i]": {
						"implicitRole": "radio",
						"permittedRoles": ["menuitemradio"],
						"properties": {
							"global": true,
							"role": true,
							"without": [
								{
									"type": "must-not",
									"name": "aria-checked",
									"alt": {
										"method": "set-attr",
										"target": "checked"
									}
								}
							]
						}
					},
					"[type='range' i]": {
						"implicitRole": "slider",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "slider",
							"without": [
								{
									"type": "should-not",
									"name": "aria-valuemax"
								},
								{
									"type": "should-not",
									"name": "aria-valuemin"
								}
							]
						}
					},
					"[type='reset' i]": {
						"implicitRole": "button",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "button"
						}
					},
					"[type='search' i]:not([list])": {
						"implicitRole": "searchbox",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "searchbox"
						}
					},
					"[type='submit' i]": {
						"implicitRole": "button",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "button"
						}
					},
					"[type='tel' i]:not([list])": {
						"implicitRole": "textbox",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					":is(:not([type]), [type='text' i], [type='search' i], [type='tel' i], [type='url' i], [type='email' i])[list]": {
						"implicitRole": "combobox",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "combobox",
							"without": [
								{
									"type": "should-not",
									"name": "aria-haspopup"
								}
							]
						}
					},
					"[type='time' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='url' i]:not([list])": {
						"implicitRole": "textbox",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					},
					"[type='week' i]": {
						"implicitRole": false,
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "textbox"
						}
					}
				},
				"1.1": {
					"implicitRole": "textbox",
					"permittedRoles": ["combobox", "searchbox", "spinbutton"],
					"conditions": {
						"[type='button' i]": {
							"implicitRole": "button",
							"permittedRoles": [
								"link",
								"menuitem",
								"menuitemcheckbox",
								"menuitemradio",
								"option",
								"radio",
								"switch",
								"tab"
							]
						},
						"[type='checkbox' i]": {
							"implicitRole": "checkbox",
							"permittedRoles": ["menuitemcheckbox", "option", "switch"],
							"properties": {
								"global": true,
								"role": true,
								"without": [
									{
										"type": "should-not",
										"name": "aria-checked",
										"alt": {
											"method": "set-attr",
											"target": "checked"
										}
									}
								]
							}
						},
						"[type='checkbox' i][aria-pressed]": {
							"implicitRole": "checkbox",
							"permittedRoles": ["button"],
							"properties": {
								"global": true,
								"role": true,
								"without": [
									{
										"type": "should-not",
										"name": "aria-hecked"
									}
								]
							}
						},
						"[type='color' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true
							}
						},
						"[type='date' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='datetime-local' i]": {
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='email' i]:not([list])": {
							"implicitRole": "textbox",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='file' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true
							}
						},
						"[type='hidden' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": false
						},
						"[type='image' i]": {
							"implicitRole": "button",
							"permittedRoles": [
								"link",
								"menuitem",
								"menuitemcheckbox",
								"menuitemradio",
								"radio",
								"switch"
							]
						},
						"[type='month' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='number' i]": {
							"implicitRole": "spinbutton",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "spinbutton"
							}
						},
						"[type='password' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='radio' i]": {
							"implicitRole": "radio",
							"permittedRoles": ["menuitemradio"],
							"properties": {
								"global": true,
								"role": true,
								"without": [
									{
										"type": "should-not",
										"name": "aria-checked",
										"alt": {
											"method": "set-attr",
											"target": "checked"
										}
									}
								]
							}
						},
						"[type='range' i]": {
							"implicitRole": "slider",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "slider",
								"without": [
									{
										"type": "should-not",
										"name": "aria-valuemax"
									},
									{
										"type": "should-not",
										"name": "aria-valuemin"
									}
								]
							}
						},
						"[type='reset' i]": {
							"implicitRole": "button",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "button"
							}
						},
						"[type='search' i]:not([list])": {
							"implicitRole": "searchbox",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "searchbox"
							}
						},
						"[type='submit' i]": {
							"implicitRole": "button",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "button"
							}
						},
						"[type='tel' i]:not([list])": {
							"implicitRole": "textbox",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						":is(:not([type]), [type='text' i], [type='search' i], [type='tel' i], [type='url' i], [type='email' i])[list]": {
							"implicitRole": "combobox",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "combobox",
								"without": [
									{
										"type": "should-not",
										"name": "aria-haspopup"
									}
								]
							}
						},
						"[type='time' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='url' i]:not([list])": {
							"implicitRole": "textbox",
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						},
						"[type='week' i]": {
							"implicitRole": false,
							"permittedRoles": false,
							"properties": {
								"global": true,
								"role": "textbox"
							}
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["src", "height", "width"],
				"#HTMLFormControlElementAttrs": [
					"autocomplete",
					"dirname",
					"disabled",
					"form",
					"formaction",
					"formenctype",
					"formmethod",
					"formnovalidate",
					"formtarget",
					"name",
					"maxlength",
					"minlength",
					"readonly",
					"required"
				],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"accept": {
					"description": "Valid for the file input type only, the accept attribute defines which file types are selectable in a file upload control. See the file input type.",
					"type": {
						"token": "Accept",
						"caseInsensitive": true,
						"unique": true,
						"separator": "comma"
					},
					"condition": "[type='file' i]"
				},
				"alpha": {
					"description": "Valid for the color input type only, the alpha attribute provides the end user with the ability to set the opacity of the color being selected.",
					"experimental": true,
					"type": "Boolean",
					"condition": "[type='color' i]"
				},
				"alt": {
					"description": "Valid for the image button only, the alt attribute provides alternative text for the image, displaying the value of the attribute if the image src is missing or otherwise fails to load. See the image input type.",
					"type": "Any",
					"condition": "[type='image' i]"
				},
				"autocapitalize": {
					"description": "Controls whether inputted text is automatically capitalized and, if so, in what manner. See the autocapitalize global attribute page for more information."
				},
				"autocomplete": {
					"description": "(Not a Boolean attribute!) The autocomplete attribute takes as its value a space-separated string that describes what, if any, type of autocomplete functionality the input should provide. A typical implementation of autocomplete recalls previous values entered in the same input field, but more complex forms of autocomplete can exist. For instance, a browser could integrate with a device's contacts list to autocomplete email addresses in an email input field. See autocomplete for permitted values. The autocomplete attribute is valid on hidden, text, search, url, tel, email, date, month, week, time, datetime-local, number, range, color, and password. This attribute has no effect on input types that do not return numeric or text data, being valid for all input types except checkbox, radio, file, or any of the button types. See the autocomplete attribute for additional information, including information on password security and how autocomplete is slightly different for hidden than for other input types.",
					"condition": [
						":not([type])",
						"[type='hidden' i]",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]",
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]",
						"[type='range' i]",
						"[type='color' i]"
					]
				},
				"autofocus": {
					"description": "A Boolean attribute which, if present, indicates that the input should automatically have focus when the page has finished loading (or when the <dialog> containing the element has been displayed). Note: An element with the autofocus attribute may gain focus before the DOMContentLoaded event is fired. No more than one element in the document may have the autofocus attribute. If put on more than one element, the first one with the attribute receives focus. The autofocus attribute cannot be used on inputs of type hidden, since hidden inputs cannot be focused. Warning: Automatically focusing a form control can confuse visually-impaired people using screen-reading technology and people with cognitive impairments. When autofocus is assigned, screen-readers \"teleport\" their user to the form control without warning them beforehand. Use careful consideration for accessibility when applying the autofocus attribute. Automatically focusing on a control can cause the page to scroll on load. The focus can also cause dynamic keyboards to display on some touch devices. While a screen reader will announce the label of the form control receiving focus, the screen reader will not announce anything before the label, and the sighted user on a small device will equally miss the context created by the preceding content."
				},
				"capture": {
					"description": "Introduced in the HTML Media Capture specification and valid for the file input type only, the capture attribute defines which media—microphone, video, or camera—should be used to capture a new file for upload with file upload control in supporting scenarios. See the file input type."
				},
				"checked": {
					"description": "Valid for both radio and checkbox types, checked is a Boolean attribute. If present on a radio type, it indicates that the radio button is the currently selected one in the group of same-named radio buttons. If present on a checkbox type, it indicates that the checkbox is checked by default (when the page loads). It does not indicate whether this checkbox is currently checked: if the checkbox's state is changed, this content attribute does not reflect the change. (Only the HTMLInputElement's checked IDL attribute is updated.) Note: Unlike other input controls, a checkboxes and radio buttons value are only included in the submitted data if they are currently checked. If they are, the name and the value(s) of the checked controls are submitted. For example, if a checkbox whose name is fruit has a value of cherry, and the checkbox is checked, the form data submitted will include fruit=cherry. If the checkbox isn't active, it isn't listed in the form data at all. The default value for checkboxes and radio buttons is on.",
					"type": "Boolean",
					"condition": ["[type='checkbox' i]", "[type='radio' i]"]
				},
				"colorspace": {
					"description": "Valid for the color input type only, the colorspace attribute specifies the color space that is used by the type=\"color\" input. Possible enumerated values are: \"limited-srgb\": The color is in the sRGB color space. This includes rgb(), hsl(), hwb(), and <hex-color> values. The color value is limited to 8-bits per r, g, and b component. This is the default. \"display-p3\": The Display P3 color space, e.g., color(display-p3 1.84 -0.19 0.72 / 0.6)",
					"experimental": true,
					"type": {
						"enum": ["limited-srgb", "display-p3"],
						"invalidValueDefault": "limited-srgb",
						"missingValueDefault": "limited-srgb"
					},
					"condition": "[type='color' i]"
				},
				"dirname": {
					"description": "Valid for hidden, text, search, url, tel, and email input types, the dirname attribute enables the submission of the directionality of the element. When included, the form control will submit with two name/value pairs: the first being the name and value, and the second being the value of the dirname attribute as the name, with a value of ltr or rtl as set by the browser. html<form action=\"page.html\" method=\"post\"> <label> Fruit: <input type=\"text\" name=\"fruit\" dirname=\"fruit-dir\" value=\"cherry\" /> </label> <input type=\"submit\" /> </form> <!-- page.html?fruit=cherry&fruit-dir=ltr --> When the form above is submitted, the input cause both the name / value pair of fruit=cherry and the dirname / direction pair of fruit-dir=ltr to be sent. For more information, see the dirname attribute.",
					"condition": [
						":not([type])",
						"[type='hidden' i]",
						"[type='text' i]",
						"[type='search' i]",
						"[type='tel' i]",
						"[type='url' i]",
						"[type='email' i]",
						"[type='password' i]",
						"[type='submit' i]"
					]
				},
				"disabled": {
					"description": "A Boolean attribute which, if present, indicates that the user should not be able to interact with the input. Disabled inputs are typically rendered with a dimmer color or using some other form of indication that the field is not available for use. Specifically, disabled inputs do not receive the click event, and disabled inputs are not submitted with the form. Note: Although not required by the specification, Firefox will by default persist the dynamic disabled state of an <input> across page loads. Use the autocomplete attribute to control this feature."
				},
				"form": {
					"description": "A string specifying the <form> element with which the input is associated (that is, its form owner). This string's value, if present, must match the id of a <form> element in the same document. If this attribute isn't specified, the <input> element is associated with the nearest containing form, if any. The form attribute lets you place an input anywhere in the document but have it included with a form elsewhere in the document. Note: An input can only be associated with one form."
				},
				"formaction": {
					"description": "Valid for the image and submit input types only. See the submit input type for more information."
				},
				"formenctype": {
					"description": "Valid for the image and submit input types only. See the submit input type for more information."
				},
				"formmethod": {
					"description": "Valid for the image and submit input types only. See the submit input type for more information."
				},
				"formnovalidate": {
					"description": "Valid for the image and submit input types only. See the submit input type for more information."
				},
				"formtarget": {
					"description": "Valid for the image and submit input types only. See the submit input type for more information."
				},
				"height": {
					"description": "Valid for the image input button only, the height is the height of the image file to display to represent the graphical submit button. See the image input type.",
					"condition": "[type='image' i]"
				},
				"id": {
					"description": "Global attribute valid for all elements, including all the input types, it defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking. The value is used as the value of the <label>'s for attribute to link the label with the form control. See <label>."
				},
				"incremental": {
					"description": "The Boolean attribute incremental is a WebKit and Blink extension (so supported by Safari, Opera, Chrome, etc.) which, if present, tells the user agent to process the input as a live search. As the user edits the value of the field, the user agent sends search events to the HTMLInputElement object representing the search box. This allows your code to update the search results in real time as the user edits the search. If incremental is not specified, the search event is only sent when the user explicitly initiates a search (such as by pressing the Enter or Return key while editing the field). The search event is rate-limited so that it is not sent more frequently than an implementation-defined interval.",
					"nonStandard": true
				},
				"inputmode": {
					"description": "Global value valid for all elements, it provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Values include none, text, tel, url, email, numeric, decimal, and search."
				},
				"list": {
					"description": "The value given to the list attribute should be the id of a <datalist> element located in the same document. The <datalist> provides a list of predefined values to suggest to the user for this input. Any values in the list that are not compatible with the type are not included in the suggested options. The values provided are suggestions, not requirements: users can select from this predefined list or provide a different value. It is valid on text, search, url, tel, email, date, month, week, time, datetime-local, number, range, and color. Per the specifications, the list attribute is not supported by the hidden, password, checkbox, radio, file, or any of the button types. Depending on the browser, the user may see a custom color palette suggested, tic marks along a range, or even an input that opens like a <select> but allows for non-listed values. Check out the browser compatibility table for the other input types. See the <datalist> element.",
					"type": "DOMID",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]",
						"[type='range' i]",
						"[type='color' i]"
					]
				},
				"max": {
					"description": "Valid for date, month, week, time, datetime-local, number, and range, it defines the greatest value in the range of permitted values. If the value entered into the element exceeds this, the element fails constraint validation. If the value of the max attribute isn't a number, then the element has no maximum value. There is a special case: if the data type is periodic (such as for dates or times), the value of max may be lower than the value of min, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.",
					"type": ["DateTime", "Number"],
					"condition": [
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]",
						"[type='range' i]"
					]
				},
				"maxlength": {
					"description": "Valid for text, search, url, tel, email, and password, it defines the maximum string length (measured in UTF-16 code units) that the user can enter into the field. This must be an integer value of 0 or higher. If no maxlength is specified, or an invalid value is specified, the field has no maximum length. This value must also be greater than or equal to the value of minlength. The input will fail constraint validation if the length of the text entered into the field is greater than maxlength UTF-16 code units long. By default, browsers prevent users from entering more characters than allowed by the maxlength attribute. Constraint validation is only applied when the value is changed by the user. See Client-side validation for more information.",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]"
					]
				},
				"min": {
					"description": "Valid for date, month, week, time, datetime-local, number, and range, it defines the most negative value in the range of permitted values. If the value entered into the element is less than this, the element fails constraint validation. If the value of the min attribute isn't a number, then the element has no minimum value. This value must be less than or equal to the value of the max attribute. If the min attribute is present but is not specified or is invalid, no min value is applied. If the min attribute is valid and a non-empty value is less than the minimum allowed by the min attribute, constraint validation will prevent form submission. See Client-side validation for more information. There is a special case: if the data type is periodic (such as for dates or times), the value of max may be lower than the value of min, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.",
					"type": ["DateTime", "Number"],
					"condition": [
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]",
						"[type='range' i]"
					]
				},
				"minlength": {
					"description": "Valid for text, search, url, tel, email, and password, it defines the minimum string length (measured in UTF-16 code units) that the user can enter into the entry field. This must be a non-negative integer value smaller than or equal to the value specified by maxlength. If no minlength is specified, or an invalid value is specified, the input has no minimum length. The input will fail constraint validation if the length of the text entered into the field is fewer than minlength UTF-16 code units long, preventing form submission. Constraint validation is only applied when the value is changed by the user. See Client-side validation for more information.",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]"
					]
				},
				"multiple": {
					"description": "The Boolean multiple attribute, if set, means the user can enter comma separated email addresses in the email widget or can choose more than one file with the file input. See the email and file input type.",
					"type": "Boolean",
					"condition": ["[type='email' i]", "[type='file' i]"]
				},
				"name": {
					"description": "A string specifying a name for the input control. This name is submitted along with the control's value when the form data is submitted. Consider the name a required attribute (even though it's not). If an input has no name specified, or name is empty, the input's value is not submitted with the form! (Disabled controls, unchecked radio buttons, unchecked checkboxes, and reset buttons are also not sent.) There are two special cases: _charset_ : If used as the name of an <input> element of type hidden, the input's value is automatically set by the user agent to the character encoding being used to submit the form. isindex: For historical reasons, the name isindex is not allowed. The name attribute creates a unique behavior for radio buttons. Only one radio button in a same-named group of radio buttons can be checked at a time. Selecting any radio button in that group automatically deselects any currently-selected radio button in the same group. The value of that one checked radio button is sent along with the name if the form is submitted, When tabbing into a series of same-named group of radio buttons, if one is checked, that one will receive focus. If they aren't grouped together in source order, if one of the group is checked, tabbing into the group starts when the first one in the group is encountered, skipping all those that aren't checked. In other words, if one is checked, tabbing skips the unchecked radio buttons in the group. If none are checked, the radio button group receives focus when the first button in the same name group is reached. Once one of the radio buttons in a group has focus, using the arrow keys will navigate through all the radio buttons of the same name, even if the radio buttons are not grouped together in the source order. When an input element is given a name, that name becomes a property of the owning form element's HTMLFormElement.elements property. If you have an input whose name is set to guest and another whose name is hat-size, the following code can be used: jslet form = document.querySelector(\"form\"); let guestName = form.elements.guest; let hatSize = form.elements[\"hat-size\"]; When this code has run, guestName will be the HTMLInputElement for the guest field, and hatSize the object for the hat-size field. Warning: Avoid giving form elements a name that corresponds to a built-in property of the form, since you would then override the predefined property or method with this reference to the corresponding input."
				},
				"orient": {
					"description": "Similar to the -moz-orient non-standard CSS property impacting the <progress> and <meter> elements, the orient attribute defines the orientation of the range slider. Values include horizontal, meaning the range is rendered horizontally, and vertical, where the range is rendered vertically. See Creating vertical form controls for a modern approach to creating vertical form controls.",
					"nonStandard": true
				},
				"pattern": {
					"description": "Valid for text, search, url, tel, email, and password, the pattern attribute is used to compile a regular expression that the input's value must match in order for the value to pass constraint validation. It must be a valid JavaScript regular expression, as used by the RegExp type, and as documented in our guide on regular expressions. No forward slashes should be specified around the pattern text. When compiling the regular expression: the pattern will be implicitly wrapped with ^(?: and )$, such that the match is required against the entire input value, i.e., ^(?:<pattern>)$. the 'v' flag is specified so that the pattern is treated as a sequence of Unicode code points, instead of as ASCII. If the pattern attribute is present but is not specified or is invalid, no regular expression is applied and this attribute is ignored completely. If the pattern attribute is valid and a non-empty value does not match the pattern, constraint validation will prevent form submission. If the multiple is present, the compiled regular expression is matched against each comma separated value. Note: If using the pattern attribute, inform the user about the expected format by including explanatory text nearby. You can also include a title attribute to explain what the requirements are to match the pattern; most browsers will display this title as a tooltip. The visible explanation is required for accessibility. The tooltip is an enhancement. See Client-side validation for more information.",
					"type": "Pattern",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]"
					]
				},
				"placeholder": {
					"description": "Valid for text, search, url, tel, email, password, and number, the placeholder attribute provides a brief hint to the user as to what kind of information is expected in the field. It should be a word or short phrase that provides a hint as to the expected type of data, rather than an explanation or prompt. The text must not include carriage returns or line feeds. So for example if a field is expected to capture a user's first name, and its label is \"First Name\", a suitable placeholder might be \"e.g., Mustafa\". Note: The placeholder attribute is not as semantically useful as other ways to explain your form, and can cause unexpected technical issues with your content. See Labels for more information.",
					"type": "OneLineAny",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]",
						"[type='number' i]"
					]
				},
				"popovertarget": {
					"description": "Turns an <input type=\"button\"> element into a popover control button; takes the ID of the popover element to control as its value. See the Popover API landing page for more details. Establishing a relationship between a popover and its invoker button using the popovertarget attribute has two additional useful effects: The browser creates an implicit aria-details and aria-expanded relationship between popover and invoker, and places the popover in a logical position in the keyboard focus navigation order when shown. This makes the popover more accessible to keyboard and assistive technology (AT) users (see also Popover accessibility features). The browser creates an implicit anchor reference between the two, making it very convenient to position popovers relative to their controls using CSS anchor positioning. See Popover anchor positioning for more details.",
					"type": "DOMID",
					"condition": ["[type='button' i]", "[type='image' i]", "[type='reset' i]", "[type='submit' i]"]
				},
				"popovertargetaction": {
					"description": "Specifies the action to be performed on a popover element being controlled by a control <input type=\"button\">. Possible values are: \"hide\" The button will hide a shown popover. If you try to hide an already hidden popover, no action will be taken. \"show\" The button will show a hidden popover. If you try to show an already showing popover, no action will be taken. \"toggle\" The button will toggle a popover between showing and hidden. If the popover is hidden, it will be shown; if the popover is showing, it will be hidden. If popovertargetaction is omitted, \"toggle\" is the default action that will be performed by the control button.",
					"type": {
						"enum": ["toggle", "show", "hide"],
						"disallowToSurroundBySpaces": true,
						"invalidValueDefault": "toggle",
						"missingValueDefault": "toggle"
					},
					"condition": ["[type='button' i]", "[type='image' i]", "[type='reset' i]", "[type='submit' i]"]
				},
				"readonly": {
					"description": "A Boolean attribute which, if present, indicates that the user should not be able to edit the value of the input. The readonly attribute is supported by the text, search, url, tel, email, date, month, week, time, datetime-local, number, and password input types. See the HTML attribute: readonly for more information.",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]",
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]"
					]
				},
				"required": {
					"description": "required is a Boolean attribute which, if present, indicates that the user must specify a value for the input before the owning form can be submitted. The required attribute is supported by text, search, url, tel, email, date, month, week, time, datetime-local, number, password, checkbox, radio, and file inputs. See Client-side validation and the HTML attribute: required for more information.",
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]",
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]",
						"[type='checkbox' i]",
						"[type='radio' i]",
						"[type='file' i]"
					]
				},
				"results": {
					"description": "The results attribute—supported only by Safari—is a numeric value that lets you override the maximum number of entries to be displayed in the <input> element's natively-provided drop-down menu of previous search queries. The value must be a non-negative decimal number. If not provided, or an invalid value is given, the browser's default maximum number of entries is used.",
					"nonStandard": true
				},
				"size": {
					"description": "Valid for email, password, tel, url, and text, the size attribute specifies how much of the input is shown. Basically creates same result as setting CSS width property with a few specialties. The actual unit of the value depends on the input type. For password and text, it is a number of characters (or em units) with a default value of 20, and for others, it is pixels (or px units). CSS width takes precedence over the size attribute.",
					"type": {
						"type": "integer",
						"gt": 0
					},
					"condition": [
						":not([type])",
						"[type='text' i]",
						"[type='search' i]",
						"[type='url' i]",
						"[type='tel' i]",
						"[type='email' i]",
						"[type='password' i]"
					],
					"defaultValue": "20"
				},
				"src": {
					"description": "Valid for the image input button only, the src is string specifying the URL of the image file to display to represent the graphical submit button. See the image input type.",
					"condition": "[type='image' i]"
				},
				"step": {
					"description": "Valid for date, month, week, time, datetime-local, number, and range, the step attribute is a number that specifies the granularity that the value must adhere to. Only values which are a whole number of steps from the step base are valid. The step base is min if specified, value otherwise, or 0 if neither is provided (except for week, which has a default step base of −259,200,000, representing the start of week 1970-W01). If not explicitly included: step defaults to 1 for number and range. Each date/time input type has a default step value appropriate for the type; see the individual input pages: date, datetime-local, month, time, and week. The value must be a positive number—integer or float—or the special value any, which means no stepping is implied, and any value is allowed (barring other constraints, such as min and max). For example, if you have <input type=\"number\" min=\"10\" step=\"2\">, then any even integer, 10 or greater, is valid. If omitted, <input type=\"number\">, any integer is valid, but floats (like 4.2) are not valid, because step defaults to 1. For 4.2 to be valid, step would have had to be set to any, 0.1, 0.2, or the min value would have had to be a number ending in .2, such as <input type=\"number\" min=\"-5.2\">. Note: When the data entered by the user doesn't adhere to the stepping configuration, the value is considered invalid in constraint validation and will match the :invalid pseudoclass. See Client-side validation for more information.",
					"type": [
						"Number",
						{
							"enum": ["any"],
							"caseInsensitive": true
						}
					],
					"condition": [
						"[type='date' i]",
						"[type='month' i]",
						"[type='week' i]",
						"[type='time' i]",
						"[type='datetime-local' i]",
						"[type='number' i]",
						"[type='range' i]"
					]
				},
				"switch": {
					"description": "Valid for checkbox input only, switch is a Boolean attribute that indicates whether the checkbox input should be rendered as a switch. Note: This attribute is still experimental and has limited browser support. The attribute is ignored on unsupported browsers.",
					"experimental": true,
					"type": "Boolean",
					"condition": ["[type='checkbox' i]"]
				},
				"tabindex": {
					"description": "Global attribute valid for all elements, including all the input types, an integer attribute indicating if the element can take input focus (is focusable), if it should participate to sequential keyboard navigation. As all input types except for input of type hidden are focusable, this attribute should not be used on form controls, because doing so would require the management of the focus order for all elements within the document with the risk of harming usability and accessibility if done incorrectly."
				},
				"title": {
					"description": "Global attribute valid for all elements, including all input types, containing a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip. The title should NOT be used as the primary explanation of the purpose of the form control. Instead, use the <label> element with a for attribute set to the form control's id attribute. See Labels below."
				},
				"type": {
					"description": "A string specifying the type of control to render. For example, to create a checkbox, a value of checkbox is used. If omitted (or an unknown value is specified), the input type text is used, creating a plaintext input field. Permitted values are listed in Input types above.",
					"type": {
						"enum": [
							"hidden",
							"text",
							"search",
							"tel",
							"url",
							"email",
							"password",
							"date",
							"month",
							"week",
							"time",
							"datetime-local",
							"number",
							"range",
							"color",
							"checkbox",
							"radio",
							"file",
							"submit",
							"image",
							"reset",
							"button"
						],
						"invalidValueDefault": "text",
						"missingValueDefault": "text"
					},
					"defaultValue": "text"
				},
				"value": {
					"description": "The input control's value. When specified in the HTML, this is the initial value, and from then on it can be altered or retrieved at any time using JavaScript to access the respective HTMLInputElement object's value property. The value attribute is always optional, though should be considered mandatory for checkbox, radio, and hidden.",
					"type": "Any"
				},
				"webkitdirectory": {
					"description": "The Boolean webkitdirectory attribute, if present, indicates that only directories should be available to be selected by the user in the file picker interface. See HTMLInputElement.webkitdirectory for additional details and examples. Though originally implemented only for WebKit-based browsers, webkitdirectory is also usable in Microsoft Edge as well as Firefox 50 and later. However, even though it has relatively broad support, it is still not standard and should not be used unless you have no alternative.",
					"nonStandard": true
				},
				"width": {
					"description": "Valid for the image input button only, the width is the width of the image file to display to represent the graphical submit button. See the image input type.",
					"condition": "[type='image' i]"
				}
			}
		},
		{
			"name": "ins",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ins",
			"description": "The <ins> HTML element represents a range of text that has been added to a document. You can use the <del> element to similarly represent a range of text that has been deleted from the document.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"transparent": "*"
					}
				]
			},
			"aria": {
				"implicitRole": "insertion",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"cite": {
					"description": "This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system.",
					"type": "URL"
				},
				"datetime": {
					"description": "This attribute indicates the time and date of the change and must be a valid date with an optional time string. If the value cannot be parsed as a date with an optional time string, the element does not have an associated timestamp. For the format of the string without a time, see Format of a valid date string. The format of the string if it includes both date and time is covered in Format of a valid local date and time string.",
					"type": "DateTime"
				}
			}
		},
		{
			"name": "isindex",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "kbd",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/kbd",
			"description": "The <kbd> HTML element represents a span of inline text denoting textual user input from a keyboard, voice input, or any other text entry device. By convention, the user agent defaults to rendering the contents of a <kbd> element using its default monospace font, although this is not mandated by the HTML standard.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "keygen",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "label",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/label",
			"description": "The <label> HTML element represents a caption for an item in a user interface.",
			"categories": ["#flow", "#phrasing", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing):not(label, :has(label))"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"for": {
					"description": "The value is the id of the labelable form control in the same document, associating the <label> with that form control. Note that its JavaScript reflection property is htmlFor.",
					"type": "DOMID"
				}
			}
		},
		{
			"name": "legend",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/legend",
			"description": "The <legend> HTML element represents a caption for the content of its parent <fieldset>. In customizable <select> elements, the <legend> element is allowed as a child of <optgroup>, to provide a label that is easy to target and style. This replaces any text set in the <optgroup> element's label attribute, and it has the same semantics.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(phrasing)", ":model(heading)"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "li",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/li",
			"description": "The <li> HTML element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<ol>), an unordered list (<ul>), or a menu (<menu>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "listitem",
				"permittedRoles": [
					"menuitem",
					"menuitemcheckbox",
					"menuitemradio",
					"option",
					"none",
					"presentation",
					"radio",
					"separator",
					"tab",
					"treeitem"
				]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"type": {
					"description": "This character attribute indicates the numbering type: a: lowercase letters A: uppercase letters i: lowercase Roman numerals I: uppercase Roman numerals 1: numbers This type overrides the one used by its parent <ol> element, if any. Note: This attribute has been deprecated; use the CSS list-style-type property instead.",
					"deprecated": true
				},
				"value": {
					"description": "This integer attribute indicates the current ordinal value of the list item as defined by the <ol> element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. This attribute has no meaning for unordered lists (<ul>) or for menus (<menu>).",
					"type": "Int",
					"condition": "ol > li"
				}
			}
		},
		{
			"name": "link",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/link",
			"description": "The <link> HTML element specifies relationships between the current document and an external resource. This element is most commonly used to link to stylesheets, but is also used to establish site icons (both \"favicon\" style icons and icons for the home screen and apps on mobile devices) among other things.",
			"categories": ["#metadata", "#flow", "#phrasing"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": [
					"crossorigin",
					"href",
					"hreflang",
					"type",
					"referrerpolicy",
					"integrity",
					"media",
					"fetchpriority"
				]
			},
			"attributes": {
				"as": {
					"description": "This attribute is required when rel=\"preload\" has been set on the <link> element, optional when rel=\"modulepreload\" has been set, and otherwise should not be used. It specifies the type of content being loaded by the <link>, which is necessary for request matching, application of correct content security policy, and setting of correct Accept request header. Furthermore, rel=\"preload\" uses this as a signal for request prioritization. The table below lists the valid values for this attribute and the elements or resources they apply to. Value Applies To audio <audio> elements document <iframe> and <frame> elements embed <embed> elements fetch fetch, XHR Note: This value also requires <link> to contain the crossorigin attribute, see CORS-enabled fetches. font CSS @font-face Note: This value also requires <link> to contain the crossorigin attribute, see CORS-enabled fetches. image <img> and <picture> elements with srcset or imageset attributes, SVG <image> elements, CSS *-image rules object <object> elements script <script> elements, Worker importScripts style <link rel=stylesheet> elements, CSS @import track <track> elements video <video> elements worker Worker, SharedWorker",
					"type": {
						"enum": [
							"fetch",
							"audio",
							"audioworklet",
							"document",
							"embed",
							"font",
							"frame",
							"iframe",
							"image",
							"manifest",
							"object",
							"paintworklet",
							"report",
							"script",
							"serviceworker",
							"sharedworker",
							"style",
							"track",
							"video",
							"worker",
							"xslt"
						]
					},
					"condition": ["[rel='preload' i]", "[rel='modulepreload' i]"]
				},
				"blocking": {
					"description": "This attribute explicitly indicates that certain operations should be blocked until specific conditions are met. It must only be used when the rel attribute contains the expect or stylesheet keywords. With rel=\"expect\", it indicates that operations should be blocked until a specific DOM node has been parsed. With rel=\"stylesheet\", it indicates that operations should be blocked until an external stylesheet and its critical subresources have been fetched and applied to the document. The operations that are to be blocked must be a space-separated list of blocking tokens listed below. Currently there is only one token: render: The rendering of content on the screen is blocked. Note: Only link elements in the document's <head> can possibly block rendering. By default, a link element with rel=\"stylesheet\" in the <head> blocks rendering when the browser discovers it during parsing. If such a link element is added dynamically via script, you must additionally set blocking = \"render\" for it to block rendering.",
					"type": {
						"token": {
							"enum": ["render"]
						},
						"separator": "space",
						"unique": true
					},
					"condition": "[rel~='stylesheet' i]"
				},
				"charset": {
					"description": "This attribute defines the character encoding of the linked resource. The value is a space- and/or comma-delimited list of character sets as defined in RFC 2045. The default value is iso-8859-1. Note: To produce the same effect as this obsolete attribute, use the Content-Type HTTP header on the linked resource.",
					"obsolete": true,
					"deprecated": true
				},
				"color": {
					"type": "<color>",
					"condition": "[rel~='mask-icon' i]"
				},
				"crossorigin": {
					"description": "This enumerated attribute indicates whether CORS must be used when fetching the resource. CORS-enabled images can be reused in the <canvas> element without being tainted. The allowed values are: anonymous A cross-origin request (i.e., with an Origin HTTP header) is performed, but no credential is sent (i.e., no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin HTTP header) the resource will be tainted and its usage restricted. use-credentials A cross-origin request (i.e., with an Origin HTTP header) is performed along with a credential sent (i.e., a cookie, certificate, and/or HTTP Basic authentication is performed). If the server does not give credentials to the origin site (through Access-Control-Allow-Credentials HTTP header), the resource will be tainted and its usage restricted. If the attribute is not present, the resource is fetched without a CORS request (i.e., without sending the Origin HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword anonymous was used. See CORS settings attributes for additional information."
				},
				"disabled": {
					"description": "For rel=\"stylesheet\" only, the disabled Boolean attribute indicates whether the described stylesheet should be loaded and applied to the document. If disabled is specified in the HTML when it is loaded, the stylesheet will not be loaded during page load. Instead, the stylesheet will be loaded on-demand, if and when the disabled attribute is changed to false or removed. Setting the disabled property in the DOM causes the stylesheet to be removed from the document's Document.styleSheets list.",
					"type": "Boolean"
				},
				"fetchpriority": {
					"description": "Provides a hint of the relative priority to use when fetching a resource of a particular type. Allowed values: high Fetch the resource at a high priority relative to other resources of the same type. low Fetch the resource at a low priority relative to other resources of the same type. auto Don't set a preference for the fetch priority. This is the default. It is used if no value or an invalid value is set."
				},
				"href": {
					"description": "This attribute specifies the URL of the linked resource. A URL can be absolute or relative."
				},
				"hreflang": {
					"description": "This attribute indicates the language of the linked resource. It is purely advisory. Values should be valid BCP 47 language tags. Use this attribute only if the href attribute is present."
				},
				"imagesizes": {
					"description": "For rel=\"preload\" and as=\"image\" only, the imagesizes attribute has similar syntax and semantics as the sizes attribute that indicates to preload the appropriate resource used by an img element with corresponding values for its srcset and sizes attributes.",
					"type": "SourceSizeList",
					"condition": "[imagesrcset][rel~='preload' i][as='image' i]",
					"required": "[imagesrcset]"
				},
				"imagesrcset": {
					"description": "For rel=\"preload\" and as=\"image\" only, the imagesrcset attribute has similar syntax and semantics as the srcset attribute that indicates to preload the appropriate resource used by an img element with corresponding values for its srcset and sizes attributes.",
					"type": "Srcset",
					"condition": "[imagesizes][rel~='preload' i][as='image' i]",
					"required": "[imagesizes]"
				},
				"integrity": {
					"description": "Contains inline metadata — a base64-encoded cryptographic hash of the resource (file) you're telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered without unexpected manipulation. The attribute must only be specified when the rel attribute is specified to stylesheet, preload, or modulepreload. See Subresource Integrity.",
					"condition": ["[rel~='stylesheet' i]", "[rel~='preload' i]", "[rel~='modulepreload' i]"]
				},
				"itemprop": {
					"requiredEither": ["rel"]
				},
				"media": {
					"description": "This attribute specifies the media that the linked resource applies to. Its value must be a media type / media query. This attribute is mainly useful when linking to external stylesheets — it allows the user agent to pick the best adapted one for the device it runs on."
				},
				"referrerpolicy": {
					"description": "A string indicating which referrer to use when fetching the resource. For detailed explanations and examples of each policy, see the Referrer-Policy header documentation. no-referrer means that the Referer header will not be sent. no-referrer-when-downgrade means that no Referer header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent's default behavior, if no policy is otherwise specified. origin means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port. origin-when-cross-origin means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer's path. same-origin means that the referrer (origin, path, and query string) is sent for same-origin requests, but no referrer is sent for cross-origin requests. strict-origin means that only the origin is sent when the protocol security level stays the same (HTTPS→HTTPS). No referrer is sent to less secure destinations (HTTPS→HTTP). This is important for HTTPS pages because it prevents leaking referrer information to insecure origins. strict-origin-when-cross-origin means that the full referrer is sent for same-origin requests. For cross-origin requests, only the origin is sent when the protocol stays the same (HTTPS→HTTPS), and no referrer is sent when downgrading to HTTP. This is the default value, which balances functionality with privacy and security for HTTPS sites. unsafe-url means that the referrer will include the origin and the path (but not the fragment, password, or username). This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins."
				},
				"rel": {
					"description": "This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of link type values.",
					"type": "LinkTypeForLinkElement",
					"requiredEither": ["itemprop"]
				},
				"rev": {
					"description": "The value of this attribute shows the relationship of the current document to the linked document, as defined by the href attribute. The attribute thus defines the reverse relationship compared to the value of the rel attribute. Link type values for the attribute are similar to the possible values for rel. Note: Instead of rev, you should use the rel attribute with the opposite link type value. For example, to establish the reverse link for made, specify author. Also, this attribute doesn't stand for \"revision\" and must not be used with a version number, even though many sites misuse it in this way.",
					"obsolete": true,
					"deprecated": true
				},
				"sizes": {
					"description": "This attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the rel contains a value of icon or a non-standard type such as Apple's apple-touch-icon. It may have the following values: any, meaning that the icon can be scaled to any size as it is in a vector format, like image/svg+xml. a white-space separated list of sizes, each in the format <width in pixels>x<height in pixels> or <width in pixels>X<height in pixels>. Each of these sizes must be contained in the resource. Note: Most icon formats are only able to store one single icon; therefore, most of the time, the sizes attribute contains only one entry. Microsoft's ICO format and Apple's ICNS format can store multiple icon sizes in a single file. ICO has better browser support, so you should use this format if cross-browser support is a concern.",
					"type": {
						"token": "IconSize",
						"caseInsensitive": true,
						"ordered": false,
						"unique": true,
						"separator": "space"
					},
					"condition": ["[rel~='icon' i]", "[rel~='apple-touch-icon' i]"]
				},
				"target": {
					"description": "Defines the frame or window name that has the defined linking relationship or that will show the rendering of any linked resource.",
					"deprecated": true
				},
				"title": {
					"description": "The title attribute has special semantics on the <link> element. When used on a <link rel=\"stylesheet\"> it defines a default or an alternate stylesheet."
				},
				"type": {
					"description": "This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as text/html, text/css, and so on. The common use of this attribute is to define the type of stylesheet being referenced (such as text/css), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the type attribute, but is actually now recommended practice. It is also used on rel=\"preload\" link types, to make sure the browser only downloads file types that it supports."
				}
			}
		},
		{
			"name": "listing",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "main",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/main",
			"description": "The <main> HTML element represents the dominant content of the <body> of a document. The main content area consists of content that is directly related to or expands upon the central topic of a document, or the central functionality of an application.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "main",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "main"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "map",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/map",
			"description": "The <map> HTML element is used with <area> elements to define an image map (a clickable link area).",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"transparent": "*"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"name": {
					"description": "The name attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the name attribute must not be equal to the value of the name attribute of another <map> element in the same document. If the id attribute is also specified, both attributes must have the same value.",
					"type": "NoEmptyAny"
				}
			}
		},
		{
			"name": "mark",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/mark",
			"description": "The <mark> HTML element represents text which is marked or highlighted for reference or notation purposes due to the marked passage's relevance in the enclosing context.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "marquee",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <marquee> HTML element is used to insert a scrolling area of text. You can control what happens when the text reaches the edges of its content area using its attributes. The HTML <marquee> element is deprecated and its use is strongly discouraged. If you must create the effect of scrolling text or continuous elements, consider using CSS animations with CSS transforms instead of <marquee> elements to smoothly animate content. Additionally, include the prefers-reduced-motion CSS @media query to stop the animation based on user preference, thereby improving user experience and accessibility.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {
				"behavior": {
					"description": "Sets how the text is scrolled within the marquee. Possible values are scroll, slide and alternate. If no value is specified, the default value is scroll.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Sets the background color through color name or hexadecimal value.",
					"deprecated": true
				},
				"direction": {
					"description": "Sets the direction of the scrolling within the marquee. Possible values are left, right, up and down. If no value is specified, the default value is left.",
					"deprecated": true
				},
				"height": {
					"description": "Sets the height in pixels or percentage value.",
					"deprecated": true
				},
				"hspace": {
					"description": "Sets the horizontal margin",
					"deprecated": true
				},
				"loop": {
					"description": "Sets the number of times the marquee will scroll. If no value is specified, the default value is −1, which means the marquee will scroll continuously.",
					"deprecated": true
				},
				"scrollamount": {
					"description": "Sets the amount of scrolling at each interval in pixels. The default value is 6.",
					"deprecated": true
				},
				"scrolldelay": {
					"description": "Sets the interval between each scroll movement in milliseconds. The default value is 85. Note that any value smaller than 60 is ignored and the value 60 is used instead unless truespeed is specified.",
					"deprecated": true
				},
				"truespeed": {
					"description": "By default, scrolldelay values lower than 60 are ignored. If truespeed is present, those values are not ignored.",
					"deprecated": true
				},
				"vspace": {
					"description": "Sets the vertical margin in pixels or percentage value.",
					"deprecated": true
				},
				"width": {
					"description": "Sets the width in pixels or percentage value.",
					"deprecated": true
				}
			}
		},
		{
			"name": "math",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/math",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"implicitRole": "math",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "math"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "menu",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/menu",
			"description": "The <menu> HTML element is described in the HTML specification as a semantic alternative to <ul>, but treated by browsers (and exposed through the accessibility tree) as no different than <ul>. It represents an unordered list of items (which are represented by <li> elements).",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ["li", ":model(script-supporting)"]
					}
				]
			},
			"aria": {
				"implicitRole": "list",
				"permittedRoles": [
					"group",
					"listbox",
					"menu",
					"menubar",
					"none",
					"presentation",
					"radiogroup",
					"tablist",
					"toolbar",
					"tree",
					{
						"name": "directory",
						"deprecated": true
					}
				],
				"1.1": {
					"permittedRoles": [
						"directory",
						"group",
						"listbox",
						"menu",
						"menubar",
						"none",
						"presentation",
						"radiogroup",
						"tablist",
						"toolbar",
						"tree"
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"compact": {
					"description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute is browser-specific. Use CSS instead: to give a similar effect as the compact attribute, the CSS property line-height can be used with a value of 80%.",
					"deprecated": true
				}
			}
		},
		{
			"name": "menuitem",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "meta",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta",
			"description": "The <meta> HTML element represents metadata that cannot be represented by other meta-related elements, such as <base>, <link>, <script>, <style>, or <title>. The type of metadata provided by the <meta> element can be one of the following: If the name attribute is set, the <meta> element provides document-level metadata that applies to the whole page. If the http-equiv attribute is set, the <meta> element acts as a pragma directive to simulate directives that could otherwise be given by an HTTP header. If the charset attribute is set, the <meta> element is a charset declaration, giving the character encoding in which the document is encoded. If the itemprop attribute is set, the <meta> element provides user-defined metadata.",
			"categories": ["#metadata", "#flow", "#phrasing"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["media"]
			},
			"attributes": {
				"charset": {
					"description": "This attribute declares the document's character encoding. If the attribute is present, its value must be an ASCII case-insensitive match for the string \"utf-8\", because UTF-8 is the only valid encoding for HTML5 documents. <meta> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.",
					"type": {
						"enum": ["utf-8"],
						"caseInsensitive": true
					},
					"condition": [":not([itemprop])", ":not([name])", ":not([http-equiv])"]
				},
				"content": {
					"description": "This attribute contains the value for the http-equiv or name attribute, depending on which is used.",
					"type": "Any",
					"required": ["[name]", "[http-equiv]", "[itemprop]"],
					"condition": ["[name]", "[http-equiv]", "[itemprop]"]
				},
				"http-equiv": {
					"description": "Defines a pragma directive, which are instructions for the browser for processing the document. The attribute's name is short for http-equivalent because the allowed values are names of equivalent HTTP headers.",
					"type": {
						"enum": [
							"content-type",
							"default-style",
							"refresh",
							"x-ua-compatible",
							"content-security-policy"
						]
					},
					"requiredEither": ["itemprop", "name", "charset"],
					"condition": [":not([itemprop])", ":not([name])", ":not([charset])"]
				},
				"itemprop": {
					"requiredEither": ["name", "http-equiv", "charset"],
					"condition": [":not([name])", ":not([http-equiv])", ":not([charset])"]
				},
				"media": {
					"description": "The media attribute defines which media the theme color defined in the content attribute should be applied to. Its value is a media query, which defaults to all if the attribute is missing. This attribute is only relevant when the element's name attribute is set to theme-color. Otherwise, it has no effect, and should not be included.",
					"condition": "[name='theme-color']"
				},
				"name": {
					"description": "The name and content attributes can be used together to provide document metadata in terms of name-value pairs, with the name attribute giving the metadata name, and the content attribute giving the value.",
					"type": "Any",
					"requiredEither": ["itemprop", "http-equiv", "charset"],
					"condition": [":not([itemprop])", ":not([http-equiv])", ":not([charset])"]
				}
			}
		},
		{
			"name": "meter",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meter",
			"description": "The <meter> HTML element represents either a scalar value within a known range or a fractional value.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing):not(meter, :has(meter))"
					}
				]
			},
			"aria": {
				"implicitRole": "meter",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"without": [
						{
							"type": "should-not",
							"name": "aria-valuemax"
						},
						{
							"type": "should-not",
							"name": "aria-valuemin"
						}
					]
				},
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"high": {
					"description": "The lower numeric bound of the high end of the measured range. This must be less than the maximum value (max attribute), and it also must be greater than the low value and minimum value (low attribute and min attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the high value is equal to the maximum value.",
					"type": "Number"
				},
				"low": {
					"description": "The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (min attribute), and it also must be less than the high value and maximum value (high attribute and max attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the low value is equal to the minimum value.",
					"type": "Number"
				},
				"max": {
					"description": "The upper numeric bound of the measured range. This must be greater than the minimum value (min attribute), if specified. If unspecified, the maximum value is 1.",
					"type": "Number"
				},
				"min": {
					"description": "The lower numeric bound of the measured range. This must be less than the maximum value (max attribute), if specified. If unspecified, the minimum value is 0.",
					"type": "Number"
				},
				"optimum": {
					"description": "This attribute indicates the optimal numeric value. It must be within the range (as defined by the min attribute and max attribute). When used with the low attribute and high attribute, it gives an indication where along the range is considered preferable. For example, if it is between the min attribute and the low attribute, then the lower range is considered preferred. The browser may color the meter's bar differently depending on whether the value is less than or equal to the optimum value.",
					"type": "Number"
				},
				"value": {
					"description": "The current numeric value. This must be between the minimum and maximum values (min attribute and max attribute) if they are specified. If unspecified or malformed, the value is 0. If specified, but not within the range given by the min attribute and max attribute, the value is equal to the nearest end of the range. Note: Unless the value attribute is between 0 and 1 (inclusive), the min and max attributes should define the range so that the value attribute's value is within it.",
					"type": "Number"
				}
			}
		},
		{
			"name": "multicol",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "nav",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/nav",
			"description": "The <nav> HTML element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents. Common examples of navigation sections are menus, tables of contents, and indexes.",
			"categories": ["#flow", "#sectioning", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "navigation",
				"permittedRoles": ["menu", "menubar", "none", "presentation", "tablist"],
				"1.1": {
					"permittedRoles": ["menu", "menubar", "tablist"]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "nextid",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "nobr",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <nobr> HTML element prevents the text it contains from automatically wrapping across multiple lines, potentially resulting in the user having to scroll horizontally to see the entire width of the text. Warning: Although this element is widely supported, it was never standard HTML, so you shouldn't use it. Instead, use the CSS property white-space like this: html<span class=\"nobr\">Long line with no breaks</span> css.nobr { white-space: nowrap; }",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "noembed",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <noembed> HTML element is an obsolete, non-standard way to provide alternative, or \"fallback\", content for browsers that do not support the <embed> element or do not support the type of embedded content an author wishes to use. This element was deprecated in HTML 4.01 and above in favor of placing fallback content between the opening and closing tags of an <object> element. Note: While this element currently still works in many browsers, it is obsolete and should not be used. Use <object> instead, with fallback content between the opening and closing tags of the element.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "noframes",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <noframes> HTML element provides content to be presented in browsers that don't support (or have disabled support for) the <frame> element. Although most commonly-used browsers support frames, there are exceptions, including certain special-use browsers including some mobile browsers, as well as text-mode browsers. A <noframes> element can contain any HTML elements that are allowed within the body of an HTML document, except for the <frameset> and <frame> elements, since using frames when they aren't supported doesn't make sense. <noframes> can be used to present a message explaining that the user's browser doesn't support frames, but ideally should be used to present an alternate form of the site that doesn't use frames but still offers the same or similar functionality. Note: This element is obsolete and shouldn't be used, since the <frame> and <frameset> elements are also obsolete. When frames are needed at all, they should be presented using the <iframe> element.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "noscript",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/noscript",
			"description": "The <noscript> HTML element defines a section of HTML to be inserted if a script type on the page is unsupported or if scripting is currently turned off in the browser.",
			"categories": ["#metadata", "#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"transparent": ":not(noscript)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "object",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/object",
			"description": "The <object> HTML element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.",
			"categories": ["#flow", "#phrasing", "#embedded", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["application", "document", "img"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["height", "width"],
				"#HTMLFormControlElementAttrs": ["form"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"archive": {
					"description": "A space-separated list of URIs for archives of resources for the object.",
					"deprecated": true
				},
				"border": {
					"description": "The width of a border around the control, in pixels.",
					"deprecated": true
				},
				"classid": {
					"description": "The URI of the object's implementation. It can be used together with, or in place of, the data attribute.",
					"deprecated": true
				},
				"codebase": {
					"description": "The base path used to resolve relative URIs specified by classid, data, or archive. If not specified, the default is the base URI of the current document.",
					"deprecated": true
				},
				"codetype": {
					"description": "The content type of the data specified by classid.",
					"deprecated": true
				},
				"data": {
					"description": "The address of the resource as a valid URL. At least one of data and type must be defined.",
					"type": "URL",
					"requiredEither": ["type"]
				},
				"declare": {
					"description": "The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent <object> element. Repeat the <object> element completely each time the resource is reused.",
					"deprecated": true
				},
				"form": {
					"description": "The form element, if any, that the object element is associated with (its form owner). The value of the attribute must be an ID of a <form> element in the same document."
				},
				"height": {
					"description": "The height of the displayed resource, as in <integer> in CSS pixels."
				},
				"name": {
					"description": "The name of valid browsing context (HTML5), or the name of the control (HTML 4). The name becomes a property of the Window and Document objects, containing a reference to the embedded window or the element itself.",
					"type": "NavigableTargetName"
				},
				"standby": {
					"description": "A message that the browser can show while loading the object's implementation and data.",
					"deprecated": true
				},
				"type": {
					"description": "The content type of the resource specified by data. At least one of data and type must be defined.",
					"type": "MIMEType",
					"requiredEither": ["data"]
				},
				"usemap": {
					"description": "A hash-name reference to a <map> element; that is a '#' followed by the value of a name of a map element.",
					"deprecated": true
				},
				"width": {
					"description": "The width of the display resource, as in <integer> in CSS pixels."
				}
			}
		},
		{
			"name": "ol",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ol",
			"description": "The <ol> HTML element represents an ordered list of items — typically rendered as a numbered list.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ["li", ":model(script-supporting)"]
					}
				]
			},
			"aria": {
				"implicitRole": "list",
				"permittedRoles": [
					"group",
					"listbox",
					"menu",
					"menubar",
					"none",
					"presentation",
					"radiogroup",
					"tablist",
					"toolbar",
					"tree",
					{
						"name": "directory",
						"deprecated": true
					}
				],
				"1.1": {
					"permittedRoles": [
						"directory",
						"group",
						"listbox",
						"menu",
						"menubar",
						"none",
						"presentation",
						"radiogroup",
						"tablist",
						"toolbar",
						"tree"
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"compact": {
					"description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute is browser-specific. Use CSS instead: to give a similar effect as the compact attribute, the CSS property line-height can be used with a value of 80%.",
					"deprecated": true,
					"nonStandard": true
				},
				"reversed": {
					"description": "This Boolean attribute specifies that the list's items are in reverse order. Items will be numbered from high to low.",
					"type": "Boolean"
				},
				"start": {
					"description": "An integer to start counting from for the list items. Always an Arabic numeral (1, 2, 3, etc.), even when the numbering type is letters or Roman numerals. For example, to start numbering elements from the letter \"d\" or the Roman numeral \"iv,\" use start=\"4\".",
					"type": "Int"
				},
				"type": {
					"description": "Sets the numbering type: a for lowercase letters A for uppercase letters i for lowercase Roman numerals I for uppercase Roman numerals 1 for numbers (default) The specified type is used for the entire list unless a different type attribute is used on an enclosed <li> element. Note: Unless the type of the list number matters (like legal or technical documents where items are referenced by their number/letter), use the CSS list-style-type property instead.",
					"type": {
						"enum": ["1", "a", "A", "i", "I"],
						"caseInsensitive": false,
						"invalidValueDefault": "decimal",
						"missingValueDefault": "decimal"
					}
				}
			}
		},
		{
			"name": "optgroup",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/optgroup",
			"description": "The <optgroup> HTML element creates a grouping of options within a <select> element. In customizable <select> elements, the <legend> element is allowed as a child of <optgroup>, to provide a label that is easy to target and style. This replaces any text set in the <optgroup> element's label attribute, and it has the same semantics.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "option"
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "group"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": ["disabled"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"disabled": {
					"description": "If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers grey out such control and it won't receive any browsing events, like mouse clicks or focus-related ones."
				},
				"label": {
					"description": "The name of the group of options, which the browser can use when labeling the options in the user interface. This attribute is mandatory if this element is used.",
					"type": "Any",
					"required": true
				}
			}
		},
		{
			"name": "option",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/option",
			"description": "The <option> HTML element is used to define an item contained in a <select>, an <optgroup>, or a <datalist> element. As such, <option> can represent menu items in popups and other lists of items in an HTML document.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"optional": "#text"
					}
				],
				"conditional": [
					{
						"condition": "[label][value]",
						"contents": false
					},
					{
						"condition": "label",
						"contents": [
							{
								"optional": "#text"
							}
						]
					},
					{
						"condition": "datalist > [label]",
						"contents": [
							{
								"optional": "#text"
							}
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false,
				"conditions": {
					":is(select, select > option, datalist) > option": {
						"implicitRole": "option",
						"properties": {
							"global": true,
							"role": "option",
							"without": [
								{
									"type": "should-not",
									"name": "aria-selected"
								}
							]
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": ["disabled"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"disabled": {
					"description": "If this Boolean attribute is set, this option is not checkable. Often browsers grey out such control and it won't receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled <optgroup> element."
				},
				"label": {
					"description": "This attribute is text for the label indicating the meaning of the option. If the label attribute isn't defined, its value is that of the element text content.",
					"type": "Any"
				},
				"selected": {
					"description": "If present, this Boolean attribute indicates that the option is initially selected. If the <option> element is the descendant of a <select> element whose multiple attribute is not set, only one single <option> of this <select> element may have the selected attribute.",
					"type": "Boolean"
				},
				"value": {
					"description": "The content of this attribute represents the value to be submitted with the form, should this option be selected. If this attribute is omitted, the value is taken from the text content of the option element.",
					"type": "Any"
				}
			}
		},
		{
			"name": "output",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/output",
			"description": "The <output> HTML element is a container element into which a site or app can inject the results of a calculation or the outcome of a user action.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "status",
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": ["form", "name"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"for": {
					"description": "A space-separated list of other elements' ids, indicating that those elements contributed input values to (or otherwise affected) the calculation.",
					"type": {
						"token": "DOMID",
						"separator": "space",
						"unique": true,
						"caseInsensitive": true
					}
				},
				"form": {
					"description": "The <form> element to associate the output with (its form owner). The value of this attribute must be the id of a <form> in the same document. (If this attribute is not set, the <output> is associated with its ancestor <form> element, if any.) This attribute lets you associate <output> elements to <form>s anywhere in the document, not just inside a <form>. It can also override an ancestor <form> element. The <output> element's name and content are not submitted when the form is submitted."
				},
				"name": {
					"description": "The element's name. Used in the form.elements API."
				}
			}
		},
		{
			"name": "p",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/p",
			"description": "The <p> HTML element represents a paragraph. Paragraphs are usually represented in visual media as blocks of text separated from adjacent blocks by blank lines and/or first-line indentation, but HTML paragraphs can be any structural grouping of related content, such as images or form fields. Paragraphs are block-level elements, and notably will automatically close if another block-level element is parsed before the closing </p> tag. See \"Tag omission\" below.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "paragraph",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "param",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <param> HTML element defines parameters for an <object> element. Note: Use the <object> element with a data attribute to set the URL of an external resource.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {
				"name": {
					"description": "Name of the parameter.",
					"deprecated": true
				},
				"type": {
					"description": "Only used if the valuetype is set to ref. Specifies the MIME type of values found at the URI specified by value.",
					"deprecated": true
				},
				"value": {
					"description": "Specifies the value of the parameter.",
					"deprecated": true
				},
				"valuetype": {
					"description": "Specifies the type of the value attribute. Possible values are: data: Default value. The value is passed to the object's implementation as a string. ref: The value is a URI to a resource where run-time values are stored. object: An ID of another <object> in the same document.",
					"deprecated": true
				}
			}
		},
		{
			"name": "picture",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/picture",
			"description": "The <picture> HTML element contains zero or more <source> elements and one <img> element to offer alternative versions of an image for different display/device scenarios. The browser will consider each child <source> element and choose the best match among them. If no matches are found—or the browser doesn't support the <picture> element—the URL of the <img> element's src attribute is selected. The selected image is then presented in the space occupied by the <img> element.",
			"categories": ["#flow", "#phrasing", "#embedded"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"zeroOrMore": "source"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"require": "img"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": {
					"only": [
						{
							"name": "aria-hidden",
							"value": "true"
						}
					]
				},
				"1.1": {
					"properties": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "plaintext",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <plaintext> HTML element renders everything following the start tag as raw text, ignoring any following HTML. There is no closing tag, since everything after it is considered raw text. Warning: Do not use this element. <plaintext> is deprecated since HTML 2, and not all browsers implemented it. Browsers that did implement it didn't do so consistently. <plaintext> is obsolete; browsers that accept it may instead treat it as a <pre> element that still interprets HTML within. If <plaintext> is the first element on the page (other than any non-displayed elements, like <head>), do not use HTML at all. Instead serve a text file with the text/plain MIME-type. Instead of <plaintext>, use the <pre> element or, if semantically accurate (such as for inline text), the <code> element. Escape any <, > and & characters, to prevent browsers inadvertently parsing the element content as HTML. A monospaced font can be applied to any HTML element via a CSS font-family style with the monospace generic value.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "pre",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/pre",
			"description": "The <pre> HTML element represents preformatted text which is to be presented exactly as written in the HTML file. The text is typically rendered using a non-proportional, or monospaced font. Whitespace inside this element is displayed as written, with one exception. If one or more leading newline characters are included immediately following the opening <pre> tag, the first newline character is stripped. This transformation is done by the HTML parser and does not apply when using XHTML. <pre> elements' text content is parsed as HTML, so if you want to ensure that your text content stays as plain text, some syntax characters, such as <, may need to be escaped using their respective character references. See escaping ambiguous characters for more information. <pre> elements commonly contain <code>, <samp>, and <kbd> elements, to represent computer code, computer output, and user input, respectively. By default, <pre> is a block-level element, i.e., its default display value is block.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"width": {
					"description": "Contains the preferred count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS width instead.",
					"deprecated": true,
					"nonStandard": true
				},
				"wrap": {
					"description": "Is a hint indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS white-space instead.",
					"deprecated": true,
					"nonStandard": true
				}
			}
		},
		{
			"name": "progress",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/progress",
			"description": "The <progress> HTML element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing):not(progress, :has(progress))"
					}
				]
			},
			"aria": {
				"implicitRole": "progressbar",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "progressbar",
					"without": [
						{
							"type": "should-not",
							"name": "aria-valuemax"
						}
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"max": {
					"description": "This attribute describes how much work the task indicated by the progress element requires. The max attribute, if present, must have a value greater than 0 and be a valid floating point number. The default value is 1.",
					"type": "Number"
				},
				"value": {
					"description": "This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and max, or between 0 and 1 if max is omitted. If there is no value attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.",
					"type": "Number"
				}
			}
		},
		{
			"name": "q",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/q",
			"description": "The <q> HTML element indicates that the enclosed text is a short inline quotation. Most modern browsers implement this by surrounding the text in quotation marks. This element is intended for short quotations that don't require paragraph breaks; for long quotations use the <blockquote> element.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"cite": {
					"description": "The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.",
					"type": "URL"
				}
			}
		},
		{
			"name": "rb",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <rb> HTML element is used to delimit the base text component of a <ruby> annotation, i.e., the text that is being annotated. One <rb> element should wrap each separate atomic segment of the base text.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "rp",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rp",
			"description": "The <rp> HTML element is used to provide fall-back parentheses for browsers that do not support display of ruby annotations using the <ruby> element. One <rp> element should enclose each of the opening and closing parentheses that wrap the <rt> element that contains the annotation's text.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": "#text"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "rt",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rt",
			"description": "The <rt> HTML element specifies the ruby text component of a ruby annotation, which is used to provide pronunciation, translation, or transliteration information for East Asian typography. The <rt> element must always be contained within a <ruby> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "rtc",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <rtc> HTML element embraces semantic annotations of characters presented in a ruby of <rb> elements used inside of <ruby> element. <rb> elements can have both pronunciation (<rt>) and semantic (<rtc>) annotations.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "ruby",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ruby",
			"description": "The <ruby> HTML element represents small annotations that are rendered above, below, or next to base text, usually used for showing the pronunciation of East Asian characters. It can also be used for annotating other kinds of text, but this usage is less common. The term ruby originated as a unit of measurement used by typesetters, representing the smallest size that text can be printed on newsprint while remaining legible.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": [
							{
								"oneOrMore": [":model(phrasing):not(ruby, :has(ruby))", "ruby:not(:has(ruby))"]
							},
							{
								"choice": [
									[
										{
											"oneOrMore": "rt"
										}
									],
									[
										{
											"require": "rp"
										},
										{
											"oneOrMore": [
												{
													"require": "rt"
												},
												{
													"require": "rp"
												}
											]
										}
									]
								]
							}
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "s",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/s",
			"description": "The <s> HTML element renders text with a strikethrough, or a line through it. Use the <s> element to represent things that are no longer relevant or no longer accurate. However, <s> is not appropriate when indicating document edits; for that, use the <del> and <ins> elements, as appropriate.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "deletion",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "samp",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/samp",
			"description": "The <samp> HTML element is used to enclose inline text which represents sample (or quoted) output from a computer program. Its contents are typically rendered using the browser's default monospaced font (such as Courier or Lucida Console).",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "script",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/script",
			"description": "The <script> HTML element is used to embed executable code or data; this is typically used to embed or refer to JavaScript code. The <script> element can also be used with other languages, such as WebGL's GLSL shader programming language and JSON.",
			"categories": ["#metadata", "#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "#text"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["crossorigin", "referrerpolicy", "integrity", "fetchpriority"]
			},
			"attributes": {
				"async": {
					"description": "For classic scripts, if the async attribute is present, then the classic script will be fetched in parallel to parsing and evaluated as soon as it is available. For module scripts, if the async attribute is present then the scripts and all their dependencies will be fetched in parallel to parsing and evaluated as soon as they are available. Warning: This attribute must not be used if the src attribute is absent (i.e., for inline scripts) for classic scripts, in this case it would have no effect. This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and evaluate scripts before continuing to parse. defer has a similar effect in this case. If the attribute is specified with the defer attribute, the element will act as if only the async attribute is specified. This is a boolean attribute: the presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value. See Browser compatibility for notes on browser support. See also Async scripts for asm.js.",
					"type": "Boolean",
					"condition": ["[src]", "[type='module' i]"],
					"ineffective": ":not([src]):not([type='module' i])"
				},
				"attributionsrc": {
					"description": "Specifies that you want the browser to send an Attribution-Reporting-Eligible header along with the script resource request. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header in the response, to register a JavaScript-based attribution source or attribution trigger, respectively. Which response header should be sent back depends on the value of the Attribution-Reporting-Eligible header that triggered the registration. Note: Alternatively, JavaScript-based attribution sources or triggers can be registered by sending a fetch() request containing the attributionReporting option (either set directly on the fetch() call or on a Request object passed into the fetch() call), or by sending an XMLHttpRequest with setAttributionReporting() invoked on the request object. There are two versions of this attribute that you can set: Boolean, i.e., just the attributionsrc name. This specifies that you want the Attribution-Reporting-Eligible header sent to the same server as the src attribute points to. This is fine when you are handling the attribution source or trigger registration on the same server. When registering an attribution trigger this property is optional, and an empty string value will be used if it is omitted. Value containing one or more URLs, for example: html<script src=\"myscript.js\" attributionsrc=\"https://a.example/register-source https://b.example/register-source\"></script> This is useful in cases where the requested resource is not on a server you control, or you just want to handle registering the attribution source on a different server. In this case, you can specify one or more URLs as the value of attributionsrc. When the resource request occurs the Attribution-Reporting-Eligible header will be sent to the URL(s) specified in attributionSrc in addition to the resource origin. These URLs can then respond with an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header as appropriate to complete registration. Note: Specifying multiple URLs means that multiple attribution sources can be registered on the same feature. You might for example have different campaigns that you are trying to measure the success of, which involve generating different reports on different data. See the Attribution Reporting API for more details.",
					"deprecated": true
				},
				"blocking": {
					"description": "This attribute explicitly indicates that certain operations should be blocked until the script has executed. The operations that are to be blocked must be a space-separated list of blocking tokens. Currently there is only one token: render: The rendering of content on the screen is blocked. Note: Only script elements in the document's <head> can possibly block rendering. Scripts are not render-blocking by default; if a script element does not include type=\"module\", async, or defer, then it blocks parsing, not rendering. If such a script element is added dynamically via script, you must set blocking = \"render\" for it to block rendering.",
					"type": {
						"token": {
							"enum": ["render"]
						},
						"separator": "space",
						"unique": true
					}
				},
				"charset": {
					"description": "If present, its value must be an ASCII case-insensitive match for utf-8. It's unnecessary to specify the charset attribute, because documents must use UTF-8, and the script element inherits its character encoding from the document.",
					"deprecated": true
				},
				"crossorigin": {
					"description": "Normal script elements pass minimal information to the window.onerror for scripts which do not pass the standard CORS checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments."
				},
				"defer": {
					"description": "This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing DOMContentLoaded event. Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has loaded and finished evaluating. Warning: This attribute must not be used if the src attribute is absent (i.e., for inline scripts), in this case it would have no effect. The defer attribute has no effect on module scripts — they defer by default. Scripts with the defer attribute will execute in the order in which they appear in the document. This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and evaluate scripts before continuing to parse. async has a similar effect in this case. If the attribute is specified with the async attribute, the element will act as if only the async attribute is specified.",
					"type": "Boolean",
					"condition": "[src]",
					"ineffective": ["[type='module' i]", ":not([src])", "[async]"]
				},
				"fetchpriority": {
					"description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Fetch the external script at a high priority relative to other external scripts. low Fetch the external script at a low priority relative to other external scripts. auto Don't set a preference for the fetch priority. This is the default. It is used if no value or an invalid value is set."
				},
				"integrity": {
					"description": "This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered without unexpected manipulation. The attribute must not be specified when the src attribute is absent. See Subresource Integrity.",
					"condition": "[src]"
				},
				"language": {
					"description": "Like the type attribute, this attribute identifies the scripting language in use. Unlike the type attribute, however, this attribute's possible values were never standardized. The type attribute should be used instead.",
					"deprecated": true,
					"nonStandard": true
				},
				"nomodule": {
					"description": "This Boolean attribute is set to indicate that the script should not be executed in browsers that support ES modules — in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.",
					"type": "Boolean",
					"condition": ":not([type='module' i])"
				},
				"nonce": {
					"description": "A cryptographic nonce (number used once) to allow scripts in a script-src Content-Security-Policy. The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial."
				},
				"referrerpolicy": {
					"description": "Indicates which referrer to send when fetching the script, or resources fetched by the script: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins. Note: An empty string value (\"\") is both the default value, and a fallback value if referrerpolicy is not supported. If referrerpolicy is not explicitly specified on the <script> element, it will adopt a higher-level referrer policy, i.e., one set on the whole document or domain. If a higher-level policy is not available, the empty string is treated as being equivalent to strict-origin-when-cross-origin."
				},
				"src": {
					"description": "This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.",
					"type": "URL"
				},
				"type": {
					"description": "This attribute indicates the type of script represented. The value of this attribute will be one of the following: Attribute is not set (default), an empty string, or a JavaScript MIME type Indicates that the script is a \"classic script\", containing JavaScript code. Authors are encouraged to omit the attribute if the script refers to JavaScript code rather than specify a MIME type. JavaScript MIME types are listed in the IANA media types specification. importmap This value indicates that the body of the element contains an import map. The import map is a JSON object that developers can use to control how the browser resolves module specifiers when importing JavaScript modules. module This value causes the code to be treated as a JavaScript module. The processing of the script contents is deferred. The charset and defer attributes have no effect. For information on using module, see our JavaScript modules guide. Unlike classic scripts, module scripts require the use of the CORS protocol for cross-origin fetching. speculationrules Experimental This value indicates that the body of the element contains speculation rules. Speculation rules take the form of a JSON object that determine what resources should be prefetched or prerendered by the browser. This is part of the Speculation Rules API. Any other value The embedded content is treated as a data block, and won't be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. All of the other attributes will be ignored, including the src attribute.",
					"type": [
						"MIMEType",
						{
							"enum": ["module", "importmap"],
							"caseInsensitive": true
						}
					]
				}
			}
		},
		{
			"name": "search",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/search",
			"description": "The <search> HTML element is a container representing the parts of the document or application with form controls or other content related to performing a search or filtering operation. The <search> element semantically identifies the purpose of the element's contents as having search or filtering capabilities. The search or filtering functionality can be for the website or application, the current web page or document, or the entire Internet or subsection thereof.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": "search",
				"permittedRoles": ["form", "group", "none", "presentation", "region"]
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "section",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/section",
			"description": "The <section> HTML element represents a generic standalone section of a document, which doesn't have a more specific semantic element to represent it. Sections should always have a heading, with very few exceptions.",
			"categories": ["#flow", "#sectioning", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": [
					"alert",
					"alertdialog",
					"application",
					"banner",
					"complementary",
					"contentinfo",
					"dialog",
					"document",
					"feed",
					"group",
					"log",
					"main",
					"marquee",
					"navigation",
					"none",
					"note",
					"presentation",
					"search",
					"status",
					"tabpanel"
				],
				"conditions": {
					":aria(has name)": {
						"implicitRole": "region"
					}
				},
				"1.1": {
					"permittedRoles": [
						"alert",
						"alertdialog",
						"application",
						"banner",
						"complementary",
						"contentinfo",
						"dialog",
						"document",
						"feed",
						"log",
						"main",
						"marquee",
						"navigation",
						"none",
						"note",
						"presentation",
						"search",
						"status",
						"tabpanel"
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "select",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/select",
			"description": "The <select> HTML element represents a control that provides a menu of options.",
			"categories": ["#flow", "#phrasing", "#interactive"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ["option", "optgroup", "hr", "#script-supporting"]
					}
				]
			},
			"aria": {
				"implicitRole": "combobox",
				"permittedRoles": ["menu"],
				"properties": {
					"global": true,
					"role": ["combobox", "menu"],
					"without": [
						{
							"type": "should-not",
							"name": "aria-multiselectable"
						}
					]
				},
				"conditions": {
					"[multiple], [size]:not([size=1])": {
						"implicitRole": "listbox",
						"permittedRoles": false,
						"properties": {
							"global": true,
							"role": "listbox",
							"without": [
								{
									"type": "should-not",
									"name": "aria-multiselectable"
								}
							]
						}
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": ["autocomplete", "disabled", "form", "name", "required"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"autocomplete": {
					"description": "A string providing a hint for a user agent's autocomplete feature. See The HTML autocomplete attribute for a complete list of values and details on how to use autocomplete."
				},
				"autofocus": {
					"description": "This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form element in a document can have the autofocus attribute."
				},
				"disabled": {
					"description": "This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example <fieldset>; if there is no containing element with the disabled attribute set, then the control is enabled."
				},
				"form": {
					"description": "The <form> element to associate the <select> with (its form owner). The value of this attribute must be the id of a <form> in the same document. (If this attribute is not set, the <select> is associated with its ancestor <form> element, if any.) This attribute lets you associate <select> elements to <form>s anywhere in the document, not just inside a <form>. It can also override an ancestor <form> element."
				},
				"multiple": {
					"description": "This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time. When multiple is specified, most browsers will show a scrolling list box instead of a single line dropdown. Multiple selected options are submitted using the URLSearchParams array convention, i.e., name=value1&name=value2.",
					"type": "Boolean"
				},
				"name": {
					"description": "This attribute is used to specify the name of the control."
				},
				"required": {
					"description": "A Boolean attribute indicating that an option with a non-empty string value must be selected."
				},
				"size": {
					"description": "If the control is presented as a scrolling list box (e.g., when multiple is specified), this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0. Note: According to the HTML specification, the default value for size should be 1; however, in practice, this has been found to break some websites, and no other browser currently does that, so Mozilla has opted to continue to return 0 for the time being with Firefox.",
					"type": {
						"type": "integer",
						"gt": 0
					}
				}
			}
		},
		{
			"name": "slot",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/slot",
			"description": "The <slot> HTML element—part of the Web Components technology suite—is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"transparent": "*"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"name": {
					"description": "The slot's name. When the slot's containing component gets rendered, the slot is rendered with the custom element's child that has a matching slot attribute. A named slot is a <slot> element with a name attribute. Unnamed slots have the name default to the empty string. Names should be unique per shadow root: if you have two slots with the same name, all of the elements with a matching slot attribute will be assigned to the first slot with that name.",
					"type": "NoEmptyAny"
				}
			}
		},
		{
			"name": "small",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/small",
			"description": "The <small> HTML element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. By default, it renders text within it one font-size smaller, such as from small to x-small.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "source",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/source",
			"description": "The <source> HTML element specifies one or more media resources for the <picture>, <audio>, and <video> elements. It is a void element, which means that it has no content and does not require a closing tag. This element is commonly used to offer the same media content in multiple file formats in order to provide compatibility with a broad range of browsers given their differing support for image file formats and media file formats.",
			"categories": [],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": ["height", "srcset", "sizes", "width"],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"height": {
					"description": "Specifies the intrinsic height of the image in pixels. Allowed if the parent of <source> is a <picture>. Not allowed if the parent is <audio> or <video>. The height value must be an integer without any units.",
					"condition": "picture > source"
				},
				"media": {
					"description": "Specifies the media query for the resource's intended media.",
					"type": "<media-query-list>"
				},
				"sizes": {
					"description": "Specifies a list of source sizes that describe the final rendered width of the image. Allowed if the parent of <source> is <picture>. Not allowed if the parent is <audio> or <video>. The list consists of source sizes separated by commas. Each source size is media condition-length pair. Before laying the page out, the browser uses this information to determine which image defined in srcset to display. Note that sizes will take effect only if width descriptors are provided with srcset, not pixel density descriptors (i.e., 200w should be used instead of 2x).",
					"condition": "picture > source"
				},
				"src": {
					"description": "Specifies the URL of the media resource. Required if the parent of <source> is <audio> or <video>. Not allowed if the parent is <picture>.",
					"type": "URL",
					"required": ":is(video, audio) > source",
					"condition": ":is(video, audio) > source"
				},
				"srcset": {
					"description": "Specifies a comma-separated list of one or more image URLs and their descriptors. Required if the parent of <source> is <picture>. Not allowed if the parent is <audio> or <video>. The list consists of strings separated by commas, indicating a set of possible images for the browser to use. Each string is composed of: A URL specifying an image location. An optional width descriptor—a positive integer directly followed by \"w\", such as 300w. An optional pixel density descriptor—a positive floating number directly followed by \"x\", such as 2x. Each string in the list must have either a width descriptor or a pixel density descriptor to be valid. These two descriptors should not be used together; only one should be used consistently throughout the list. The value of each descriptor in the list must be unique. The browser chooses the most adequate image to display at a given point of time based on these descriptors. If the descriptors are not specified, the default value used is 1x. If the sizes attribute is also present, then each string must include a width descriptor. If the browser does not support srcset, then src will be used for the default image source.",
					"required": "picture > source",
					"condition": "picture > source"
				},
				"type": {
					"description": "Specifies the MIME media type of the image or other media type, optionally including a codecs parameter.",
					"type": "MIMEType"
				},
				"width": {
					"description": "Specifies the intrinsic width of the image in pixels. Allowed if the parent of <source> is a <picture>. Not allowed if the parent is <audio> or <video>. The width value must be an integer without any units.",
					"condition": "picture > source"
				}
			}
		},
		{
			"name": "spacer",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "span",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/span",
			"description": "The <span> HTML element is a generic inline container for phrasing content, which does not inherently represent anything. It can be used to group elements for styling purposes (using the class or id attributes), or because they share attribute values, such as lang. It should be used only when no other semantic element is appropriate. <span> is very much like a <div> element, but <div> is a block-level element whereas a <span> is an inline-level element.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "strike",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <strike> HTML element places a strikethrough (horizontal line) over text. Warning: This element is deprecated in HTML 4 and XHTML 1, and obsoleted in the HTML Living Standard. If semantically appropriate, i.e., if it represents deleted content, use <del> instead. In all other cases use <s>.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "strong",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/strong",
			"description": "The <strong> HTML element indicates that its contents have strong importance, seriousness, or urgency. Browsers typically render the contents in bold type.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "strong",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "style",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/style",
			"description": "The <style> HTML element contains style information for a document, or part of a document. It contains CSS, which is applied to the contents of the document containing the <style> element.",
			"categories": ["#metadata"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "#text"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"blocking": {
					"description": "This attribute explicitly indicates that certain operations should be blocked on the fetching of critical subresources and the application of the stylesheet to the document. @import-ed stylesheets are generally considered as critical subresources, whereas background-image and fonts are not. The operations that are to be blocked must be a space-separated list of blocking tokens listed below. Currently there is only one token: render: The rendering of content on the screen is blocked. Note: Only style elements in the document's <head> can possibly block rendering. By default, a style element in the <head> blocks rendering when the browser discovers it during parsing. If such a style element is added dynamically via script, you must additionally set blocking = \"render\" for it to block rendering.",
					"type": {
						"token": {
							"enum": ["render"]
						},
						"separator": "space",
						"unique": true
					}
				},
				"media": {
					"description": "This attribute defines which media the style should be applied to. Its value is a media query, which defaults to all if the attribute is missing.",
					"type": "<media-query-list>"
				},
				"nonce": {
					"description": "A cryptographic nonce (number used once) used to allow inline styles in a style-src Content-Security-Policy. The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial."
				},
				"title": {
					"description": "This attribute specifies alternative style sheet sets."
				},
				"type": {
					"description": "This attribute should not be provided: if it is, the only permitted values are the empty string or a case-insensitive match for text/css.",
					"deprecated": true
				}
			}
		},
		{
			"name": "sub",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/sub",
			"description": "The <sub> HTML element specifies inline text which should be displayed as subscript for solely typographical reasons. Subscripts are typically rendered with a lowered baseline using smaller text.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "subscript",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "summary",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/summary",
			"description": "The <summary> HTML element specifies a summary, caption, or legend for a <details> element's disclosure box. Clicking the <summary> element toggles the state of the parent <details> element open and closed.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"oneOrMore": ":model(phrasing)"
								}
							],
							[
								{
									"require": ":model(heading)"
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": "button",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "button"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "sup",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/sup",
			"description": "The <sup> HTML element specifies inline text which is to be displayed as superscript for solely typographical reasons. Superscripts are usually rendered with a raised baseline using smaller text.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "superscript",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "table",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/table",
			"description": "The <table> HTML element represents tabular data—that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.",
			"categories": ["#flow"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"optional": "caption"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"zeroOrMore": "colgroup"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"optional": "thead"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"choice": [
							[
								{
									"zeroOrMore": "tbody"
								}
							],
							[
								{
									"oneOrMore": "tr"
								}
							]
						]
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					},
					{
						"optional": "tfoot"
					},
					{
						"zeroOrMore": ":model(script-supporting)"
					}
				]
			},
			"aria": {
				"implicitRole": "table",
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of the table within its parent element. The possible enumerated values are left, center, and right. Use the margin-inline-start and margin-inline-end CSS properties instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of the table. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"border": {
					"description": "Defines, as a non-negative integer value (in pixels), the size of the frame surrounding the table. If set to 0, the frame attribute is set to void. Use the border CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"cellpadding": {
					"description": "Defines the space between the content of a cell and its border. This attribute is obsolete: instead of using it, apply the padding CSS property to the <th> and <td> elements.",
					"deprecated": true
				},
				"cellspacing": {
					"description": "Defines the size of the space between two cells. This attribute is obsolete: instead of using it, set the border-spacing CSS property on the <table> element. Note that this has no effect if the <table> element's border-collapse CSS property is set to collapse.",
					"deprecated": true
				},
				"frame": {
					"description": "Defines which side of the frame surrounding the table must be displayed. The possible enumerated values are void, above, below, hsides, vsides, lhs, rhs, box and border. Use the border-style and border-width CSS properties instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"rules": {
					"description": "Defines where rules (borders) are displayed in the table. The possible enumerated values are none (default value), groups (<thead>, <tbody>, and <tfoot> elements), rows (horizontal lines), cols (vertical lines), and all (border around every cell). Use the border CSS property on the appropriate table-related elements, as well as on the <table> itself, instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"summary": {
					"description": "Defines an alternative text that summarizes the content of the table. Use the <caption> element instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"width": {
					"description": "Specifies the width of the table. Use the width CSS property instead, as this attribute is deprecated. Note: While no HTML specification includes height as a <table> attribute, some browsers support a non-standard interpretation of height. The unitless value sets a minimum absolute height in pixels. If set as a percent value, the minimum table height will be relative to the parent container's height. Use the min-height CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "tbody",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tbody",
			"description": "The <tbody> HTML element encapsulates a set of table rows (<tr> elements), indicating that they comprise the body of a table's (main) data.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "tr"
					}
				]
			},
			"aria": {
				"implicitRole": "rowgroup",
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of each body cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and on offset defined by the charoff attribute. Use the text-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of each body cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Specifies the alignment of the content to a character of each body cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
					"deprecated": true
				},
				"charoff": {
					"description": "Specifies the number of characters to offset the body cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"valign": {
					"description": "Specifies the vertical alignment of each body cell. The possible enumerated values are baseline, bottom, middle, and top. Use the vertical-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "td",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/td",
			"description": "The <td> HTML element defines a cell of a table that contains data and may be used as a child of the <tr> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"conditions": {
					"table:is(:not([role]), [role=table]) > :is(thead, tfoot, tbody) > tr > td, table:is(:not([role]), [role=table]) > tr > td": {
						"implicitRole": "cell"
					},
					"table:is([role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > td, table:is([role=grid], [role=treegrid]) > tr > td": {
						"implicitRole": "gridcell"
					},
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > td, table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > td": {
						"permittedRoles": false
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLTableCellElementAttrs": ["colspan", "rowspan", "headers"]
			},
			"attributes": {
				"abbr": {
					"description": "Contains a short abbreviated description of the data cell's content. Some user-agents, such as speech readers, may present this description before the content itself. Put the abbreviated content inside the cell and place the (longer) description in the title attribute, as this attribute is deprecated. Or, preferably, include the content within the data cell, and use CSS to visually clip overflowing text.",
					"deprecated": true
				},
				"align": {
					"description": "Specifies the horizontal alignment of the data cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and the offset defined by the charoff attribute. Use the text-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"axis": {
					"description": "Contains a list of space-separated strings, each corresponding to the id attribute of a group of cells that the data cell applies to.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of the data cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Does nothing. It was originally intended to specify the alignment of the content to a character of the data cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
					"deprecated": true
				},
				"charoff": {
					"description": "Does nothing. It was originally intended to specify the number of characters to offset the data cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"colspan": {
					"description": "Contains a non-negative integer value that indicates how many columns the data cell spans or extends. The default value is 1. User agents dismiss values higher than 1000 as incorrect, setting to the default value (1)."
				},
				"headers": {
					"description": "Contains a list of space-separated strings, each corresponding to the id attribute of the <th> elements that provide headings for this table cell."
				},
				"height": {
					"description": "Defines a recommended data cell height. Use the height CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"rowspan": {
					"description": "Contains a non-negative integer value that indicates for how many rows the data cell spans or extends. The default value is 1; if its value is set to 0, it extends until the end of the table grouping section (<thead>, <tbody>, <tfoot>, even if implicitly defined), that the cell belongs to. Values higher than 65534 are clipped to 65534."
				},
				"scope": {
					"description": "Defines the cells that the header (defined in the <th>) element relates to. The possible enumerated values are row, col, rowgroup, and colgroup. Only use this attribute with the <th> element to define the row or column for which it is a header, as this attribute is deprecated for the <td> element.",
					"deprecated": true
				},
				"valign": {
					"description": "Specifies the vertical alignment of the data cell. The possible enumerated values are baseline, bottom, middle, and top. Use the vertical-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"width": {
					"description": "Defines a recommended data cell width. Use the width CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "template",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template",
			"description": "The <template> HTML element serves as a mechanism for holding HTML fragments, which can either be used later via JavaScript or generated immediately into shadow DOM.",
			"categories": ["#metadata", "#flow", "#phrasing", "#script-supporting"],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"shadowrootclonable": {
					"description": "Sets the value of the clonable property of a ShadowRoot created using this element to true. If set, a clone of the shadow host (the parent element of this <template>) created with Node.cloneNode() or Document.importNode() will include a shadow root in the copy.",
					"type": "Boolean"
				},
				"shadowrootdelegatesfocus": {
					"description": "Sets the value of the delegatesFocus property of a ShadowRoot created using this element to true. If this is set and a non-focusable element in the shadow tree is selected, then focus is delegated to the first focusable element in the tree. The value defaults to false.",
					"type": "Boolean"
				},
				"shadowrootmode": {
					"description": "Creates a shadow root for the parent element. It is a declarative version of the Element.attachShadow() method and accepts the same enumerated values. open Exposes the internal shadow root DOM for JavaScript (recommended for most use cases). closed Hides the internal shadow root DOM from JavaScript. Note: The HTML parser creates a ShadowRoot object in the DOM for the first <template> in a node with this attribute set to an allowed value. If the attribute is not set, or not set to an allowed value — or if a ShadowRoot has already been declaratively created in the same parent — then an HTMLTemplateElement is constructed. A HTMLTemplateElement cannot subsequently be changed into a shadow root after parsing, for example, by setting HTMLTemplateElement.shadowRootMode. Note: You may find the non-standard shadowroot attribute in older tutorials and examples that used to be supported in Chrome 90-110. This attribute has since been removed and replaced by the standard shadowrootmode attribute.",
					"type": {
						"enum": ["open", "closed"],
						"missingValueDefault": "none",
						"invalidValueDefault": "none"
					}
				},
				"shadowrootreferencetarget": {
					"description": "Sets the value of the referenceTarget property of a ShadowRoot created using this element. The value should be the ID of an element inside the shadow DOM. If set, target references to the host element from outside the shadow DOM will cause the referenced target element to become the effective target of the reference to the host element.",
					"experimental": true,
					"nonStandard": true,
					"type": "DOMID"
				},
				"shadowrootserializable": {
					"description": "Sets the value of the serializable property of a ShadowRoot created using this element to true. If set, the shadow root may be serialized by calling the Element.getHTML() or ShadowRoot.getHTML() methods with the options.serializableShadowRoots parameter set true. The value defaults to false.",
					"type": "Boolean"
				}
			}
		},
		{
			"name": "textarea",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/textarea",
			"description": "The <textarea> HTML element represents a multi-line plain-text editing control, useful when you want to allow users to enter a sizeable amount of free-form text, for example a comment on a review or feedback form.",
			"categories": ["#flow", "#phrasing", "#interactive"],
			"contentModel": {
				"contents": [
					{
						"optional": "#text"
					}
				]
			},
			"aria": {
				"implicitRole": "textbox",
				"permittedRoles": false,
				"properties": {
					"global": true,
					"role": "textbox"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLFormControlElementAttrs": [
					"autocomplete",
					"dirname",
					"disabled",
					"form",
					"maxlength",
					"minlength",
					"name",
					"readonly",
					"required"
				],
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"autocapitalize": {
					"description": "Controls whether inputted text is automatically capitalized and, if so, in what manner."
				},
				"autocomplete": {
					"description": "Controls whether entered text can be automatically completed by the browser. Possible values are: off: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry. on: The browser can automatically complete the value based on values that the user has entered during previous uses. <token-list>: An ordered set of space-separated autofill detail tokens, optionally preceded by a sectioning token, a billing or shipping grouping token, and/or a token identifying the type of recipient. <textarea> elements that don't specify the autocomplete attribute inherit the autocomplete on or off status set on the <textarea>'s form owner. The form owner is either the <form> element that this <textarea> element is a descendant of or the form element whose id is specified by the form attribute of the input element. For more information, see the autocomplete attribute in <form>."
				},
				"autocorrect": {
					"description": "Controls whether automatic spelling correction and processing of text is enabled while the user is editing this textarea. Permitted values are: on Enable automatic spelling correction and text substitutions. off Disable automatic spelling correction and text substitutions."
				},
				"autofocus": {
					"description": "This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified."
				},
				"cols": {
					"description": "The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is 20.",
					"type": {
						"type": "integer",
						"gt": 0
					},
					"defaultValue": "20"
				},
				"dirname": {
					"description": "This attribute is used to indicate the text directionality of the element contents. For more information, see the dirname attribute."
				},
				"disabled": {
					"description": "This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example <fieldset>; if there is no containing element when the disabled attribute is set, the control is enabled."
				},
				"form": {
					"description": "The form element that the <textarea> element is associated with (its \"form owner\"). The value of the attribute must be the id of a form element in the same document. If this attribute is not specified, the <textarea> element must be a descendant of a form element. This attribute enables you to place <textarea> elements anywhere within a document, not just as descendants of form elements."
				},
				"maxlength": {
					"description": "The maximum string length (measured in UTF-16 code units) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters."
				},
				"minlength": {
					"description": "The minimum string length (measured in UTF-16 code units) required that the user should enter."
				},
				"name": {
					"description": "The name of the control."
				},
				"placeholder": {
					"description": "A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint. Note: Placeholders should only be used to show an example of the type of data that should be entered into a form; they are not a substitute for a proper <label> element tied to the input. See <input> labels for a full explanation.",
					"type": "Any"
				},
				"readonly": {
					"description": "This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the disabled attribute, the readonly attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form."
				},
				"required": {
					"description": "This attribute specifies that the user must fill in a value before submitting a form."
				},
				"rows": {
					"description": "The number of visible text lines for the control. If it is specified, it must be a positive integer. If it is not specified, the default value is 2.",
					"type": {
						"type": "integer",
						"gt": 0
					},
					"defaultValue": "2"
				},
				"spellcheck": {
					"description": "Specifies whether the <textarea> is subject to spell-checking by the underlying browser/OS. The value can be: true: Indicates that the element needs to have its spelling and grammar checked. default : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own spellcheck value. false : Indicates that the element should not be spell-checked."
				},
				"wrap": {
					"description": "Indicates how the control should wrap the value for form submission. Possible values are: hard: The browser automatically inserts line breaks (CR+LF) so that each line is no longer than the width of the control; the cols attribute must be specified for this to take effect soft: The browser ensures that all line breaks in the entered value are a CR+LF pair, but no additional line breaks are added to the value. off Non-standard : Like soft but changes appearance to white-space: pre so line segments exceeding cols are not wrapped and the <textarea> becomes horizontally scrollable. If this attribute is not specified, soft is its default value.",
					"type": {
						"enum": ["soft", "hard"],
						"missingValueDefault": "soft",
						"invalidValueDefault": "soft"
					}
				}
			}
		},
		{
			"name": "tfoot",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tfoot",
			"description": "The <tfoot> HTML element encapsulates a set of table rows (<tr> elements), indicating that they comprise the foot of a table with information about the table's columns. This is usually a summary of the columns, e.g., a sum of the given numbers in a column.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "tr"
					}
				]
			},
			"aria": {
				"implicitRole": "rowgroup",
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of each foot cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and on offset defined by the charoff attribute. Use the text-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of each foot cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Does nothing. It was originally intended to specify the alignment of the content to a character of each foot cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
					"deprecated": true
				},
				"charoff": {
					"description": "Does nothing. It was originally intended to specify the number of characters to offset the foot cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"valign": {
					"description": "Specifies the vertical alignment of each foot cell. The possible enumerated values are baseline, bottom, middle, and top. Use the vertical-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "th",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/th",
			"description": "The <th> HTML element defines a cell as the header of a group of table cells and may be used as a child of the <tr> element. The exact nature of this group is defined by the scope and headers attributes.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"conditions": {
					"table:is(:not([role]), [role=table]) > :is(thead, tfoot, tbody) > tr > th, table:is(:not([role]), [role=table]) > tr > th": {
						"implicitRole": "cell"
					},
					"table:is([role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th, table:is([role=grid], [role=treegrid]) > tr > th": {
						"implicitRole": "gridcell"
					},
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > thead > tr > th:not([scope])": {
						"implicitRole": "columnheader"
					},
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(tfoot, tbody) > tr > th:not([scope]), table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th:not([scope])": {
						"implicitRole": "rowheader"
					},
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th[scope=col], table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th[scope=col]": {
						"implicitRole": "columnheader"
					},
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th[scope=row], table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th[scope=row]": {
						"implicitRole": "rowheader"
					},
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th, table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th": {
						"permittedRoles": false
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLTableCellElementAttrs": ["colspan", "rowspan", "headers"]
			},
			"attributes": {
				"abbr": {
					"description": "A short, abbreviated description of the header cell's content provided as an alternative label to use for the header cell when referencing the cell in other contexts. Some user-agents, such as screen readers, may present this description before the content itself.",
					"type": "Any"
				},
				"align": {
					"description": "Specifies the horizontal alignment of the header cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and the offset defined by the charoff attribute. Use the text-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"axis": {
					"description": "Contains a list of space-separated strings, each corresponding to the id attribute of a group of cells that the header cell applies to. Use the scope attribute instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of the header cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Does nothing. It was originally intended to specify the alignment of the content to a character of the header cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
					"deprecated": true
				},
				"charoff": {
					"description": "Does nothing. It was originally intended to specify the number of characters to offset the header cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"colspan": {
					"description": "A non-negative integer value indicating how many columns the header cell spans or extends. The default value is 1. User agents dismiss values higher than 1000 as incorrect, defaulting such values to 1."
				},
				"headers": {
					"description": "A list of space-separated strings corresponding to the id attributes of the <th> elements that provide the headers for this header cell."
				},
				"height": {
					"description": "Defines a recommended header cell height. Use the height CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"rowspan": {
					"description": "A non-negative integer value indicating how many rows the header cell spans or extends. The default value is 1; if its value is set to 0, the header cell will extend to the end of the table grouping section (<thead>, <tbody>, <tfoot>, even if implicitly defined), that the <th> belongs to. Values higher than 65534 are clipped at 65534."
				},
				"scope": {
					"description": "Defines the cells that the header (defined in the <th>) element relates to. Possible enumerated values are: row: the header relates to all cells of the row it belongs to; col: the header relates to all cells of the column it belongs to; rowgroup: the header belongs to a rowgroup and relates to all of its cells; colgroup: the header belongs to a colgroup and relates to all of its cells. If the scope attribute is not specified, or its value is not row, col, rowgroup, or colgroup, then browsers automatically select the set of cells to which the header cell applies.",
					"type": {
						"enum": ["row", "col", "rowgroup", "colgroup"],
						"missingValueDefault": "auto",
						"invalidValueDefault": "auto"
					}
				},
				"valign": {
					"description": "Specifies the vertical alignment of the header cell. The possible enumerated values are baseline, bottom, middle, and top. Use the vertical-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"width": {
					"description": "Defines a recommended header cell width. Use the width CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "thead",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/thead",
			"description": "The <thead> HTML element encapsulates a set of table rows (<tr> elements), indicating that they comprise the head of a table with information about the table's columns. This is usually in the form of column headers (<th> elements).",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "tr"
					}
				]
			},
			"aria": {
				"implicitRole": "rowgroup",
				"permittedRoles": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of each head cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and the offset defined by the charoff attribute. Use the text-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of each head cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Does nothing. It was originally intended to specify the alignment of the content to a character of each head cell. If align is not set to char, this attribute is ignored.",
					"deprecated": true
				},
				"charoff": {
					"description": "Does nothing. It was originally intended to specify the number of characters to offset the head cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"valign": {
					"description": "Specifies the vertical alignment of each head cell. The possible enumerated values are baseline, bottom, middle, and top. Use the vertical-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "time",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/time",
			"description": "The <time> HTML element represents a specific period in time. It may include the datetime attribute to translate dates into machine-readable format, allowing for better search engine results or custom features such as reminders. It may represent one of the following: A time on a 24-hour clock. A precise date in the Gregorian calendar (with optional time and timezone information). A valid time duration.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "time",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"datetime": {
					"description": "This attribute indicates the time and/or date of the element and must be in one of the formats described below.",
					"type": "DateTime"
				}
			}
		},
		{
			"name": "title",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/title",
			"description": "The <title> HTML element defines the document's title that is shown in a browser's title bar or a page's tab. It only contains text; HTML tags within the element, if any, are also treated as plain text. html<title>Grandma's Heavy Metal Festival Journal</title>",
			"categories": ["#metadata"],
			"contentModel": {
				"contents": [
					{
						"require": "#text"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "tr",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tr",
			"description": "The <tr> HTML element defines a row of cells in a table. The row's cells can then be established using a mix of <td> (data cell) and <th> (header cell) elements.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ["th", "td", ":model(script-supporting)"]
					}
				]
			},
			"aria": {
				"implicitRole": "row",
				"permittedRoles": true,
				"conditions": {
					"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr": {
						"permittedRoles": false
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"align": {
					"description": "Specifies the horizontal alignment of each row cell. The possible enumerated values are left, center, right, justify, and char. When supported, the char value aligns the textual content on the character defined in the char attribute and on offset defined by the charoff attribute. Use the text-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"bgcolor": {
					"description": "Defines the background color of each row cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				},
				"char": {
					"description": "Specifies the alignment of the content to a character of each row cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
					"deprecated": true
				},
				"charoff": {
					"description": "Specifies the number of characters to offset the row cell content from the alignment character specified by the char attribute.",
					"deprecated": true
				},
				"valign": {
					"description": "Specifies the vertical alignment of each row cell. The possible enumerated values are baseline, bottom, middle, and top. Use the vertical-align CSS property instead, as this attribute is deprecated.",
					"deprecated": true
				}
			}
		},
		{
			"name": "track",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/track",
			"description": "The <track> HTML element is used as a child of the media elements, <audio> and <video>. Each track element lets you specify a timed text track (or time-based data) that can be displayed in parallel with the media element, for example to overlay subtitles or closed captions on top of a video or alongside audio tracks. Multiple tracks can be specified for a media element, containing different kinds of timed text data, or timed text data that has been translated for different locales. The data that is used will either be the track that has been set to be the default, or a kind and translation based on user preferences. The tracks are formatted in WebVTT format (.vtt files) — Web Video Text Tracks.",
			"categories": [],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"default": {
					"description": "This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one track element per media element.",
					"type": "Boolean"
				},
				"kind": {
					"description": "How the text track is meant to be used. If omitted the default kind is subtitles. If the attribute contains an invalid value, it will use metadata. The following keywords are allowed: subtitles Subtitles provide transcription or translation of the dialog. They are suitable for when the sound is available but not understood, such as speech or text that is not English in an English language film. Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene. Subtitles' information complements the audio and video. It is often embedded in the video itself, but can also be provided separately, especially for whole-film translations. captions Closed captions provide transcription or translation of the dialog, sound effects, relevant musical cues, and other relevant audio information, such as the cue's source (e.g., character, environment). They are suitable for when sound is unavailable or not clearly audible (e.g., because it is muted, drowned-out by ambient noise, or because the user is deaf). descriptions Descriptions summarize the video component of the media resource. They are intended to be synthesized as audio when the visual component is obscured, unavailable, or not usable (e.g., because the user is interacting with the application without a screen while driving, or because the user is blind). chapters Chapter titles are intended to be used when the user is navigating the media resource. metadata Tracks used by scripts. Not visible to the user.",
					"type": {
						"enum": ["subtitles", "captions", "descriptions", "chapters", "metadata"],
						"missingValueDefault": "metadata",
						"invalidValueDefault": "metadata"
					}
				},
				"label": {
					"description": "A user-readable title of the text track which is used by the browser when listing available text tracks.",
					"type": "NoEmptyAny"
				},
				"src": {
					"description": "Address of the track (.vtt file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document — unless the <audio> or <video> parent element of the track element has a crossorigin attribute.",
					"type": "URL",
					"required": true
				},
				"srclang": {
					"description": "Language of the track text data. It must be a valid BCP 47 language tag. If the kind attribute is set to subtitles, then srclang must be defined.",
					"type": "BCP47"
				}
			}
		},
		{
			"name": "tt",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <tt> HTML element creates inline text which is presented using the user agent's default monospace font face. This element was created for the purpose of rendering text as it would be displayed on a fixed-width display such as a teletype, text-only screen, or line printer. The terms non-proportional, monotype, and monospace are used interchangeably and have the same general meaning: they describe a typeface whose characters are all the same number of pixels wide. This element is obsolete, however. You should use the more semantically helpful <code>, <kbd>, <samp>, or <var> elements for inline text that needs to be presented in monospace type, or the <pre> tag for content that should be presented as a separate block. Note: If none of the semantic elements are appropriate for your use case (for example, if you need to show some content in a non-proportional font), you should consider using the <span> element, styling it as desired using CSS. The font-family property is a good place to start.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "u",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/u",
			"description": "The <u> HTML element represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation. This is rendered by default as a single solid underline, but may be altered using CSS. Warning: This element used to be called the \"Underline\" element in older versions of HTML, and is still sometimes misused in this way. To underline text, you should instead apply a style that includes the CSS text-decoration property set to underline.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": "generic",
				"permittedRoles": true,
				"namingProhibited": true,
				"1.1": {
					"implicitRole": false
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "ul",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ul",
			"description": "The <ul> HTML element represents an unordered list of items, typically rendered as a bulleted list.",
			"categories": ["#flow", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ["li", ":model(script-supporting)"]
					}
				]
			},
			"aria": {
				"implicitRole": "list",
				"permittedRoles": [
					"group",
					"listbox",
					"menu",
					"menubar",
					"none",
					"presentation",
					"radiogroup",
					"tablist",
					"toolbar",
					"tree",
					{
						"name": "directory",
						"deprecated": true
					}
				],
				"1.1": {
					"permittedRoles": [
						"directory",
						"group",
						"listbox",
						"menu",
						"menubar",
						"none",
						"presentation",
						"radiogroup",
						"tablist",
						"toolbar",
						"tree"
					]
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {
				"compact": {
					"description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute is browser-specific. Use CSS instead: to give a similar effect as the compact attribute, the CSS property line-height can be used with a value of 80%.",
					"deprecated": true
				},
				"type": {
					"description": "This attribute sets the bullet style for the list. The values defined under HTML3.2 and the transitional version of HTML 4.0/4.01 are: circle disc square A fourth bullet type has been defined in the WebTV interface, but not all browsers support it: triangle. If not present and if no CSS list-style-type property applies to the element, the user agent selects a bullet type depending on the nesting level of the list. Warning: Do not use this attribute, as it has been deprecated; use the CSS list-style-type property instead.",
					"deprecated": true
				}
			}
		},
		{
			"name": "var",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/var",
			"description": "The <var> HTML element represents the name of a variable in a mathematical expression or a programming context. It's typically presented using an italicized version of the current typeface, although that behavior is browser-dependent.",
			"categories": ["#flow", "#phrasing", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"oneOrMore": ":model(phrasing)"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": true,
				"namingProhibited": true
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "video",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/video",
			"description": "The <video> HTML element embeds a media player which supports video playback into the document. You can use <video> for audio content as well, but the <audio> element may provide a more appropriate user experience.",
			"categories": ["#flow", "#phrasing", "#embedded", "#interactive", "#palpable"],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "source"
					},
					{
						"zeroOrMore": "track"
					},
					{
						"transparent": ":not(audio, video, :has(audio, video))"
					}
				],
				"conditional": [
					{
						"condition": "[src]",
						"contents": [
							{
								"zeroOrMore": "track"
							},
							{
								"transparent": ":not(audio, video, :has(audio, video))"
							}
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["application"],
				"properties": {
					"global": true,
					"role": "application"
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLEmbededAndMediaContentAttrs": [
					"src",
					"preload",
					"autoplay",
					"loop",
					"muted",
					"controls",
					"height",
					"width"
				],
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": ["crossorigin"]
			},
			"attributes": {
				"autoplay": {
					"description": "A Boolean attribute; if specified, the video automatically begins to play back as soon as it can without stopping to finish loading the data. Note: Modern browsers block audio (or videos with an unmuted audio track) from autoplaying, as sites that automatically play audio can be an unpleasant experience for users. See our autoplay guide for additional information about how to properly use autoplay. To disable video autoplay, autoplay=\"false\" will not work; the video will autoplay if the attribute is there in the <video> tag at all. To remove autoplay, the attribute needs to be removed altogether."
				},
				"controls": {
					"description": "If this attribute is present, the browser will offer controls to allow the user to control video playback, including volume, seeking, and pause/resume playback."
				},
				"controlslist": {
					"description": "The controlslist attribute, when specified, helps the browser select what controls to show for the video element whenever the browser shows its own set of controls (that is, when the controls attribute is specified). The allowed values are nodownload, nofullscreen and noremoteplayback. Use the disablepictureinpicture attribute if you want to disable the Picture-In-Picture mode (and the control).",
					"type": {
						"token": {
							"enum": ["nodownload", "nofullscreen", "noremoteplayback"]
						},
						"ordered": false,
						"caseInsensitive": true,
						"unique": true,
						"separator": "space"
					}
				},
				"crossorigin": {
					"description": "This enumerated attribute indicates whether to use CORS to fetch the related video. CORS-enabled resources can be reused in the <canvas> element without being tainted. The allowed values are: anonymous Sends a cross-origin request without a credential. In other words, it sends the Origin: HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin: HTTP header), the resource will be tainted, and its usage restricted. use-credentials Sends a cross-origin request with a credential. In other words, it sends the Origin: HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through Access-Control-Allow-Credentials: HTTP header), the resource will be tainted and its usage restricted. When not present, the resource is fetched without a CORS request (i.e., without sending the Origin: HTTP header), preventing its non-tainted use in <canvas> elements. If invalid, it is handled as if the enumerated keyword anonymous was used. See CORS settings attributes for additional information."
				},
				"disablepictureinpicture": {
					"description": "Prevents the browser from suggesting a Picture-in-Picture context menu or to request Picture-in-Picture automatically in some cases."
				},
				"disableremoteplayback": {
					"description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). In Safari, you can use x-webkit-airplay=\"deny\" as a fallback."
				},
				"height": {
					"description": "The height of the video's display area, in CSS pixels (absolute values only; no percentages)."
				},
				"loop": {
					"description": "A Boolean attribute; if specified, the browser will automatically seek back to the start upon reaching the end of the video."
				},
				"muted": {
					"description": "A Boolean attribute that indicates the default audio mute setting contained in the video. If set, the audio will be initially silenced. Its default value is false, meaning the audio will be played when the video is played."
				},
				"playsinline": {
					"description": "A Boolean attribute indicating that the video is to be played \"inline\", that is, within the element's playback area. Note that the absence of this attribute does not imply that the video will always be played in fullscreen.",
					"type": "Boolean"
				},
				"poster": {
					"description": "A URL for an image to be shown while the video is downloading. If this attribute isn't specified, nothing is displayed until the first frame is available, then the first frame is shown as the poster frame.",
					"type": "URL"
				},
				"preload": {
					"description": "This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience regarding what content is loaded before the video is played. It may have one of the following values: none: Indicates that the video should not be preloaded. metadata: Indicates that only video metadata (e.g., length) is fetched. auto: Indicates that the whole video file can be downloaded, even if the user is not expected to use it. empty string: A synonym of the auto value. The default value is different for each browser. The spec advises it to be set to metadata. Note: The autoplay attribute has precedence over preload. If autoplay is specified, the browser would obviously need to start downloading the video for playback. The specification does not force the browser to follow the value of this attribute; it is a mere hint."
				},
				"src": {
					"description": "The URL of the video to embed. This is optional; you may instead use the <source> element within the video block to specify the video to embed."
				},
				"width": {
					"description": "The width of the video's display area, in CSS pixels (absolute values only; no percentages)."
				}
			}
		},
		{
			"name": "wbr",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/wbr",
			"description": "The <wbr> HTML element represents a word break opportunity—a position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location.",
			"categories": ["#flow", "#phrasing"],
			"contentModel": {
				"contents": false
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": ["none", "presentation"],
				"properties": {
					"only": ["aria-hidden"]
				},
				"1.1": {
					"permittedRoles": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true
			},
			"attributes": {}
		},
		{
			"name": "xmp",
			"cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
			"description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"permittedRoles": true,
				"implicitRole": false
			},
			"omission": false,
			"obsolete": true,
			"globalAttrs": {},
			"attributes": {}
		},
		{
			"name": "svg:a",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/a",
			"description": "The <a> SVG element creates a hyperlink to other web pages, files, locations in the same page, email addresses, or any other URL. It is very similar to HTML's <a> element. SVG's <a> element is a container, which means you can create a link around text (like in HTML) but also around any shape.",
			"categories": [],
			"contentModel": {
				"conditional": [
					{
						"condition": "svg|switch > svg|a",
						"contents": [
							{
								"transparent": "*"
							}
						]
					}
				],
				"contents": [
					{
						"transparent": "*, :model(SVGDescriptive):not(svg|a, :has(svg|a))"
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				},
				"conditions": {
					"[href], [xlink|href]": {
						"implicitRole": "link"
					}
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#HTMLLinkAndFetchingAttrs": [
					"href",
					"target",
					"download",
					"ping",
					"rel",
					"hreflang",
					"type",
					"referrerpolicy"
				],
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"download": {
					"description": "Instructs browsers to download a URL instead of navigating to it, so the user will be prompted to save it as a local file. Value type: <string>; Default value: none; Animatable: no"
				},
				"href": {
					"description": "The URL or URL fragment the hyperlink points to. Value type: <URL>; Default value: none; Animatable: yes"
				},
				"hreflang": {
					"description": "The human language of the URL or URL fragment that the hyperlink points to. Value type: <string>; Default value: none; Animatable: no"
				},
				"interestfor": {
					"description": "Defines the <a> element as an interest invoker. Its value is the id of a target element that will be affected in some way (normally shown or hidden) when interest is shown or lost on the invoker element (for example, by hovering/unhovering or focusing/blurring it). See Using interest invokers for more details and examples. Value type: <string>; Default value: none; Animatable: no",
					"experimental": true,
					"nonStandard": true,
					"type": "DOMID"
				},
				"ping": {
					"description": "A space-separated list of URLs to which, when the hyperlink is followed, POST requests with the body PING will be sent by the browser (in the background). Typically used for tracking. For a more widely-supported feature addressing the same use cases, see Navigator.sendBeacon(). Value type: <list-of-URLs>; Default value: none; Animatable: no",
					"experimental": true
				},
				"referrerpolicy": {
					"description": "Which referrer to send when fetching the URL. Value type: no-referrer | no-referrer-when-downgrade | same-origin | origin | strict-origin | origin-when-cross-origin | strict-origin-when-cross-origin | unsafe-url; Default value: none; Animatable: no"
				},
				"rel": {
					"description": "The relationship of the target object to the link object. Value type: <list-of-Link-Types>; Default value: none; Animatable: no"
				},
				"target": {
					"description": "Where to display the linked URL. Value type: _self | _parent | _top | _blank | <XML-Name>; Default value: _self; Animatable: yes"
				},
				"type": {
					"description": "A MIME type for the linked URL. Value type: <string>; Default value: none; Animatable: no"
				},
				"xlink:href": {
					"description": "The URL or URL fragment that the hyperlink points to. May be required for backwards compatibility for older browsers. Value type: <URL>; Default value: none; Animatable: yes",
					"deprecated": true
				}
			}
		},
		{
			"name": "svg:animate",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/animate",
			"description": "The <animate> SVG element provides a way to animate an attribute of an element over time.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGAnimationAdditionAttrs": ["additive", "accumulate"],
				"#SVGAnimationAttributeTargetAttrs": ["attributeName"],
				"#SVGAnimationEventAttrs": ["onbegin", "onend", "onrepeat"],
				"#SVGAnimationTargetElementAttrs": ["href"],
				"#SVGAnimationTimingAttrs": [
					"begin",
					"dur",
					"end",
					"min",
					"max",
					"restart",
					"repeatCount",
					"repeatDur",
					"fill"
				],
				"#SVGAnimationValueAttrs": ["calcMode", "values", "keyTimes", "keySplines", "from", "to", "by"],
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:animateMotion",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/animateMotion",
			"description": "The <animateMotion> SVG element provides a way to define how an element moves along a motion path. Note: To reuse an existing path, it will be necessary to use an <mpath> element inside the <animateMotion> element instead of the path attribute.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"oneOrMore": [":model(SVGDescriptive)", "svg|script"]
								},
								{
									"optional": "svg|mpath"
								}
							],
							[
								{
									"optional": "svg|mpath"
								},
								{
									"oneOrMore": [":model(SVGDescriptive)", "svg|script"]
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGAnimationAdditionAttrs": ["additive", "accumulate"],
				"#SVGAnimationEventAttrs": ["onbegin", "onend", "onrepeat"],
				"#SVGAnimationTargetElementAttrs": ["href"],
				"#SVGAnimationTimingAttrs": [
					"begin",
					"dur",
					"end",
					"min",
					"max",
					"restart",
					"repeatCount",
					"repeatDur",
					"fill"
				],
				"#SVGAnimationValueAttrs": ["calcMode", "values", "keyTimes", "keySplines", "from", "to", "by"],
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"keyPoints": {
					"description": "This attribute indicate, in the range [0,1], how far is the object along the path for each keyTimes associated values. Value type: <number>*; Default value: none; Animatable: no",
					"type": "<key-points>"
				},
				"origin": {
					"type": "<origin>",
					"defaultValue": "default"
				},
				"path": {
					"description": "This attribute defines the path of the motion, using the same syntax as the d attribute. Value type: <string>; Default value: none; Animatable: no",
					"type": "<svg-path>"
				},
				"rotate": {
					"description": "This attribute defines a rotation applied to the element animated along a path, usually to make it pointing in the direction of the animation. Value type: <number> | auto | auto-reverse; Default value: 0; Animatable: no",
					"type": "<rotate>"
				}
			}
		},
		{
			"name": "svg:animateTransform",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/animateTransform",
			"description": "The <animateTransform> SVG element animates a transformation attribute on its target element, thereby allowing animations to control translation, scaling, rotation, and/or skewing.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGAnimationAdditionAttrs": ["additive", "accumulate"],
				"#SVGAnimationAttributeTargetAttrs": ["attributeName"],
				"#SVGAnimationEventAttrs": ["onbegin", "onend", "onrepeat"],
				"#SVGAnimationTargetElementAttrs": ["href"],
				"#SVGAnimationTimingAttrs": [
					"begin",
					"dur",
					"end",
					"min",
					"max",
					"restart",
					"repeatCount",
					"repeatDur",
					"fill"
				],
				"#SVGAnimationValueAttrs": ["calcMode", "values", "keyTimes", "keySplines", "from", "to", "by"],
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"type": {
					"type": {
						"enum": ["translate", "scale", "rotate", "skewX", "skewY"]
					},
					"defaultValue": "translate"
				}
			}
		},
		{
			"name": "svg:circle",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/circle",
			"description": "The <circle> SVG element is an SVG basic shape, used to draw circles based on a center point and a radius.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false,
				"properties": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"cx",
					"cy",
					"r",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"cx": {
					"description": "The x-axis coordinate of the center of the circle. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"cy": {
					"description": "The y-axis coordinate of the center of the circle. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"pathLength": {
					"description": "The total length for the circle's circumference, in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				},
				"r": {
					"description": "The radius of the circle. A value lower or equal to zero disables rendering of the circle. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:clipPath",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/clipPath",
			"description": "The <clipPath> SVG element defines a clipping path, to be used by the clip-path property. A clipping path restricts the region to which paint can be applied. Conceptually, parts of the drawing that lie outside of the region bounded by the clipping path are not drawn.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGShape)",
							"svg|text",
							"svg|use",
							"svg|script"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGConditionalProcessingAttrs": ["requiredFeatures", "requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-profile",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"opacity",
					"overflow",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-rendering",
					"unicode-bidi",
					"visibility",
					"word-spacing",
					"writing-mode",
					"transform"
				]
			},
			"attributes": {
				"clipPathUnits": {
					"description": "Defines the coordinate system for the contents of the <clipPath> element. Value type: userSpaceOnUse | objectBoundingBox; Default value: userSpaceOnUse; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "userSpaceOnUse",
					"animatable": true
				},
				"externalResourcesRequired": {
					"type": {
						"enum": ["true", "false"]
					},
					"defaultValue": "true"
				}
			}
		},
		{
			"name": "svg:defs",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/defs",
			"description": "The <defs> SVG element is used to store graphical objects that will be used at a later time. Objects created inside a <defs> element are not rendered directly. To display them you have to reference them (with a <use> element for example). Graphical objects can be referenced from anywhere, however, defining these objects inside of a <defs> element promotes understandability of the SVG content and is beneficial to the overall accessibility of the document.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGShape)",
							":model(SVGStructural)",
							"svg|a",
							"svg|clipPath",
							"svg|filter",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:desc",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/desc",
			"description": "The <desc> SVG element provides an accessible, long-text description of any SVG container element or graphics element. Text in a <desc> element is not rendered as part of the graphic. If the element can be described by visible text, it is possible to reference that text with the aria-describedby attribute. If aria-describedby is used, it will take precedence over <desc>. The hidden text of a <desc> element can also be concatenated with the visible text of other elements using multiple IDs in an aria-describedby value. In that case, the <desc> element must provide an ID for reference.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"require": [":model(SVGDescriptive)", ":model(SVGNeverRendered)", "#text"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {}
		},
		{
			"name": "svg:discard",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/discard",
			"description": "SVG drawings and images are created using a wide array of elements which are dedicated to the construction, drawing, and layout of vector images and diagrams. Here you'll find reference documentation for each of the SVG elements.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"require": [":model(SVGDescriptive)", "svg|script"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"begin": {
					"type": "<begin-value-list>",
					"defaultValue": "0s"
				},
				"href": {
					"type": "URL"
				}
			}
		},
		{
			"name": "svg:ellipse",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/ellipse",
			"description": "The <ellipse> SVG element is an SVG basic shape, used to create ellipses based on a center coordinate, and both their x and y radius. Note: Ellipses are unable to specify the exact orientation of the ellipse (if, for example, you wanted to draw an ellipse tilted at a 45 degree angle), but it can be rotated by using the transform attribute.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-symbol",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"cx",
					"cy",
					"rx",
					"ry",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"cx": {
					"description": "The x position of the center of the ellipse. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"cy": {
					"description": "The y position of the center of the ellipse. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"pathLength": {
					"description": "This attribute lets specify the total length for the path, in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				},
				"rx": {
					"description": "The radius of the ellipse on the x axis. Value type: auto | <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"ry": {
					"description": "The radius of the ellipse on the y axis. Value type: auto | <length> | <percentage>; Default value: auto; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:feBlend",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feBlend",
			"description": "The <feBlend> SVG filter primitive composes two objects together ruled by a certain blending mode. This is similar to what is known from image editing software when blending two layers. The mode is defined by the mode attribute. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"in2": {
					"type": [
						{
							"enum": [
								"SourceGraphic",
								"SourceAlpha",
								"BackgroundImage",
								"BackgroundAlpha",
								"FillPaint",
								"StrokePaint"
							],
							"disallowToSurroundBySpaces": false
						},
						"<custom-ident>"
					],
					"animatable": true
				},
				"mode": {
					"type": "<blend-mode>",
					"defaultValue": "normal",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feColorMatrix",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feColorMatrix",
			"description": "The <feColorMatrix> SVG filter element changes colors based on a transformation matrix. Every pixel's color value [R,G,B,A] is matrix multiplied by a 5 by 5 color matrix to create new color [R',G',B',A']. Note: The prime symbol ' is used in mathematics indicate the result of a transformation. | R' | | r1 r2 r3 r4 r5 | | R | | G' | | g1 g2 g3 g4 g5 | | G | | B' | = | b1 b2 b3 b4 b5 | * | B | | A' | | a1 a2 a3 a4 a5 | | A | | 1 | | 0 0 0 0 1 | | 1 | In simplified terms, below is how each color channel in the new pixel is calculated. The last row is ignored because its values are constant. R' = r1*R + r2*G + r3*B + r4*A + r5 G' = g1*R + g2*G + g3*B + g4*A + g5 B' = b1*R + b2*G + b3*B + b4*A + b5 A' = a1*R + a2*G + a3*B + a4*A + a5 Take the amount of red in the new pixel, or R': It is the sum of: r1 times the old pixel's red R, r2 times the old pixel's green G, r3 times of the old pixel's blue B, r4 times the old pixel's alpha A, plus a shift r5. These specified amounts can be any real number, though the final R' will be clamped between 0 and 1. The same goes for G', B', and A'. R' = r1 * R + r2 * G + r3 * B + r4 * A + r5 New red = [ r1 * old red ] + [ r2 * old green ] + [ r3 * old Blue ] + [ r4 * old Alpha ] + [ shift of r5 ] If, say, we want to make a completely black image redder, we can make the r5 a positive real number x, boosting the redness on every pixel of the new image by x. An identity matrix looks like this: R G B A W R' | 1 0 0 0 0 | G' | 0 1 0 0 0 | B' | 0 0 1 0 0 | A' | 0 0 0 1 0 | In it, every new value is exactly 1 times its old value, with nothing else added. It is recommended to start manipulating the matrix from here. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"type": {
					"type": {
						"enum": ["matrix", "saturate", "hueRotate", "luminanceToAlpha"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "matrix",
					"animatable": true
				},
				"values": {
					"type": "<color-matrix>"
				}
			}
		},
		{
			"name": "svg:feComponentTransfer",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feComponentTransfer",
			"description": "The <feComponentTransfer> SVG filter primitive performs color-component-wise remapping of data for each pixel. It allows operations like brightness adjustment, contrast adjustment, color balance or thresholding. The calculations are performed on non-premultiplied color values. The colors are modified by changing each channel (R, G, B, and A) to the result of what the children <feFuncR>, <feFuncB>, <feFuncG>, and <feFuncA> return. If more than one of the same element is provided, the last one specified is used, and if no element is supplied to modify one of the channels, the effect is the same is if an identity transformation had been given for that channel. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGDescriptive)",
							"svg|feFuncA",
							"svg|feFuncR",
							"svg|feFuncB",
							"svg|feFuncG",
							"svg|script"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feComposite",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feComposite",
			"description": "The <feComposite> SVG filter primitive performs the combination of two input images pixel-wise in image space using one of the Porter-Duff compositing operations: over, in, atop, out, xor, lighter, or arithmetic. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead. The table below shows each of these operations using an image of the MDN logo composited with a red circle: Operation Description over The source graphic defined by the in attribute (the MDN logo) is placed over the destination graphic defined by the in2 attribute (the circle). This is the default operation, which will be used if no operation or an unsupported operation is specified. in The parts of the source graphic defined by the in attribute that overlap the destination graphic defined in the in2 attribute, replace the destination graphic. out The parts of the source graphic defined by the in attribute that fall outside the destination graphic defined in the in2 attribute, are displayed. atop The parts of the source graphic defined in the in attribute, which overlap the destination graphic defined in the in2 attribute, replace the destination graphic. The parts of the destination graphic that do not overlap with the source graphic stay untouched. xor The non-overlapping regions of the source graphic defined in the in attribute and the destination graphic defined in the in2 attribute are combined. lighter The sum of the source graphic defined in the in attribute and the destination graphic defined in the in2 attribute is displayed. arithmetic The arithmetic operation is useful for combining the output from the <feDiffuseLighting> and <feSpecularLighting> filters with texture data. If the arithmetic operation is chosen, each result pixel is computed using the following formula: result = k1*i1*i2 + k2*i1 + k3*i2 + k4 where: i1 and i2 indicate the corresponding pixel channel values of the input image, which map to in and in2 respectively k1, k2, k3, and k4 indicate the values of the attributes with the same name.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"in2": {
					"type": [
						{
							"enum": [
								"SourceGraphic",
								"SourceAlpha",
								"BackgroundImage",
								"BackgroundAlpha",
								"FillPaint",
								"StrokePaint"
							],
							"disallowToSurroundBySpaces": false
						},
						"<custom-ident>"
					],
					"animatable": true
				},
				"k1": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true,
					"ineffective": ":not([operator='arithmetic' i])"
				},
				"k2": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true,
					"ineffective": ":not([operator='arithmetic' i])"
				},
				"k3": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true,
					"ineffective": ":not([operator='arithmetic' i])"
				},
				"k4": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true,
					"ineffective": ":not([operator='arithmetic' i])"
				},
				"operator": {
					"type": {
						"enum": ["over", "in", "out", "atop", "xor", "lighter", "arithmetic"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "over",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feConvolveMatrix",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feConvolveMatrix",
			"description": "The <feConvolveMatrix> SVG filter primitive applies a matrix convolution filter effect. A convolution combines pixels in the input image with neighboring pixels to produce a resulting image. A wide variety of imaging operations can be achieved through convolutions, including blurring, edge detection, sharpening, embossing and beveling. A matrix convolution is based on an n-by-m matrix (the convolution kernel) which describes how a given pixel value in the input image is combined with its neighboring pixel values to produce a resulting pixel value. Each result pixel is determined by applying the kernel matrix to the corresponding source pixel and its neighboring pixels. The basic convolution formula which is applied to each color value for a given pixel is: colorX,Y=∑i=0orderY−1∑j=0orderX−1sourcex−targetX+j,y−targetY+i⋅kernelMatrixorderX−j−1,orderY−i−1divisor+bias⋅alphax,y\\left(color\\right)_{X , Y} = \\frac{\\sum_{i = 0}^{orderY - 1} \\sum_{j = 0}^{orderX - 1} \\left(source\\right)_{x - targetX + j , y - \\mathit{targetY} + i} \\cdot \\left(kernelMatrix\\right)_{orderX - j - 1, orderY - i - 1}}{divisor} + bias \\cdot \\left(alpha\\right)_{x , y} where \"orderX\" and \"orderY\" represent the X and Y values for the order attribute, and the other variables refer to the targetX, targetY, kernelMatrix, divisor, and bias attributes. Note in the above formulas that the values in the kernel matrix are applied such that the kernel matrix is rotated 180 degrees relative to the source and destination images in order to match convolution theory as described in many computer graphics textbooks. To illustrate, suppose you have an input image which is 5 pixels by 5 pixels, whose color values for one of the color channels are as follows: 0 20 40 235 235 100 120 140 235 235 200 220 240 235 235 225 225 255 255 255 225 225 255 255 255 and you define a 3-by-3 convolution kernel as follows: 1 2 3 4 5 6 7 8 9 Let's focus on the color value at the second row and second column of the image (source pixel value is 120). Assuming the simplest case (where the input image's pixel grid aligns perfectly with the kernel's pixel grid) and assuming default values for attributes divisor, targetX and targetY, then resulting color value will be: (9*0 + 8*20 + 7*40 + 6*100 + 5*120 + 4*140 + 3*200 + 2*220 + 1*240) / (9+8+7+6+5+4+3+2+1) Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"bias": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"divisor": {
					"type": "<number>",
					"animatable": true
				},
				"edgeMode": {
					"type": {
						"enum": ["duplicate", "wrap", "none"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "duplicate",
					"animatable": true
				},
				"kernelMatrix": {
					"type": "<list-of-numbers>",
					"animatable": true
				},
				"kernelUnitLength": {
					"type": "<number-optional-number>",
					"animatable": true,
					"deprecated": true
				},
				"order": {
					"type": "<number-optional-number>",
					"defaultValue": "3",
					"animatable": true
				},
				"preserveAlpha": {
					"type": {
						"enum": ["true", "false"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "false",
					"animatable": true
				},
				"targetX": {
					"type": "<integer>",
					"animatable": true
				},
				"targetY": {
					"type": "<integer>",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feDiffuseLighting",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDiffuseLighting",
			"description": "The <feDiffuseLighting> SVG filter primitive lights an image using the alpha channel as a bump map. The resulting image, which is an RGBA opaque image, depends on the light color, light position and surface geometry of the input bump map. The light map produced by this filter primitive can be combined with a texture image using the multiply term of the arithmetic operator of the <feComposite> filter primitive. Multiple light sources can be simulated by adding several of these light maps together before applying it to the texture image. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
								},
								{
									"require": ":model(SVGLightSource)"
								}
							],
							[
								{
									"require": ":model(SVGLightSource)"
								},
								{
									"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"diffuseConstant": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"kernelUnitLength": {
					"type": "<number-optional-number>",
					"animatable": true,
					"deprecated": true
				},
				"surfaceScale": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feDisplacementMap",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDisplacementMap",
			"description": "The <feDisplacementMap> SVG filter primitive uses the pixel values from the image from in2 to spatially displace the image from in. The formula for the transformation looks like this: P'(x,y) ← P(x + scale * (XC(x,y) - 0.5), y + scale * (YC(x,y) - 0.5)) where P(x,y) is the input image, in, and P'(x,y) is the destination. XC(x,y) and YC(x,y) are the component values of the channel designated by xChannelSelector and yChannelSelector. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"in2": {
					"type": [
						{
							"enum": [
								"SourceGraphic",
								"SourceAlpha",
								"BackgroundImage",
								"BackgroundAlpha",
								"FillPaint",
								"StrokePaint"
							],
							"disallowToSurroundBySpaces": false
						},
						"<custom-ident>"
					],
					"animatable": true
				},
				"scale": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"xChannelSelector": {
					"type": {
						"enum": ["R", "G", "B", "A"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "A",
					"animatable": true
				},
				"yChannelSelector": {
					"type": {
						"enum": ["R", "G", "B", "A"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "A",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feDistantLight",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDistantLight",
			"description": "The <feDistantLight> SVG element defines a distant light source that can be used within a lighting filter primitive: <feDiffuseLighting> or <feSpecularLighting>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"]
			},
			"attributes": {
				"azimuth": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"elevation": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feDropShadow",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feDropShadow",
			"description": "The <feDropShadow> SVG filter primitive creates a drop shadow of the input image. It can only be used inside a <filter> element. Note: The drop shadow color and opacity can be changed by using the flood-color and flood-opacity presentation attributes. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"dx": {
					"type": "<number>",
					"defaultValue": "2",
					"animatable": true
				},
				"dy": {
					"type": "<number>",
					"defaultValue": "2",
					"animatable": true
				},
				"stdDeviation": {
					"type": "<number-optional-number>",
					"defaultValue": "2",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feFlood",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFlood",
			"description": "The <feFlood> SVG filter primitive fills the filter subregion with the color and opacity defined by flood-color and flood-opacity.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"flood-color": {
					"type": "<color>",
					"defaultValue": "black"
				},
				"flood-opacity": {
					"type": "<alpha-value>",
					"defaultValue": "1"
				}
			}
		},
		{
			"name": "svg:feFuncA",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncA",
			"description": "The <feFuncA> SVG filter primitive defines the transfer function for the alpha component of the input graphic of its parent <feComponentTransfer> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"],
				"#SVGTransferFunctionAttrs": [
					"type",
					"tableValues",
					"slope",
					"intercept",
					"amplitude",
					"exponent",
					"offset"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feFuncB",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncB",
			"description": "The <feFuncB> SVG filter primitive defines the transfer function for the blue component of the input graphic of its parent <feComponentTransfer> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"],
				"#SVGTransferFunctionAttrs": [
					"type",
					"tableValues",
					"slope",
					"intercept",
					"amplitude",
					"exponent",
					"offset"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feFuncG",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncG",
			"description": "The <feFuncG> SVG filter primitive defines the transfer function for the green component of the input graphic of its parent <feComponentTransfer> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"],
				"#SVGTransferFunctionAttrs": [
					"type",
					"tableValues",
					"slope",
					"intercept",
					"amplitude",
					"exponent",
					"offset"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feFuncR",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feFuncR",
			"description": "The <feFuncR> SVG filter primitive defines the transfer function for the red component of the input graphic of its parent <feComponentTransfer> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"],
				"#SVGTransferFunctionAttrs": [
					"type",
					"tableValues",
					"slope",
					"intercept",
					"amplitude",
					"exponent",
					"offset"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feGaussianBlur",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feGaussianBlur",
			"description": "The <feGaussianBlur> SVG filter primitive blurs the input image by the amount specified in stdDeviation, which defines the bell-curve. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"edgeMode": {
					"type": {
						"enum": ["duplicate", "wrap", "none"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "none"
				},
				"stdDeviation": {
					"type": "<number-optional-number>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feImage",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feImage",
			"description": "The <feImage> SVG filter primitive fetches image data from an external source and provides the pixel data as output (meaning if the external source is an SVG image, it is rasterized.)",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGDescriptive)",
							"svg|animate",
							"svg|animateTransform",
							"svg|script",
							"svg|set"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"crossorigin": {
					"type": {
						"enum": ["anonymous", "use-credentials"],
						"disallowToSurroundBySpaces": false
					}
				},
				"externalResourcesRequired": {
					"type": {
						"enum": ["true", "false"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "true"
				},
				"href": {
					"type": "URL",
					"animatable": true
				},
				"preserveAspectRatio": {
					"type": "<preserve-aspect-ratio>",
					"defaultValue": "xMidYMid meet",
					"animatable": true
				},
				"xlink:href": {
					"type": "URL",
					"animatable": true,
					"deprecated": true
				}
			}
		},
		{
			"name": "svg:feMerge",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feMerge",
			"description": "The <feMerge> SVG element allows filter effects to be applied concurrently instead of sequentially. This is achieved by other filters storing their output via the result attribute and then accessing it in a <feMergeNode> child. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|feMergeNode", "svg|script"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feMergeNode",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feMergeNode",
			"description": "The <feMergeNode> SVG takes the result of another filter to be processed by its parent <feMerge>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"],
				"#SVGFilterPrimitiveAttrs": ["in"]
			},
			"attributes": {}
		},
		{
			"name": "svg:feMorphology",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feMorphology",
			"description": "The <feMorphology> SVG filter primitive is used to erode or dilate the input image. Its usefulness lies especially in fattening or thinning effects. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"operator": {
					"type": {
						"enum": ["erode", "dilate"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "erode",
					"animatable": true
				},
				"radius": {
					"type": "<number-optional-number>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feOffset",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feOffset",
			"description": "The <feOffset> SVG filter primitive enables offsetting an input image relative to its current position. The input image as a whole is offset by the values specified in the dx and dy attributes.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"dx": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"dy": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:fePointLight",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/fePointLight",
			"description": "The <fePointLight> SVG element defines a light source which allows to create a point light effect. It can be used within a lighting filter primitive: <feDiffuseLighting> or <feSpecularLighting>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"]
			},
			"attributes": {
				"x": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"y": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"z": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feSpecularLighting",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feSpecularLighting",
			"description": "The <feSpecularLighting> SVG filter primitive lights a source graphic using the alpha channel as a bump map. The resulting image is an RGBA image based on the light color. The lighting calculation follows the standard specular component of the Phong lighting model. The resulting image depends on the light color, light position and surface geometry of the input bump map. The result of the lighting calculation is added. The filter primitive assumes that the viewer is at infinity in the z direction. This filter primitive produces an image which contains the specular reflection part of the lighting calculation. Such a map is intended to be combined with a texture using the add term of the arithmetic <feComposite> method. Multiple light sources can be simulated by adding several of these light maps before applying it to the texture image. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"choice": [
							[
								{
									"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
								},
								{
									"require": ":model(SVGLightSource)"
								}
							],
							[
								{
									"require": ":model(SVGLightSource)"
								},
								{
									"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
								}
							]
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"kernelUnitLength": {
					"type": "<number-optional-number>",
					"animatable": true
				},
				"specularConstant": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"specularExponent": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"surfaceScale": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feSpotLight",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feSpotLight",
			"description": "The <feSpotLight> SVG element defines a light source that can be used to create a spotlight effect. It is used within a lighting filter primitive: <feDiffuseLighting> or <feSpecularLighting>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space"]
			},
			"attributes": {
				"limitingConeAngle": {
					"type": "<number>",
					"animatable": true
				},
				"pointsAtX": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"pointsAtY": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"pointsAtZ": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"specularExponent": {
					"type": "<number>",
					"defaultValue": "1",
					"animatable": true
				},
				"x": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"y": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"z": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:feTile",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feTile",
			"description": "The <feTile> SVG filter primitive allows to fill a target rectangle with a repeated, tiled pattern of an input image. The effect is similar to the one of a <pattern>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result", "in"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:feTurbulence",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feTurbulence",
			"description": "The <feTurbulence> SVG filter primitive creates an image using the Perlin turbulence function. It allows the synthesis of artificial textures like clouds or marble. The resulting image will fill the entire filter primitive subregion. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|animate", "svg|script", "svg|set"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height", "result"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"baseFrequency": {
					"type": "<number-optional-number>",
					"defaultValue": "0",
					"animatable": true
				},
				"numOctaves": {
					"type": "<integer>",
					"defaultValue": "1",
					"animatable": true
				},
				"seed": {
					"type": "<number>",
					"defaultValue": "0",
					"animatable": true
				},
				"stitchTiles": {
					"type": {
						"enum": ["noStitch", "stitch"]
					},
					"defaultValue": "noStitch",
					"animatable": true
				},
				"type": {
					"type": {
						"enum": ["fractalNoise", "turbulence"]
					},
					"defaultValue": "turbulence",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:filter",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/filter",
			"description": "The <filter> SVG element defines a custom filter effect by grouping atomic filter primitives. It is never rendered itself, but must be used by the filter attribute on SVG elements, or the filter CSS property for SVG/HTML elements.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGDescriptive)",
							":model(SVGFilterPrimitive)",
							"svg|animate",
							"svg|script",
							"svg|set"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"externalResourcesRequired": {
					"type": {
						"enum": ["true", "false"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "true"
				},
				"filterRes": {
					"type": "<number-optional-number>",
					"animatable": true,
					"deprecated": true
				},
				"filterUnits": {
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "objectBoundingBox",
					"animatable": true
				},
				"height": {
					"defaultValue": "120%"
				},
				"primitiveUnits": {
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"]
					},
					"defaultValue": "userSpaceOnUse",
					"animatable": true
				},
				"width": {
					"defaultValue": "120%"
				},
				"x": {
					"defaultValue": "-10%"
				},
				"y": {
					"defaultValue": "-10%"
				}
			}
		},
		{
			"name": "svg:foreignObject",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/foreignObject",
			"description": "The <foreignObject> SVG element includes elements from a different XML namespace. In the context of a browser, it is most likely (X)HTML.",
			"categories": [],
			"contentModel": {
				"contents": true
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"x",
					"y",
					"width",
					"height",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"height": {
					"description": "The height of the foreignObject. Value type: <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"width": {
					"description": "The width of the foreignObject. Value type: <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"x": {
					"description": "The x coordinate of the foreignObject. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"y": {
					"description": "The y coordinate of the foreignObject. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:g",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/g",
			"description": "The <g> SVG element is a container used to group other SVG elements. Transformations applied to the <g> element are performed on its child elements, and its attributes are inherited by its children. It can also group multiple elements to be referenced later with the <use> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGShape)",
							":model(SVGStructural)",
							"svg|a",
							"svg|clipPath",
							"svg|filter",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {}
		},
		{
			"name": "svg:image",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/image",
			"description": "The <image> SVG element includes images inside SVG documents. It can display raster image files or other SVG files. The only image formats SVG software must support are JPEG, PNG, and other SVG files. Animated GIF behavior is undefined. SVG files displayed with <image> are treated as an image: external resources aren't loaded, :visited styles aren't applied, and they cannot be interactive. To include dynamic SVG elements, try <use> with an external URL. To include SVG files and run scripts inside them, try <object> inside of <foreignObject>. Note: The HTML spec defines <image> as a synonym for <img> while parsing HTML. This specific element and its behavior only apply inside SVG documents or inline SVGs.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							"svg|clipPath",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "img",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"x",
					"y",
					"width",
					"height",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"crossorigin": {
					"description": "Defines the value of the credentials flag for CORS requests. Value type: [ anonymous | use-credentials ]?; Default value: None; Animatable: yes",
					"type": {
						"enum": ["", "anonymous", "use-credentials"],
						"sameStates": {
							"anonymous": [""]
						}
					}
				},
				"decoding": {
					"description": "Provides a hint to the browser as to whether it should perform image decoding synchronously or asynchronously. Value type: async | sync | auto; Default value: auto; Animatable: yes"
				},
				"fetchpriority": {
					"description": "Provides a hint of the relative priority to use when fetching an external image. Allowed values: high Fetches the external image at a high priority relative to other external resources. low Fetches the external image at a low priority relative to other external resources. auto Doesn't set a preference for the fetch priority. It is used if no value or an invalid value is set. This is the default.",
					"experimental": true,
					"nonStandard": true
				},
				"height": {
					"description": "The height the image renders at. Unlike HTML's <img>, this attribute is required. Value type: <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"href": {
					"description": "Points at a URL for the image file. Value type: <URL>; Default value: none; Animatable: no",
					"type": "URL"
				},
				"preserveAspectRatio": {
					"description": "Controls how the image is scaled. Value type: (none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax) (meet | slice)?; Default value: xMidYMid meet; Animatable: yes",
					"type": "<preserve-aspect-ratio>",
					"defaultValue": "xMidYMid meet"
				},
				"width": {
					"description": "The width the image renders at. Unlike HTML's <img>, this attribute is required. Value type: <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"x": {
					"description": "Positions the image horizontally from the origin. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"xlink:href": {
					"description": "Points at a URL for the image file. Value type: <URL>; Default value: none; Animatable: no",
					"deprecated": true
				},
				"y": {
					"description": "Positions the image vertically from the origin. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:line",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/line",
			"description": "The <line> SVG element is an SVG basic shape used to create a line connecting two points.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-symbol",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"pathLength": {
					"description": "Defines the total path length in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				},
				"x1": {
					"description": "Defines the x-axis coordinate of the line starting point. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes",
					"type": ["<svg-length>", "<percentage>", "<number>"],
					"defaultValue": "0",
					"animatable": true
				},
				"x2": {
					"description": "Defines the x-axis coordinate of the line ending point. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes",
					"type": ["<svg-length>", "<percentage>", "<number>"],
					"defaultValue": "0",
					"animatable": true
				},
				"y1": {
					"description": "Defines the y-axis coordinate of the line starting point. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes",
					"type": ["<svg-length>", "<percentage>", "<number>"],
					"defaultValue": "0",
					"animatable": true
				},
				"y2": {
					"description": "Defines the y-axis coordinate of the line ending point. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes",
					"type": ["<svg-length>", "<percentage>", "<number>"],
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:linearGradient",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/linearGradient",
			"description": "The <linearGradient> SVG element lets authors define linear gradients to apply to other SVG elements.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGDescriptive)",
							"svg|animate",
							"svg|animateTransform",
							"svg|script",
							"svg|set",
							"svg|stop",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"gradientTransform": {
					"description": "This attribute provides additional transformation to the gradient coordinate system. Value type: <transform-list>; Default value: identity transform; Animatable: yes",
					"type": "<transform-list>",
					"animatable": true
				},
				"gradientUnits": {
					"description": "This attribute defines the coordinate system for attributes x1, x2, y1, y2 Value type: userSpaceOnUse | objectBoundingBox; Default value: objectBoundingBox; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "objectBoundingBox",
					"animatable": true
				},
				"href": {
					"description": "This attribute defines a reference to another <linearGradient> element that will be used as a template. Value type: <URL>; Default value: none; Animatable: yes",
					"type": "URL",
					"animatable": true
				},
				"spreadMethod": {
					"description": "This attribute indicates how the gradient behaves if it starts or ends inside the bounds of the shape containing the gradient. Value type: pad | reflect | repeat; Default value: pad; Animatable: yes",
					"type": {
						"enum": ["pad", "reflect", "repeat"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "pad",
					"animatable": true
				},
				"x1": {
					"description": "This attribute defines the x coordinate of the starting point of the vector gradient along which the linear gradient is drawn. Value type: <length>; Default value: 0%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0%",
					"animatable": true
				},
				"x2": {
					"description": "This attribute defines the x coordinate of the ending point of the vector gradient along which the linear gradient is drawn. Value type: <length>; Default value: 100%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "100%",
					"animatable": true
				},
				"xlink:href": {
					"description": "An <IRI> reference to another <linearGradient> element that will be used as a template. Value type: <IRI>; Default value: none; Animatable: yes",
					"deprecated": true
				},
				"y1": {
					"description": "This attribute defines the y coordinate of the starting point of the vector gradient along which the linear gradient is drawn. Value type: <length>; Default value: 0%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0%",
					"animatable": true
				},
				"y2": {
					"description": "This attribute defines the y coordinate of the ending point of the vector gradient along which the linear gradient is drawn. Value type: <length>; Default value: 0%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0%",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:marker",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/marker",
			"description": "The <marker> SVG element defines a graphic used for drawing arrowheads or polymarkers on a given <path>, <line>, <polyline> or <polygon> element. Markers can be attached to shapes using the marker-start, marker-mid, and marker-end properties.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGShape)",
							":model(SVGStructural)",
							"svg|a",
							"svg|clipPath",
							"svg|filter",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"markerHeight": {
					"description": "This attribute defines the height of the marker viewport. Value type: <length>; Default value: 3; Animatable: yes",
					"type": ["<svg-length>", "<percentage>", "<number>"],
					"defaultValue": "3",
					"animatable": true
				},
				"markerUnits": {
					"description": "This attribute defines the coordinate system for the attributes markerWidth, markerHeight and the contents of the <marker>. Value type: userSpaceOnUse | strokeWidth; Default value: strokeWidth; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "strokeWidth"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "strokeWidth"
				},
				"markerWidth": {
					"description": "This attribute defines the width of the marker viewport. Value type: <length>; Default value: 3; Animatable: yes",
					"type": ["<svg-length>", "<percentage>", "<number>"],
					"defaultValue": "3",
					"animatable": true
				},
				"orient": {
					"description": "This attribute defines the orientation of the marker relative to the shape it is attached to. Value type: auto | auto-start-reverse | <angle>; Default value: 0; Animatable: yes",
					"type": [
						{
							"enum": ["auto", "auto-start-reverse"],
							"disallowToSurroundBySpaces": false
						},
						"<angle>",
						"<number>"
					],
					"defaultValue": "0",
					"animatable": true
				},
				"preserveAspectRatio": {
					"description": "This attribute defines how the svg fragment must be deformed if it is embedded in a container with a different aspect ratio. Value type: (none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax) (meet | slice)?; Default value: xMidYMid meet; Animatable: yes",
					"type": "<preserve-aspect-ratio>",
					"defaultValue": "xMidYMid meet",
					"animatable": true
				},
				"refX": {
					"description": "This attribute defines the x coordinate for the reference point of the marker. Value type: left | center | right | <coordinate>; Default value: 0; Animatable: yes",
					"type": [
						"<percentage>",
						"<number>",
						{
							"enum": ["left", "center", "right"],
							"disallowToSurroundBySpaces": false
						}
					],
					"defaultValue": "0",
					"animatable": true
				},
				"refY": {
					"description": "This attribute defines the y coordinate for the reference point of the marker. Value type: top | center | bottom | <coordinate>; Default value: 0; Animatable: yes",
					"type": [
						"<percentage>",
						"<number>",
						{
							"enum": ["left", "center", "right"],
							"disallowToSurroundBySpaces": false
						}
					],
					"defaultValue": "0",
					"animatable": true
				},
				"viewBox": {
					"description": "This attribute defines the bound of the SVG viewport for the current SVG fragment. Value type: <list-of-numbers>; Default value: none; Animatable: yes",
					"type": "<view-box>",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:mask",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/mask",
			"description": "The <mask> SVG element defines a mask for compositing the current object into the background. A mask is used/referenced using the mask property and CSS mask-image property.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGShape)",
							":model(SVGStructural)",
							":model(SVGGradient)",
							"svg|a",
							"svg|altGlyphDef",
							"svg|clipPath",
							"svg|color-profile",
							"svg|cursor",
							"svg|filter",
							"svg|font",
							"svg|font-face",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|pattern",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#SVGConditionalProcessingAttrs": ["requiredFeatures", "requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "xml:base", "xml:lang", "xml:space", "class", "style"],
				"#SVGFilterPrimitiveAttrs": ["x", "y", "width", "height"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-profile",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"opacity",
					"overflow",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-rendering",
					"unicode-bidi",
					"visibility",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"height": {
					"description": "This attribute defines the height of the masking area. Value type: <length>; Default value: 120%; Animatable: yes",
					"defaultValue": "120%"
				},
				"mask-type": {
					"description": "This attribute defines the mask mode for the contents for the contents of the <mask>. Value type: alpha | luminance; Default value: luminance; Animatable: yes"
				},
				"maskContentUnits": {
					"description": "This attribute defines the coordinate system for the contents of the <mask>. Value type: userSpaceOnUse | objectBoundingBox; Default value: userSpaceOnUse; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"]
					},
					"defaultValue": "userSpaceOnUse",
					"animatable": true
				},
				"maskUnits": {
					"description": "This attribute defines the coordinate system for attributes x, y, width and height on the <mask>. Value type: userSpaceOnUse | objectBoundingBox; Default value: objectBoundingBox; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "objectBoundingBox",
					"animatable": true
				},
				"width": {
					"description": "This attribute defines the width of the masking area. Value type: <length>; Default value: 120%; Animatable: yes",
					"defaultValue": "120%"
				},
				"x": {
					"description": "This attribute defines the x-axis coordinate of the top-left corner of the masking area. Value type: <coordinate>; Default value: -10%; Animatable: yes",
					"defaultValue": "-10%"
				},
				"y": {
					"description": "This attribute defines the y-axis coordinate of the top-left corner of the masking area. Value type: <coordinate>; Default value: -10%; Animatable: yes",
					"defaultValue": "-10%"
				}
			}
		},
		{
			"name": "svg:metadata",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/metadata",
			"description": "The <metadata> SVG element adds metadata to SVG content. Metadata is structured information about data. The contents of <metadata> should be elements from other XML namespaces such as RDF, FOAF, etc.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", ":model(SVGNeverRendered)", "#text"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {}
		},
		{
			"name": "svg:mpath",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/mpath",
			"description": "The <mpath> SVG sub-element for the <animateMotion> element provides the ability to reference an external <path> element as the definition of a motion path.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"href": {
					"type": "URL"
				}
			}
		},
		{
			"name": "svg:path",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/path",
			"description": "The <path> SVG element is the generic element to define a shape. All the basic shapes can be created with a path element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-symbol",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"d",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"d": {
					"description": "This attribute defines the shape of the path. Value type: <string>; Default value: ''; Animatable: yes"
				},
				"pathLength": {
					"description": "This attribute lets authors specify the total length for the path, in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:pattern",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/pattern",
			"description": "The <pattern> SVG element defines a graphics object which can be redrawn at repeated x- and y-coordinate intervals (\"tiled\") to cover an area. The <pattern> is referenced by the fill and/or stroke attributes on other graphics elements to fill or stroke those elements with the referenced pattern.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGShape)",
							":model(SVGStructural)",
							"svg|a",
							"svg|clipPath",
							"svg|filter",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"height": {
					"description": "This attribute determines the height of the pattern tile. Value type: <length>; Default value: 0; Animatable: yes",
					"defaultValue": "0"
				},
				"href": {
					"description": "This attribute reference a template pattern that provides default values for the <pattern> attributes. Value type: <URL>; Default value: none; Animatable: yes",
					"type": "URL",
					"animatable": true
				},
				"patternContentUnits": {
					"description": "This attribute defines the coordinate system for the contents of the <pattern>. Value type: userSpaceOnUse | objectBoundingBox; Default value: userSpaceOnUse; Animatable: yes Note: This attribute has no effect if a viewBox attribute is specified on the <pattern> element.",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "userSpaceOnUse",
					"animatable": true
				},
				"patternTransform": {
					"description": "This attribute contains the definition of an optional additional transformation from the pattern coordinate system onto the target coordinate system. Value type: <transform-list>; Default value: identity transform; Animatable: yes",
					"type": "<transform-list>",
					"animatable": true
				},
				"patternUnits": {
					"description": "This attribute defines the coordinate system for attributes x, y, width, and height. Value type: userSpaceOnUse | objectBoundingBox; Default value: objectBoundingBox; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "objectBoundingBox",
					"animatable": true
				},
				"preserveAspectRatio": {
					"description": "This attribute defines how the SVG fragment must be deformed if it is embedded in a container with a different aspect ratio. Value type: (none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax) (meet | slice)?; Default value: xMidYMid meet; Animatable: yes",
					"type": "<preserve-aspect-ratio>",
					"defaultValue": "xMidYMid meet",
					"animatable": true
				},
				"viewBox": {
					"description": "This attribute defines the bound of the SVG viewport for the pattern fragment. Value type: <list-of-numbers>; Default value: none; Animatable: yes",
					"type": "<view-box>",
					"animatable": true
				},
				"width": {
					"description": "This attribute determines the width of the pattern tile. Value type: <length>; Default value: 0; Animatable: yes",
					"defaultValue": "0"
				},
				"x": {
					"description": "This attribute determines the x coordinate shift of the pattern tile. Value type: <length>; Default value: 0; Animatable: yes"
				},
				"xlink:href": {
					"description": "This attribute references a template pattern that provides default values for the <pattern> attributes. Value type: <URL>; Default value: none; Animatable: yes Note: For browsers implementing href, if both href and xlink:href are set, xlink:href will be ignored and only href will be used.",
					"deprecated": true
				},
				"y": {
					"description": "This attribute determines the y coordinate shift of the pattern tile. Value type: <length>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:polygon",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/polygon",
			"description": "The <polygon> SVG element defines a closed shape consisting of a set of connected straight line segments. The last point is connected to the first point. For open shapes, see the <polyline> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-symbol",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"pathLength": {
					"description": "This attribute lets specify the total length for the path, in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				},
				"points": {
					"description": "This attribute defines the list of points (pairs of x,y absolute coordinates) required to draw the polygon. Value type: <number>+; Default value: \"\"; Animatable: yes",
					"type": "<points>",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:polyline",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/polyline",
			"description": "The <polyline> SVG element is an SVG basic shape that creates straight lines connecting several points. Typically a polyline is used to create open shapes as the last point doesn't have to be connected to the first point. For closed shapes see the <polygon> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-symbol",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"pathLength": {
					"description": "This attribute lets specify the total length for the path, in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				},
				"points": {
					"description": "This attribute defines the list of points (pairs of x,y absolute coordinates) required to draw the polyline Value type: <number>+; Default value: \"\"; Animatable: yes",
					"type": "<points>",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:radialGradient",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/radialGradient",
			"description": "The <radialGradient> SVG element lets authors define radial gradients that can be applied to fill or stroke of graphical elements. Note: Don't be confused with CSS radial-gradient() as CSS gradients can only apply to HTML elements where SVG gradient can only apply to SVG elements.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGDescriptive)",
							"svg|animate",
							"svg|animateTransform",
							"svg|script",
							"svg|set",
							"svg|stop",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"cx": {
					"description": "This attribute defines the x coordinate of the end circle of the radial gradient. Value type: <length>; Default value: 50%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "50%",
					"animatable": true
				},
				"cy": {
					"description": "This attribute defines the y coordinate of the end circle of the radial gradient. Value type: <length>; Default value: 50%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "50%",
					"animatable": true
				},
				"fr": {
					"description": "This attribute defines the radius of the start circle of the radial gradient. The gradient will be drawn such that the 0% <stop> is mapped to the perimeter of the start circle. Value type: <length>; Default value: 0%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "0%",
					"animatable": true
				},
				"fx": {
					"description": "This attribute defines the x coordinate of the start circle of the radial gradient. Value type: <length>; Default value: Same as cx; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"animatable": true
				},
				"fy": {
					"description": "This attribute defines the y coordinate of the start circle of the radial gradient. Value type: <length>; Default value: Same as cy; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"animatable": true
				},
				"gradientTransform": {
					"description": "This attribute provides additional transformation to the gradient coordinate system. Value type: <transform-list>; Default value: identity transform; Animatable: yes",
					"type": "<transform-list>",
					"animatable": true
				},
				"gradientUnits": {
					"description": "This attribute defines the coordinate system for attributes cx, cy, r, fx, fy, fr Value type: userSpaceOnUse | objectBoundingBox; Default value: objectBoundingBox; Animatable: yes",
					"type": {
						"enum": ["userSpaceOnUse", "objectBoundingBox"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "objectBoundingBox",
					"animatable": true
				},
				"href": {
					"description": "This attribute defines a reference to another <radialGradient> element that will be used as a template. Value type: <URL>; Default value: none; Animatable: yes",
					"type": "URL",
					"animatable": true
				},
				"r": {
					"description": "This attribute defines the radius of the end circle of the radial gradient. The gradient will be drawn such that the 100% <stop> is mapped to the perimeter of the end circle. Value type: <length>; Default value: 50%; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"defaultValue": "50%",
					"animatable": true
				},
				"spreadMethod": {
					"description": "This attribute indicates how the gradient behaves if it starts or ends inside the bounds of the shape containing the gradient. Value type: pad | reflect | repeat; Default value: pad; Animatable: yes",
					"type": {
						"enum": ["pad", "reflect", "repeat"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "pad",
					"animatable": true
				},
				"xlink:href": {
					"description": "An <IRI> reference to another <radialGradient> element that will be used as a template. Value type: <IRI>; Default value: none; Animatable: yes",
					"deprecated": true
				}
			}
		},
		{
			"name": "svg:rect",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/rect",
			"description": "The <rect> SVG element is a basic SVG shape that draws rectangles, defined by their position, width, and height. The rectangles may have their corners rounded.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-symbol",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"x",
					"y",
					"width",
					"height",
					"rx",
					"ry",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"height": {
					"description": "The height of the rect. Value type: auto | <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"pathLength": {
					"description": "The total length of the rectangle's perimeter, in user units. Value type: <number>; Default value: none; Animatable: yes",
					"type": "<number>",
					"animatable": true
				},
				"rx": {
					"description": "The horizontal corner radius of the rect. Defaults to ry if it is specified. Value type: auto | <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"ry": {
					"description": "The vertical corner radius of the rect. Defaults to rx if it is specified. Value type: auto | <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"width": {
					"description": "The width of the rect. Value type: auto | <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"x": {
					"description": "The x coordinate of the rect. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"y": {
					"description": "The y coordinate of the rect. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:script",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/script",
			"description": "The <script> SVG element allows to add scripts to an SVG document. Note: While SVG's script element is equivalent to the HTML <script> element, it has some discrepancies, like it uses the href attribute instead of src and it doesn't support ECMAScript modules so far (See browser compatibility below for details)",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGNeverRendered)", ":model(SVGStructurallyExternal)", "#text"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"crossorigin": {
					"description": "This attribute defines CORS settings as define for the HTML <script> element. Value type: [ anonymous | use-credentials ]?; Default value: ?; Animatable: yes",
					"type": {
						"enum": ["anonymous", "use-credentials", ""],
						"disallowToSurroundBySpaces": false
					},
					"animatable": true
				},
				"fetchpriority": {
					"description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Fetches the external script at a high priority relative to other external scripts. low Fetches the external script at a low priority relative to other external scripts. auto Doesn't set a preference for the fetch priority. It is used if no value or an invalid value is set. This is the default.",
					"experimental": true,
					"nonStandard": true
				},
				"href": {
					"description": "The URL to the script to load. Value type: <URL>; Default value: none; Animatable: no",
					"type": "URL"
				},
				"type": {
					"description": "This attribute defines type of the script language to use. Value type: <media-type>; Default value: application/ecmascript; Animatable: no",
					"type": "MIMEType",
					"defaultValue": "application/ecmascript"
				},
				"xlink:href": {
					"description": "The URL to the script to load. Value type: <URL>; Default value: none; Animatable: no",
					"deprecated": true
				}
			}
		},
		{
			"name": "svg:set",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/set",
			"description": "The <set> SVG element provides a method of setting the value of an attribute for a specified duration. It supports all attribute types, including those that cannot reasonably be interpolated, such as string and boolean values. For attributes that can be reasonably be interpolated, the <animate> is usually preferred. Note: The <set> element is non-additive. The additive and accumulate attributes are not allowed, and will be ignored if specified.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", "svg|script"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGAnimationAttributeTargetAttrs": ["attributeName"],
				"#SVGAnimationEventAttrs": ["onbegin", "onend", "onrepeat"],
				"#SVGAnimationTargetElementAttrs": ["href"],
				"#SVGAnimationTimingAttrs": [
					"begin",
					"dur",
					"end",
					"min",
					"max",
					"restart",
					"repeatCount",
					"repeatDur",
					"fill"
				],
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"to": {
					"description": "This attribute defines the value to be applied to the target attribute for the duration of the animation. The value must match the requirements of the target attribute. Value type: <anything>; Default value: none; Animatable: no",
					"type": "NoEmptyAny"
				}
			}
		},
		{
			"name": "svg:stop",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/stop",
			"description": "The <stop> SVG element defines a color and its position to use on a gradient. This element is always a child of a <linearGradient> or <radialGradient> element.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": ["svg:animate", "svg|animateColor", "svg|script", "svg|set", "svg|style"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"offset": {
					"description": "This attribute defines where the gradient stop is placed along the gradient vector. Value type: <number> | <percentage>; Default value: 0; Animatable: yes",
					"type": ["<number>", "<percentage>"],
					"defaultValue": "0",
					"animatable": true
				},
				"stop-color": {
					"description": "This attribute defines the color of the gradient stop. It can be used as a CSS property. Value type: <color>; Default value: black; Animatable: yes",
					"type": "<color>",
					"defaultValue": "black",
					"animatable": true
				},
				"stop-opacity": {
					"description": "This attribute defines the opacity of the gradient stop. It can be used as a CSS property. Value type: <opacity-value>; Default value: 1; Animatable: yes",
					"type": "<'opacity'>",
					"defaultValue": "1",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:style",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/style",
			"description": "The <style> SVG element allows style sheets to be embedded directly within SVG content. Note: SVG's style element has the same attributes as the corresponding element in HTML (see HTML's <style> element).",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": "#text"
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"media": {
					"description": "This attribute defines to which media the style applies. Value type: <media-query-list>; Default value: all; Animatable: no",
					"type": "<media-query-list>",
					"defaultValue": "all"
				},
				"title": {
					"description": "This attribute is the title of the style sheet which can be used to switch between alternate style sheets. Value type: <string>; Default value: none; Animatable: no",
					"type": "Any"
				},
				"type": {
					"description": "This attribute defines type of the style sheet language to use as a media type string. Value type: <media-type>; Default value: text/css; Animatable: no",
					"type": "MIMEType",
					"defaultValue": "text/css"
				}
			}
		},
		{
			"name": "svg:svg",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/svg",
			"description": "The <svg> SVG element is a container that defines a new coordinate system and viewport. It is used as the outermost element of SVG documents, but it can also be used to embed an SVG fragment inside an SVG or HTML document. This element is for creating new SVG documents. If you have an existing SVG document to embed in another document via URL, use <img>, <object>, or <image>. Note: The xmlns attribute is only required on the outermost svg element of SVG documents, or inside HTML documents with XML serialization. It is unnecessary for inner svg elements or inside HTML documents with HTML serialization.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGShape)",
							":model(SVGStructural)",
							"svg|a",
							"svg|clipPath",
							"svg|filter",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-document",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style", "xmlns"],
				"#SVGPresentationAttrs": [
					"x",
					"y",
					"width",
					"height",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"baseProfile": {
					"description": "The minimum SVG language profile that the document requires. Value type: <string>; Default value: none; Animatable: no",
					"deprecated": true,
					"type": "Any"
				},
				"contentScriptType": {
					"type": "Any",
					"defaultValue": "application/ecmascript",
					"deprecated": true
				},
				"contentStyleType": {
					"type": "Any",
					"defaultValue": "text/css",
					"deprecated": true
				},
				"height": {
					"description": "The displayed height of the rectangular viewport. (Not the height of its coordinate system.) Value type: <length> | <percentage>; Default value: auto; Animatable: yes",
					"defaultValue": "auto"
				},
				"onunload": {
					"type": "FunctionBody"
				},
				"preserveAspectRatio": {
					"description": "How the svg fragment must be deformed if it is displayed with a different aspect ratio. Value type: (none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax) (meet | slice)?; Default value: xMidYMid meet; Animatable: yes",
					"type": "<preserve-aspect-ratio>",
					"defaultValue": "xMidYMid meet",
					"animatable": true
				},
				"version": {
					"description": "Which version of SVG is used for the inner content of the element. Value type: <number>; Default value: none; Animatable: no",
					"deprecated": true,
					"type": "Any"
				},
				"viewBox": {
					"description": "The SVG viewport coordinates for the current SVG fragment. Value type: <list-of-numbers>; Default value: none; Animatable: yes",
					"type": "<view-box>",
					"animatable": true
				},
				"width": {
					"description": "The displayed width of the rectangular viewport. (Not the width of its coordinate system.) Value type: <length> | <percentage>; Default value: auto; Animatable: yes",
					"defaultValue": "auto"
				},
				"x": {
					"description": "The displayed x coordinate of the svg container. No effect on outermost svg elements. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"y": {
					"description": "The displayed y coordinate of the svg container. No effect on outermost svg elements. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:switch",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/switch",
			"description": "The <switch> SVG element evaluates any requiredFeatures, requiredExtensions and systemLanguage attributes on its direct child elements in order, and then renders the first child where these attributes evaluate to true. Other direct children will be bypassed and therefore not rendered. If a child element is a container element, like <g>, then its subtree is also processed/rendered or bypassed/not rendered. Note: The display and visibility properties have no effect on <switch> element processing. In particular, setting display:none on a child has no effect on the true/false testing for <switch> processing.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGShape)",
							"svg|a",
							"svg|foreignObject",
							"svg|g",
							"svg|image",
							"svg|svg",
							"svg|switch",
							"svg|text",
							"svg|use"
						]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"requiredExtensions": {
					"description": "A space-separated list of URL values referencing the language extensions the user agent must support for the element to be rendered."
				},
				"systemLanguage": {
					"description": "A comma-separated list of supported language tags."
				}
			}
		},
		{
			"name": "svg:symbol",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/symbol",
			"description": "The <symbol> SVG element is used to define graphical template objects which can be instantiated by a <use> element. The use of <symbol> elements for graphics that are used multiple times in the same document adds structure and semantics. Documents that are rich in structure may be rendered graphically, as speech, or as Braille, and thus promote accessibility. Note: A <symbol> element itself is not meant to be rendered. Only instances of a <symbol> element (i.e., a reference to a <symbol> by a <use> element) are rendered. That means that some browsers could refuse to directly display a <symbol> element even if the CSS display property tells otherwise.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGShape)",
							":model(SVGStructural)",
							"svg|a",
							"svg|clipPath",
							"svg|filter",
							"svg|foreignObject",
							"svg|image",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style",
							"svg|switch",
							"svg|text",
							"svg|view"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-object",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": ["x", "y", "width", "height"]
			},
			"attributes": {
				"height": {
					"description": "This attribute determines the height of the symbol. Value type: <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"preserveAspectRatio": {
					"description": "This attribute defines how the svg fragment must be deformed if it is embedded in a container with a different aspect ratio. Value type: (none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax) (meet | slice)?; Default value: xMidYMid meet; Animatable: yes",
					"type": "<preserve-aspect-ratio>",
					"defaultValue": "xMidYMid meet"
				},
				"refX": {
					"description": "This attribute determines the x coordinate of the reference point of the symbol. Value type: <length> | <percentage> | left | center | right; Default value: None; Animatable: yes",
					"type": [
						"<svg-length>",
						"<percentage>",
						"<number>",
						{
							"enum": ["left", "center", "right"]
						}
					]
				},
				"refY": {
					"description": "This attribute determines the y coordinate of the reference point of the symbol. Value type: <length> | <percentage> | top | center | bottom; Default value: None; Animatable: yes",
					"type": [
						"<svg-length>",
						"<percentage>",
						"<number>",
						{
							"enum": ["top", "center", "bottom"]
						}
					]
				},
				"viewBox": {
					"description": "This attribute defines the bound of the SVG viewport for the current symbol. Value type: <list-of-numbers>; Default value: none; Animatable: yes",
					"type": "<view-box>"
				},
				"width": {
					"description": "This attribute determines the width of the symbol. Value type: <length> | <percentage>; Default value: auto; Animatable: yes"
				},
				"x": {
					"description": "This attribute determines the x coordinate of the symbol. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				},
				"y": {
					"description": "This attribute determines the y coordinate of the symbol. Value type: <length> | <percentage>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:text",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/text",
			"description": "The <text> SVG element draws a graphics element consisting of text. It's possible to apply a gradient, pattern, clipping path, mask, or filter to <text>, like any other SVG graphics element. If text is included in SVG not inside of a <text> element, it is not rendered. This is different than being hidden by default, as setting the display property won't show the text. Note: The <text> element does not wrap by default, to make this happen it needs to be styled with the white-space CSS property.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							"#text",
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							":model(SVGTextContentChild)",
							"svg|a",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"dx": {
					"description": "Shifts the text position horizontally from a previous text element, or shifts the position of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: none; Animatable: yes",
					"type": "<text-coordinate>",
					"animatable": true
				},
				"dy": {
					"description": "Shifts the text position vertically from a previous text element, or shifts the position of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: none; Animatable: yes",
					"type": "<text-coordinate>",
					"animatable": true
				},
				"lengthAdjust": {
					"description": "How the text is stretched or compressed to fit the width defined by the textLength attribute. Value type: spacing | spacingAndGlyphs; Default value: spacing; Animatable: yes",
					"type": {
						"enum": ["spacing", "spacingAndGlyphs"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "spacing",
					"animatable": true
				},
				"rotate": {
					"description": "Rotates orientation of each individual glyph. Can rotate glyphs individually. Value type: <list-of-number>; Default value: none; Animatable: yes",
					"type": "<list-of-numbers>",
					"animatable": true
				},
				"textLength": {
					"description": "A width that the text should be scaled to fit. Value type: <length> | <percentage>; Default value: none; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"animatable": true
				},
				"x": {
					"description": "The x coordinate of the starting point of the text baseline, or the x coordinate of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: 0; Animatable: yes",
					"type": "<text-coordinate>",
					"defaultValue": "0",
					"animatable": true
				},
				"y": {
					"description": "The y coordinate of the starting point of the text baseline, or the y coordinate of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: 0; Animatable: yes",
					"type": "<text-coordinate>",
					"defaultValue": "0",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:textPath",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/textPath",
			"description": "The <textPath> SVG element is used to render text along the shape of a <path> element. The text must be enclosed in the <textPath> element and its href attribute is used to reference the desired <path>.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							"#text",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|a",
							"svg|animate",
							"svg|clipPath",
							"svg|marker",
							"svg|mask",
							"svg|script",
							"svg|set",
							"svg|style",
							"svg|tspan"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"href": {
					"description": "The URL to the path or basic shape on which to render the text. If the path attribute is set, href has no effect. Value type: <URL>; Default value: none; Animatable: yes",
					"type": "URL",
					"animatable": true
				},
				"lengthAdjust": {
					"description": "Where length adjustment should be applied to the text: the space between glyphs, or both the space and the glyphs themselves. Value type: spacing | spacingAndGlyphs; Default value: spacing; Animatable: yes",
					"type": {
						"enum": ["spacing", "spacingAndGlyphs"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "spacing",
					"animatable": true
				},
				"method": {
					"description": "Which method to render individual glyphs along the path. Value type: align | stretch; Default value: align; Animatable: yes",
					"type": {
						"enum": ["align", "stretch"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "align",
					"animatable": true
				},
				"path": {
					"description": "The path on which the text should be rendered. Value type: <path_data>; Default value: none; Animatable: yes",
					"experimental": true,
					"type": "<svg-path>",
					"animatable": true
				},
				"side": {
					"description": "Which side of the path the text should be rendered. Value type: left | right; Default value: left; Animatable: yes",
					"experimental": true,
					"type": {
						"enum": ["left", "right"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "left",
					"animatable": true
				},
				"spacing": {
					"description": "How space between glyphs should be handled. Value type: auto | exact; Default value: exact; Animatable: yes",
					"type": {
						"enum": ["auto", "exact"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "exact",
					"animatable": true
				},
				"startOffset": {
					"description": "How far the beginning of the text should be offset from the beginning of the path. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"animatable": true
				},
				"textLength": {
					"description": "The width of the space into which the text will render. Value type: <length> | <percentage> | <number>; Default value: auto; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"animatable": true
				}
			}
		},
		{
			"name": "svg:title",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/title",
			"description": "The <title> SVG element provides an accessible, short-text description of any SVG container element or graphics element. Text in a <title> element is not rendered as part of the graphic, but browsers usually display it as a tooltip. If an element can be described by visible text, it is recommended to reference that text with an aria-labelledby attribute rather than using the <title> element. Note: For backward compatibility with SVG 1.1, <title> elements should be the first child element of their parent.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGDescriptive)", ":model(SVGNeverRendered)", "#text"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#GlobalEventAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {}
		},
		{
			"name": "svg:tspan",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/tspan",
			"description": "The <tspan> SVG element defines a subtext within a <text> element or another <tspan> element. It allows for adjustment of the style and/or position of that subtext as needed. Note: The <tspan> element does not wrap by default, to make this happen it needs to be styled with the white-space CSS property.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							"#text",
							":model(SVGDescriptive)",
							":model(SVGPaintServer)",
							"svg|a",
							"svg|animate",
							"svg|script",
							"svg|set",
							"svg|style",
							"svg|tspan"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "group",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				]
			},
			"attributes": {
				"dx": {
					"description": "Shifts the text position horizontally from a previous text element, or shifts the position of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: none; Animatable: yes",
					"type": "<text-coordinate>",
					"animatable": true
				},
				"dy": {
					"description": "Shifts the text position vertically from a previous text element, or shifts the position of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: none; Animatable: yes",
					"type": "<text-coordinate>",
					"animatable": true
				},
				"lengthAdjust": {
					"description": "How the text is stretched or compressed to fit the width defined by the textLength attribute. Value type: spacing | spacingAndGlyphs; Default value: spacing; Animatable: yes",
					"type": {
						"enum": ["spacing", "spacingAndGlyphs"],
						"disallowToSurroundBySpaces": false
					},
					"defaultValue": "spacing",
					"animatable": true
				},
				"rotate": {
					"description": "Rotates orientation of each individual glyph. Can rotate glyphs individually. Value type: <list-of-number>; Default value: none; Animatable: yes",
					"type": "<list-of-numbers>",
					"animatable": true
				},
				"textLength": {
					"description": "A width that the text should be scaled to fit. Value type: <length> | <percentage>; Default value: none; Animatable: yes",
					"type": ["<svg-length>", "<percentage>"],
					"animatable": true
				},
				"x": {
					"description": "The x coordinate of the starting point of the text baseline, or the x coordinate of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: 0; Animatable: yes",
					"type": "<text-coordinate>",
					"animatable": true
				},
				"y": {
					"description": "The y coordinate of the starting point of the text baseline, or the y coordinate of each individual glyph if a list of values is provided. Value type: List of (<length> | <percentage>); Default value: 0; Animatable: yes",
					"type": "<text-coordinate>",
					"animatable": true
				}
			}
		},
		{
			"name": "svg:use",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/use",
			"description": "The <use> element takes nodes from within an SVG document, and duplicates them somewhere else. The effect is the same as if the nodes were deeply cloned into a non-exposed DOM, then pasted where the <use> element is, much like cloned <template> elements.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [
							":model(SVGAnimation)",
							":model(SVGDescriptive)",
							"svg|clipPath",
							"svg|mask",
							"svg|script",
							"svg|style"
						]
					}
				]
			},
			"aria": {
				"implicitRole": "graphics-object",
				"permittedRoles": {
					"core-aam": true,
					"graphics-aam": true
				}
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGConditionalProcessingAttrs": ["requiredExtensions", "systemLanguage"],
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"],
				"#SVGPresentationAttrs": [
					"x",
					"y",
					"width",
					"height",
					"alignment-baseline",
					"baseline-shift",
					"clip",
					"clip-path",
					"clip-rule",
					"color",
					"color-interpolation",
					"color-interpolation-filters",
					"color-rendering",
					"cursor",
					"direction",
					"display",
					"dominant-baseline",
					"enable-background",
					"fill",
					"fill-opacity",
					"fill-rule",
					"filter",
					"flood-color",
					"flood-opacity",
					"font",
					"font-family",
					"font-size",
					"font-size-adjust",
					"font-stretch",
					"font-style",
					"font-variant",
					"font-weight",
					"glyph-orientation-horizontal",
					"glyph-orientation-vertical",
					"image-rendering",
					"isolation",
					"kerning",
					"letter-spacing",
					"lighting-color",
					"marker",
					"marker-end",
					"marker-mid",
					"marker-start",
					"mask",
					"mask-type",
					"opacity",
					"overflow",
					"paint-order",
					"pointer-events",
					"shape-rendering",
					"stop-color",
					"stop-opacity",
					"stroke",
					"stroke-dasharray",
					"stroke-dashoffset",
					"stroke-linecap",
					"stroke-linejoin",
					"stroke-miterlimit",
					"stroke-opacity",
					"stroke-width",
					"text-anchor",
					"text-decoration",
					"text-overflow",
					"text-rendering",
					"transform",
					"transform-origin",
					"unicode-bidi",
					"vector-effect",
					"visibility",
					"white-space",
					"word-spacing",
					"writing-mode"
				],
				"#XLinkAttrs": ["xlink:href", "xlink:title"]
			},
			"attributes": {
				"height": {
					"description": "The height of the <use> element. Value type: <length>; Default value: 0; Animatable: yes"
				},
				"href": {
					"description": "The URL to an element/fragment that needs to be duplicated. See Usage notes for details on common pitfalls. Value type: <URL>; Default value: none; Animatable: yes",
					"type": "URL"
				},
				"width": {
					"description": "The width of the <use> element. Value type: <length>; Default value: 0; Animatable: yes"
				},
				"x": {
					"description": "The x coordinate of an additional final offset transformation applied to the <use> element. Value type: <coordinate>; Default value: 0; Animatable: yes"
				},
				"xlink:href": {
					"description": "An <IRI> reference to an element/fragment that needs to be duplicated. If both href and xlink:href are present, the value given by href is used. Value type: <IRI>; Default value: none; Animatable: yes Warning: Since SVG 2, the xlink:href attribute is deprecated in favor of href. See xlink:href page for more information.",
					"deprecated": true
				},
				"y": {
					"description": "The y coordinate of an additional final offset transformation applied to the <use> element. Value type: <coordinate>; Default value: 0; Animatable: yes"
				}
			}
		},
		{
			"name": "svg:view",
			"namespace": "http://www.w3.org/2000/svg",
			"cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/view",
			"description": "The <view> SVG element defines a particular view of an SVG document. A specific view can be displayed by referencing the <view> element's id as the target fragment of a URL.",
			"categories": [],
			"contentModel": {
				"contents": [
					{
						"zeroOrMore": [":model(SVGAnimation)", ":model(SVGDescriptive)", "svg|script", "svg|style"]
					}
				]
			},
			"aria": {
				"implicitRole": false,
				"permittedRoles": false
			},
			"omission": false,
			"globalAttrs": {
				"#ARIAAttrs": true,
				"#GlobalEventAttrs": true,
				"#HTMLGlobalAttrs": true,
				"#SVGCoreAttrs": ["id", "tabindex", "autofocus", "lang", "xml:space", "class", "style"]
			},
			"attributes": {
				"preserveAspectRatio": {
					"description": "This attribute defines how the SVG fragment must be deformed if it is embedded in a container with a different aspect ratio. Value type: (none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax) (meet | slice)?; Default value: xMidYMid meet; Animatable: yes",
					"type": "<preserve-aspect-ratio>"
				},
				"viewBox": {
					"description": "This attribute defines the bound of the SVG viewport for the pattern fragment. Value type: <list-of-numbers>; Default value: none; Animatable: yes",
					"type": "<view-box>"
				},
				"viewTarget": {
					"type": "Any",
					"deprecated": true
				},
				"zoomAndPan": {
					"description": "This attribute specifies whether the SVG document can be magnified and panned. Value type: disable | magnify; Default value: magnify; Animatable: no",
					"deprecated": true,
					"type": {
						"enum": ["disable", "magnify"]
					},
					"defaultValue": "magnify"
				}
			}
		}
	]
}
