/*
 * Copyright (c) 2020-2021, Andreas Kling <andreas@ladybird.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/FlyString.h>
#include <LibWeb/Export.h>

namespace Web::HTML {
namespace AttributeNames {

#define ENUMERATE_HTML_ATTRIBUTES                                                                  \
    __ENUMERATE_HTML_ATTRIBUTE(abbr, "abbr")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(accept, "accept")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(accept_charset, "accept-charset")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(accesskey, "accesskey")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(action, "action")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(align, "align")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(alink, "alink")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(allow, "allow")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(allowfullscreen, "allowfullscreen")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(alt, "alt")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(archive, "archive")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(as, "as")                                                           \
    __ENUMERATE_HTML_ATTRIBUTE(async, "async")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(autocapitalize, "autocapitalize")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(autocomplete, "autocomplete")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(autocorrect, "autocorrect")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(autofocus, "autofocus")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(autoplay, "autoplay")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(axis, "axis")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(background, "background")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(behavior, "behavior")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(bgcolor, "bgcolor")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(border, "border")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(bordercolor, "bordercolor")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(bottommargin, "bottommargin")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(cellpadding, "cellpadding")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(cellspacing, "cellspacing")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(char_, "char")                                                      \
    __ENUMERATE_HTML_ATTRIBUTE(charoff, "charoff")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(charset, "charset")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(checked, "checked")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(cite, "cite")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(class_, "class")                                                    \
    __ENUMERATE_HTML_ATTRIBUTE(classid, "classid")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(clear, "clear")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(closedby, "closedby")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(code, "code")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(codebase, "codebase")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(codetype, "codetype")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(color, "color")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(cols, "cols")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(colspan, "colspan")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(command, "command")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(commandfor, "commandfor")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(compact, "compact")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(content, "content")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(contenteditable, "contenteditable")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(controls, "controls")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(coords, "coords")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(crossorigin, "crossorigin")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(data, "data")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(datetime, "datetime")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(declare, "declare")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(decoding, "decoding")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(default_, "default")                                                \
    __ENUMERATE_HTML_ATTRIBUTE(defaultchecked, "defaultchecked")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(defaultselected, "defaultselected")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(defer, "defer")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(dir, "dir")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(direction, "direction")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(dirname, "dirname")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(disabled, "disabled")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(download, "download")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(draggable, "draggable")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(enctype, "enctype")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(ended, "ended")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(enterkeyhint, "enterkeyhint")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(event, "event")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(exportparts, "exportparts")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(face, "face")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(fetchpriority, "fetchpriority")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(for_, "for")                                                        \
    __ENUMERATE_HTML_ATTRIBUTE(form, "form")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(formaction, "formaction")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(formenctype, "formenctype")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(formmethod, "formmethod")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(formnovalidate, "formnovalidate")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(formtarget, "formtarget")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(frame, "frame")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(frameborder, "frameborder")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(headers, "headers")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(headingoffset, "headingoffset")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(headingreset, "headingreset")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(height, "height")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(hidden, "hidden")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(high, "high")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(href, "href")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(hreflang, "hreflang")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(hspace, "hspace")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(http_equiv, "http-equiv")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(id, "id")                                                           \
    __ENUMERATE_HTML_ATTRIBUTE(imagesizes, "imagesizes")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(imagesrcset, "imagesrcset")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(indeterminate, "indeterminate")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(inert, "inert")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(inputmode, "inputmode")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(integrity, "integrity")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(is, "is")                                                           \
    __ENUMERATE_HTML_ATTRIBUTE(iscontenteditable, "iscontenteditable")                             \
    __ENUMERATE_HTML_ATTRIBUTE(ismap, "ismap")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(itemscope, "itemscope")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(kind, "kind")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(label, "label")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(lang, "lang")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(language, "language")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(leftmargin, "leftmargin")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(link, "link")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(list, "list")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(loading, "loading")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(longdesc, "longdesc")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(loop, "loop")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(low, "low")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(lowsrc, "lowsrc")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(marginheight, "marginheight")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(marginwidth, "marginwidth")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(max, "max")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(maxlength, "maxlength")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(media, "media")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(method, "method")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(min, "min")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(minlength, "minlength")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(multiple, "multiple")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(muted, "muted")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(name, "name")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(nohref, "nohref")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(nomodule, "nomodule")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(nonce, "nonce")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(noresize, "noresize")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(noshade, "noshade")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(novalidate, "novalidate")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(nowrap, "nowrap")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onabort, "onabort")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onafterprint, "onafterprint")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onanimationcancel, "onanimationcancel")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onanimationend, "onanimationend")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onanimationiteration, "onanimationiteration")                       \
    __ENUMERATE_HTML_ATTRIBUTE(onanimationstart, "onanimationstart")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onauxclick, "onauxclick")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforeinput, "onbeforeinput")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforematch, "onbeforematch")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforeprint, "onbeforeprint")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforetoggle, "onbeforetoggle")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforeunload, "onbeforeunload")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onblur, "onblur")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(oncancel, "oncancel")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(oncanplay, "oncanplay")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(oncanplaythrough, "oncanplaythrough")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onchange, "onchange")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onclick, "onclick")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onclose, "onclose")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(oncommand, "oncommand")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(oncontextlost, "oncontextlost")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(oncontextmenu, "oncontextmenu")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(oncontextrestored, "oncontextrestored")                             \
    __ENUMERATE_HTML_ATTRIBUTE(oncopy, "oncopy")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(oncuechange, "oncuechange")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(oncut, "oncut")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(ondblclick, "ondblclick")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(ondrag, "ondrag")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(ondragend, "ondragend")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(ondragenter, "ondragenter")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(ondragleave, "ondragleave")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(ondragover, "ondragover")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(ondragstart, "ondragstart")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(ondrop, "ondrop")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(ondurationchange, "ondurationchange")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onemptied, "onemptied")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onended, "onended")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onerror, "onerror")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onfocus, "onfocus")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onfocusin, "onfocusin")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onfocusout, "onfocusout")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onformdata, "onformdata")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(ongamepadconnected, "ongamepadconnected")                           \
    __ENUMERATE_HTML_ATTRIBUTE(ongamepaddisconnected, "ongamepaddisconnected")                     \
    __ENUMERATE_HTML_ATTRIBUTE(ongotpointercapture, "ongotpointercapture")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onhashchange, "onhashchange")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(oninput, "oninput")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(oninvalid, "oninvalid")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onkeydown, "onkeydown")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onkeypress, "onkeypress")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onkeyup, "onkeyup")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onlanguagechange, "onlanguagechange")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onload, "onload")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onloadeddata, "onloadeddata")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onloadedmetadata, "onloadedmetadata")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onloadstart, "onloadstart")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onlostpointercapture, "onlostpointercapture")                       \
    __ENUMERATE_HTML_ATTRIBUTE(onmessage, "onmessage")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onmessageerror, "onmessageerror")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onmousedown, "onmousedown")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseenter, "onmouseenter")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseleave, "onmouseleave")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onmousemove, "onmousemove")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseout, "onmouseout")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseover, "onmouseover")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseup, "onmouseup")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onoffline, "onoffline")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(ononline, "ononline")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onpagehide, "onpagehide")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpagereveal, "onpagereveal")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onpageshow, "onpageshow")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpageswap, "onpageswap")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpaste, "onpaste")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onpause, "onpause")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onplay, "onplay")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onplaying, "onplaying")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onpointercancel, "onpointercancel")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerdown, "onpointerdown")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerenter, "onpointerenter")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerleave, "onpointerleave")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onpointermove, "onpointermove")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerout, "onpointerout")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerover, "onpointerover")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerrawupdate, "onpointerrawupdate")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerup, "onpointerup")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onpopstate, "onpopstate")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onprogress, "onprogress")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(onratechange, "onratechange")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onrejectionhandled, "onrejectionhandled")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onreset, "onreset")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onresize, "onresize")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onscroll, "onscroll")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onscrollend, "onscrollend")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onsecuritypolicyviolation, "onsecuritypolicyviolation")             \
    __ENUMERATE_HTML_ATTRIBUTE(onseeked, "onseeked")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onseeking, "onseeking")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onselect, "onselect")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onselectionchange, "onselectionchange")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onslotchange, "onslotchange")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onstalled, "onstalled")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onstorage, "onstorage")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onsubmit, "onsubmit")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onsuspend, "onsuspend")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(ontimeupdate, "ontimeupdate")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(ontoggle, "ontoggle")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onunhandledrejection, "onunhandledrejection")                       \
    __ENUMERATE_HTML_ATTRIBUTE(onunload, "onunload")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(onvolumechange, "onvolumechange")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onwaiting, "onwaiting")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkitanimationend, "onwebkitanimationend")                       \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkitanimationiteration, "onwebkitanimationiteration")           \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkitanimationstart, "onwebkitanimationstart")                   \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkittransitionend, "onwebkittransitionend")                     \
    __ENUMERATE_HTML_ATTRIBUTE(onwheel, "onwheel")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(open, "open")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(optimum, "optimum")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(part, "part")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(pattern, "pattern")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(paused, "paused")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(ping, "ping")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(placeholder, "placeholder")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(playsinline, "playsinline")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(popover, "popover")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(popovertarget, "popovertarget")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(popovertargetaction, "popovertargetaction")                         \
    __ENUMERATE_HTML_ATTRIBUTE(poster, "poster")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(preload, "preload")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(readonly, "readonly")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(referrerpolicy, "referrerpolicy")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(rel, "rel")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(required, "required")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(rev, "rev")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(reversed, "reversed")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(rightmargin, "rightmargin")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(rows, "rows")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(rowspan, "rowspan")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(rules, "rules")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(sandbox, "sandbox")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(scheme, "scheme")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(scope, "scope")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(scrollamount, "scrollamount")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(scrolldelay, "scrolldelay")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(scrolling, "scrolling")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(seeking, "seeking")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(selected, "selected")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootclonable, "shadowrootclonable")                           \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootcustomelementregistry, "shadowrootcustomelementregistry") \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootdelegatesfocus, "shadowrootdelegatesfocus")               \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootmode, "shadowrootmode")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootserializable, "shadowrootserializable")                   \
    __ENUMERATE_HTML_ATTRIBUTE(shape, "shape")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(size, "size")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(sizes, "sizes")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(slot, "slot")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(span, "span")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(spellcheck, "spellcheck")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(src, "src")                                                         \
    __ENUMERATE_HTML_ATTRIBUTE(srcdoc, "srcdoc")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(srclang, "srclang")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(srcset, "srcset")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(standby, "standby")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(start, "start")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(step, "step")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(style, "style")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(summary, "summary")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(switch_, "switch")                                                  \
    __ENUMERATE_HTML_ATTRIBUTE(tabindex, "tabindex")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(target, "target")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(text, "text")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(title, "title")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(topmargin, "topmargin")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(translate, "translate")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(truespeed, "truespeed")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(type, "type")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(usemap, "usemap")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(valign, "valign")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(value, "value")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(valuetype, "valuetype")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(version, "version")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(vlink, "vlink")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(vspace, "vspace")                                                   \
    __ENUMERATE_HTML_ATTRIBUTE(width, "width")                                                     \
    __ENUMERATE_HTML_ATTRIBUTE(willvalidate, "willvalidate")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(wrap, "wrap")                                                       \
    __ENUMERATE_HTML_ATTRIBUTE(writingsuggestions, "writingsuggestions")

#define __ENUMERATE_HTML_ATTRIBUTE(name, attribute) extern WEB_API FlyString name;
ENUMERATE_HTML_ATTRIBUTES
#undef __ENUMERATE_HTML_ATTRIBUTE

}

WEB_API bool is_boolean_attribute(FlyString const& attribute);

}
