/ddfuzz

Created Mon, 20 Feb 2023 06:34:51 +0100
4676 Words

ddfuzz

Deep DOM fuzzer for browser fuzzing

Techniques

  • Rotating properties
  • Reference fuzzing (Use After Free)
  • Rotating values
  • Cloning
  • Freezing
  • Using seed to reference objects in DOM
  • Accept every URL request to allow navigation rewrites

Fuzz targets

  • DOM (element tree + properties)
  • Webfonts
  • CSS
  • Unicode
// ddfuzz
// Deep DOM fuzzer for browser fuzzing
// © Jean Pereira <counterswarm.de>

const WebSocket = require('ws');
const fs = require('fs');
const glob = require('glob');
const path = require('path');
const http = require('http');
const express = require('express');
const { execSync } = require('child_process');
const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });
const crypto = require('crypto');
const minimatch = require('minimatch');

const serverBind = 4444

const fuzzMutationCount = Math.floor(Math.random() * 6)

const enableDOMFuzz = true

const minCloneLength = Math.floor(Math.random() * 1000)
const minRemoveLength = Math.floor(Math.random() * 1000)
const minLinkLength = Math.floor(Math.random() * 1000)
const minFreezeLength = Math.floor(Math.random() * 1000)
const linesOfCode = Math.floor(Math.random() * 5000)
const maxRemovedElements = Math.floor(Math.random() * 100)
const maxElements = Math.floor(Math.random() * 100)

const webFonts = "fonts/*"

let removedVars = 0

let fuzzTarget = process.argv[2]

const elementList = [
  "doctype",
  "a",
  "abbr",
  "acronym",
  "address",
  "applet",
  "area",
  "article",
  "aside",
  "audio",
  "b",
  "base",
  "basefont",
  "bdi",
  "bdo",
  "big",
  "blockquote",
  "body",
  "br",
  "button",
  "canvas",
  "caption",
  "center",
  "cite",
  "code",
  "col",
  "colgroup",
  "data",
  "datalist",
  "dd",
  "del",
  "details",
  "dfn",
  "dialog",
  "dir",
  "div",
  "dl",
  "dt",
  "em",
  "embed",
  "fieldset",
  "figcaption",
  "figure",
  "font",
  "footer",
  "form",
  "frame",
  "frameset",
  "h1 - h6",
  "head",
  "header",
  "hr",
  "html",
  "i",
  "iframe",
  "img",
  "input",
  "ins",
  "kbd",
  "label",
  "legend",
  "li",
  "link",
  "main",
  "map",
  "mark",
  "meta",
  "meter",
  "nav",
  "noframes",
  "noscript",
  "object",
  "ol",
  "optgroup",
  "option",
  "output",
  "p",
  "param",
  "picture",
  "pre",
  "progress",
  "q",
  "rp",
  "rt",
  "ruby",
  "s",
  "samp",
  "script",
  "section",
  "select",
  "small",
  "source",
  "span",
  "strike",
  "strong",
  "style",
  "sub",
  "summary",
  "sup",
  "svg",
  "table",
  "tbody",
  "td",
  "template",
  "textarea",
  "tfoot",
  "th",
  "thead",
  "time",
  "title",
  "tr",
  "track",
  "tt",
  "u",
  "ul",
  "var",
  "video",
  "wbr"
]

const defaultParams = [
  "0",
  "1",
  "'a'",
  "0xffffffffffffffff",
  "\"a\"",
  "\"aaaaaaaaaaa\"",
  "{}",
  "Infinity",
  "'100%'",
  "'30px'",
  "'20em'",
  "'80vh'",
  "'normal'",
  "400",
  "\"720px 99px\"",
  "'content-box'",
  "\`0px none rgb(0, 0, 0)\`",
  "\`green\`",
  "\"#00FF00\"",
  "\`baseline\`",
  "\"none 0s ease 0s 1 normal none running\"",
  "2",
  "\"2\"",
  "99999999",
  "NaN",
  "yellow",
  "undefined",
  "null",
  "true",
  "false"
]

let targetProps = [
  "AbortSignal.abort",
  "AbortSignal.timeout",
  "AudioDecoder.isConfigSupported",
  "AudioEncoder.isConfigSupported",
  "BarcodeDetector.getSupportedFormats",
  "BluetoothUUID.canonicalUUID",
  "BluetoothUUID.getCharacteristic",
  "BluetoothUUID.getDescriptor",
  "BluetoothUUID.getService",
  "caches.delete",
  "caches.has",
  "caches.keys",
  "caches.match",
  "caches.open",
  "chrome.loadTimes",
  "chrome.csi",
  "chrome.app",
  "chrome.app.isInstalled",
  "chrome.app.getDetails",
  "chrome.app.getIsInstalled",
  "chrome.app.installState",
  "chrome.app.runningState",
  "chrome.app.InstallState",
  "chrome.app.InstallState.DISABLED",
  "chrome.app.InstallState.INSTALLED",
  "chrome.app.InstallState.NOT_INSTALLED",
  "chrome.app.RunningState",
  "clientInformation.getGamepads",
  "clientInformation.javaEnabled",
  "clientInformation.sendBeacon",
  "clientInformation.vibrate",
  "clientInformation.clearAppBadge",
  "clientInformation.getBattery",
  "clientInformation.getUserMedia",
  "clientInformation.requestMIDIAccess",
  "clientInformation.requestMediaKeySystemAccess",
  "clientInformation.setAppBadge",
  "clientInformation.webkitGetUserMedia",
  "clientInformation.getInstalledRelatedApps",
  "clientInformation.registerProtocolHandler",
  "clientInformation.unregisterProtocolHandler",
  "cookieStore.delete",
  "cookieStore.get",
  "cookieStore.getAll",
  "cookieStore.set",
  "cookieStore.addEventListener",
  "cookieStore.dispatchEvent",
  "cookieStore.removeEventListener",
  "crypto.getRandomValues",
  "crypto.randomUUID",
  "customElements.define",
  "customElements.get",
  "customElements.upgrade",
  "customElements.whenDefined",
  "console.debug",
  "console.error",
  "console.info",
  "console.log",
  "console.warn",
  "console.dir",
  "console.dirxml",
  "console.table",
  "console.trace",
  "console.group",
  "console.groupCollapsed",
  "console.groupEnd",
  "console.clear",
  "console.count",
  "console.countReset",
  "console.assert",
  "console.profile",
  "console.profileEnd",
  "console.time",
  "console.timeLog",
  "console.timeEnd",
  "console.timeStamp",
  "console.context",
  "console.createTask",
  "console.memory",
  "constructor.TEMPORARY",
  "constructor.PERSISTENT",
  "CropTarget.fromElement",
  "CSS.Hz",
  "CSS.Q",
  "CSS.ch",
  "CSS.cm",
  "CSS.deg",
  "CSS.dpcm",
  "CSS.dpi",
  "CSS.dppx",
  "CSS.em",
  "CSS.escape",
  "CSS.ex",
  "CSS.fr",
  "CSS.grad",
  "CSS.in",
  "CSS.kHz",
  "CSS.mm",
  "CSS.ms",
  "CSS.number",
  "CSS.pc",
  "CSS.percent",
  "CSS.pt",
  "CSS.px",
  "CSS.rad",
  "CSS.registerProperty",
  "CSS.rem",
  "CSS.s",
  "CSS.supports",
  "CSS.turn",
  "CSS.vh",
  "CSS.vmax",
  "CSS.vmin",
  "CSS.vw",
  "CSS.highlights",
  "CSS.highlights.clear",
  "CSS.highlights.delete",
  "CSS.highlights.entries",
  "CSS.highlights.forEach",
  "CSS.highlights.get",
  "CSS.highlights.has",
  "CSS.highlights.keys",
  "CSS.highlights.set",
  "CSS.highlights.values",
  "CSS.cqb",
  "CSS.cqh",
  "CSS.cqi",
  "CSS.cqmax",
  "CSS.cqmin",
  "CSS.cqw",
  "CSS.dvb",
  "CSS.dvh",
  "CSS.dvi",
  "CSS.dvmax",
  "CSS.dvmin",
  "CSS.dvw",
  "CSS.lvb",
  "CSS.lvh",
  "CSS.lvi",
  "CSS.lvmax",
  "CSS.lvmin",
  "CSS.lvw",
  "CSS.svb",
  "CSS.svh",
  "CSS.svi",
  "CSS.svmax",
  "CSS.svmin",
  "CSS.svw",
  "CSS.vb",
  "CSS.vi",
  "CSS.paintWorklet",
  "CSS.paintWorklet.addModule",
  "CSSImageValue.parse",
  "CSSImageValue.parseAll",
  "CSSKeywordValue.parse",
  "CSSKeywordValue.parseAll",
  "CSSMathClamp.parse",
  "CSSMathClamp.parseAll",
  "CSSMathInvert.parse",
  "CSSMathInvert.parseAll",
  "CSSMathMax.parse",
  "CSSMathMax.parseAll",
  "CSSMathMin.parse",
  "CSSMathMin.parseAll",
  "CSSMathNegate.parse",
  "CSSMathNegate.parseAll",
  "CSSMathProduct.parse",
  "CSSMathProduct.parseAll",
  "CSSMathSum.parse",
  "CSSMathSum.parseAll",
  "CSSMathValue.parse",
  "CSSMathValue.parseAll",
  "CSSNumericValue.parse",
  "CSSNumericValue.parseAll",
  "CSSPositionValue.parse",
  "CSSPositionValue.parseAll",
  "CSSRule.STYLE_RULE",
  "CSSRule.CHARSET_RULE",
  "CSSRule.IMPORT_RULE",
  "CSSRule.MEDIA_RULE",
  "CSSRule.FONT_FACE_RULE",
  "CSSRule.PAGE_RULE",
  "CSSRule.NAMESPACE_RULE",
  "CSSRule.KEYFRAMES_RULE",
  "CSSRule.KEYFRAME_RULE",
  "CSSRule.COUNTER_STYLE_RULE",
  "CSSRule.SUPPORTS_RULE",
  "CSSStyleValue.parse",
  "CSSStyleValue.parseAll",
  "CSSTransformValue.parse",
  "CSSTransformValue.parseAll",
  "CSSUnitValue.parse",
  "CSSUnitValue.parseAll",
  "CSSUnparsedValue.parse",
  "CSSUnparsedValue.parseAll",
  "document.adoptNode",
  "document.append",
  "document.captureEvents",
  "document.caretRangeFromPoint",
  "document.clear",
  "document.close",
  "document.createAttribute",
  "document.createAttributeNS",
  "document.createCDATASection",
  "document.createComment",
  "document.createDocumentFragment",
  "document.createElement",
  "document.createElementNS",
  "document.createEvent",
  "document.createExpression",
  "document.createNSResolver",
  "document.createNodeIterator",
  "document.createProcessingInstruction",
  "document.createRange",
  "document.createTextNode",
  "document.createTreeWalker",
  "document.elementFromPoint",
  "document.elementsFromPoint",
  "document.evaluate",
  "document.execCommand",
  "document.exitFullscreen",
  "document.exitPointerLock",
  "document.getElementById",
  "document.getElementsByClassName",
  "document.getElementsByName",
  "document.getElementsByTagName",
  "document.getElementsByTagNameNS",
  "document.getSelection",
  "document.hasFocus",
  "document.importNode",
  "document.prepend",
  "document.queryCommandEnabled",
  "document.queryCommandIndeterm",
  "document.queryCommandState",
  "document.queryCommandSupported",
  "document.queryCommandValue",
  "document.querySelector",
  "document.querySelectorAll",
  "document.releaseEvents",
  "document.replaceChildren",
  "document.webkitCancelFullScreen",
  "document.webkitExitFullscreen",
  "document.write",
  "document.writeln",
  "document.exitPictureInPicture",
  "document.getAnimations",
  "document.appendChild",
  "document.cloneNode",
  "document.compareDocumentPosition",
  "document.contains",
  "document.getRootNode",
  "document.hasChildNodes",
  "document.insertBefore",
  "document.isDefaultNamespace",
  "document.isEqualNode",
  "document.isSameNode",
  "document.lookupNamespaceURI",
  "document.lookupPrefix",
  "document.normalize",
  "document.removeChild",
  "document.replaceChild",
  "document.addEventListener",
  "document.dispatchEvent",
  "document.removeEventListener",
  "DOMException.INDEX_SIZE_ERR",
  "DOMException.DOMSTRING_SIZE_ERR",
  "DOMException.HIERARCHY_REQUEST_ERR",
  "DOMException.WRONG_DOCUMENT_ERR",
  "DOMException.INVALID_CHARACTER_ERR",
  "DOMException.NO_DATA_ALLOWED_ERR",
  "DOMException.NO_MODIFICATION_ALLOWED_ERR",
  "DOMException.NOT_FOUND_ERR",
  "DOMException.NOT_SUPPORTED_ERR",
  "DOMException.INUSE_ATTRIBUTE_ERR",
  "DOMException.INVALID_STATE_ERR",
  "DOMException.SYNTAX_ERR",
  "DOMException.INVALID_MODIFICATION_ERR",
  "DOMException.NAMESPACE_ERR",
  "DOMException.INVALID_ACCESS_ERR",
  "DOMException.VALIDATION_ERR",
  "DOMException.TYPE_MISMATCH_ERR",
  "DOMException.SECURITY_ERR",
  "DOMException.NETWORK_ERR",
  "DOMException.ABORT_ERR",
  "DOMException.URL_MISMATCH_ERR",
  "DOMException.QUOTA_EXCEEDED_ERR",
  "DOMException.TIMEOUT_ERR",
  "DOMException.INVALID_NODE_TYPE_ERR",
  "DOMException.DATA_CLONE_ERR",
  "DOMMatrix.fromFloat32Array",
  "DOMMatrix.fromFloat64Array",
  "DOMMatrix.fromMatrix",
  "DOMMatrixReadOnly.fromFloat32Array",
  "DOMMatrixReadOnly.fromFloat64Array",
  "DOMMatrixReadOnly.fromMatrix",
  "DOMPoint.fromPoint",
  "DOMPointReadOnly.fromPoint",
  "DOMQuad.fromQuad",
  "DOMQuad.fromRect",
  "DOMRect.fromRect",
  "DOMRectReadOnly.fromRect",
  "external.AddSearchProvider",
  "external.IsSearchProviderInstalled",
  "Error.stackTraceLimit",
  "Event.NONE",
  "Event.CAPTURING_PHASE",
  "Event.AT_TARGET",
  "Event.BUBBLING_PHASE",
  "EventSource.CONNECTING",
  "EventSource.OPEN",
  "EventSource.CLOSED",
  "FileReader.EMPTY",
  "FileReader.LOADING",
  "FileReader.DONE",
  "getEventListeners.toString",
  "GeolocationPositionError.PERMISSION_DENIED",
  "GeolocationPositionError.POSITION_UNAVAILABLE",
  "GeolocationPositionError.TIMEOUT",
  "history.pushState",
  "history.replaceState",
  "HTMLMediaElement.NETWORK_EMPTY",
  "HTMLMediaElement.NETWORK_IDLE",
  "HTMLMediaElement.NETWORK_LOADING",
  "HTMLMediaElement.NETWORK_NO_SOURCE",
  "HTMLMediaElement.HAVE_NOTHING",
  "HTMLMediaElement.HAVE_METADATA",
  "HTMLMediaElement.HAVE_CURRENT_DATA",
  "HTMLMediaElement.HAVE_FUTURE_DATA",
  "HTMLMediaElement.HAVE_ENOUGH_DATA",
  "HTMLScriptElement.supports",
  "HTMLTrackElement.NONE",
  "HTMLTrackElement.LOADING",
  "HTMLTrackElement.LOADED",
  "HTMLTrackElement.ERROR",
  "indexedDB.cmp",
  "indexedDB.databases",
  "indexedDB.deleteDatabase",
  "indexedDB.open",
  "IDBKeyRange.bound",
  "IDBKeyRange.lowerBound",
  "IDBKeyRange.only",
  "IDBKeyRange.upperBound",
  "IdleDetector.requestPermission",
  "ImageDecoder.isTypeSupported",
  "KeyboardEvent.DOM_KEY_LOCATION_STANDARD",
  "KeyboardEvent.DOM_KEY_LOCATION_LEFT",
  "KeyboardEvent.DOM_KEY_LOCATION_RIGHT",
  "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD",
  "launchQueue.setConsumer",
  "localStorage.clear",
  "localStorage.getItem",
  "localStorage.key",
  "localStorage.removeItem",
  "localStorage.setItem",
  "monitorEvents.toString",
  "MediaError.MEDIA_ERR_ABORTED",
  "MediaError.MEDIA_ERR_NETWORK",
  "MediaError.MEDIA_ERR_DECODE",
  "MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED",
  "MediaRecorder.isTypeSupported",
  "MediaSource.isTypeSupported",
  "MediaSource.canConstructInDedicatedWorker",
  "MutationEvent.MODIFICATION",
  "MutationEvent.ADDITION",
  "MutationEvent.REMOVAL",
  "navigation.entries",
  "navigation.reload",
  "navigation.traverseTo",
  "navigation.updateCurrentEntry",
  "navigation.addEventListener",
  "navigation.dispatchEvent",
  "navigation.removeEventListener",
  "navigator.getGamepads",
  "navigator.javaEnabled",
  "navigator.sendBeacon",
  "navigator.vibrate",
  "navigator.clearAppBadge",
  "navigator.getBattery",
  "navigator.getUserMedia",
  "navigator.requestMIDIAccess",
  "navigator.requestMediaKeySystemAccess",
  "navigator.setAppBadge",
  "navigator.webkitGetUserMedia",
  "navigator.getInstalledRelatedApps",
  "navigator.registerProtocolHandler",
  "navigator.unregisterProtocolHandler",
  "Node.ELEMENT_NODE",
  "Node.ATTRIBUTE_NODE",
  "Node.TEXT_NODE",
  "Node.CDATA_SECTION_NODE",
  "Node.ENTITY_REFERENCE_NODE",
  "Node.ENTITY_NODE",
  "Node.PROCESSING_INSTRUCTION_NODE",
  "Node.COMMENT_NODE",
  "Node.DOCUMENT_NODE",
  "Node.DOCUMENT_TYPE_NODE",
  "Node.DOCUMENT_FRAGMENT_NODE",
  "Node.NOTATION_NODE",
  "Node.DOCUMENT_POSITION_DISCONNECTED",
  "Node.DOCUMENT_POSITION_PRECEDING",
  "Node.DOCUMENT_POSITION_FOLLOWING",
  "Node.DOCUMENT_POSITION_CONTAINS",
  "Node.DOCUMENT_POSITION_CONTAINED_BY",
  "Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC",
  "NodeFilter.FILTER_ACCEPT",
  "NodeFilter.FILTER_REJECT",
  "NodeFilter.FILTER_SKIP",
  "NodeFilter.SHOW_ALL",
  "NodeFilter.SHOW_ELEMENT",
  "NodeFilter.SHOW_ATTRIBUTE",
  "NodeFilter.SHOW_TEXT",
  "NodeFilter.SHOW_CDATA_SECTION",
  "NodeFilter.SHOW_ENTITY_REFERENCE",
  "NodeFilter.SHOW_ENTITY",
  "NodeFilter.SHOW_PROCESSING_INSTRUCTION",
  "NodeFilter.SHOW_COMMENT",
  "NodeFilter.SHOW_DOCUMENT",
  "NodeFilter.SHOW_DOCUMENT_TYPE",
  "NodeFilter.SHOW_DOCUMENT_FRAGMENT",
  "NodeFilter.SHOW_NOTATION",
  "Notification.permission",
  "Notification.maxActions",
  "Notification.requestPermission",
  "origin",
  "performance.clearMarks",
  "performance.clearMeasures",
  "performance.clearResourceTimings",
  "performance.getEntries",
  "performance.getEntriesByName",
  "performance.getEntriesByType",
  "performance.mark",
  "performance.measure",
  "performance.now",
  "performance.setResourceTimingBufferSize",
  "performance.toJSON",
  "performance.addEventListener",
  "performance.dispatchEvent",
  "performance.removeEventListener",
  "PerformanceNavigation.TYPE_NAVIGATE",
  "PerformanceNavigation.TYPE_RELOAD",
  "PerformanceNavigation.TYPE_BACK_FORWARD",
  "PerformanceNavigation.TYPE_RESERVED",
  "PerformanceObserver.supportedEntryTypes",
  "PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",
  "PublicKeyCredential.isConditionalMediationAvailable",
  "PushManager.supportedContentEncodings",
  "Range.START_TO_START",
  "Range.START_TO_END",
  "Range.END_TO_END",
  "Range.END_TO_START",
  "Response.error",
  "Response.json",
  "Response.redirect",
  "RTCPeerConnection.generateCertificate",
  "RTCRtpReceiver.getCapabilities",
  "RTCRtpSender.getCapabilities",
  "scheduler.postTask",
  "screen.addEventListener",
  "screen.dispatchEvent",
  "screen.removeEventListener",
  "sessionStorage.clear",
  "sessionStorage.getItem",
  "sessionStorage.key",
  "sessionStorage.removeItem",
  "sessionStorage.setItem",
  "speechSynthesis.cancel",
  "speechSynthesis.getVoices",
  "speechSynthesis.pause",
  "speechSynthesis.resume",
  "speechSynthesis.speak",
  "speechSynthesis.addEventListener",
  "speechSynthesis.dispatchEvent",
  "speechSynthesis.removeEventListener",
  "styleMedia.matchMedium",
  "Sanitizer.getDefaultConfiguration",
  "SVGAngle.SVG_ANGLETYPE_UNKNOWN",
  "SVGAngle.SVG_ANGLETYPE_UNSPECIFIED",
  "SVGAngle.SVG_ANGLETYPE_DEG",
  "SVGAngle.SVG_ANGLETYPE_RAD",
  "SVGAngle.SVG_ANGLETYPE_GRAD",
  "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA",
  "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR",
  "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE",
  "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_TABLE",
  "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY",
  "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_LUMINOSITY",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_COLOR",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_SATURATION",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_HUE",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_EXCLUSION",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_DIFFERENCE",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_SOFT_LIGHT",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_HARD_LIGHT",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_COLOR_BURN",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_COLOR_DODGE",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_OVERLAY",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL",
  "SVGFEBlendElement.SVG_FEBLEND_MODE_UNKNOWN",
  "SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA",
  "SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_HUEROTATE",
  "SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE",
  "SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX",
  "SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_UNKNOWN",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_ARITHMETIC",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_XOR",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_ATOP",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OUT",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER",
  "SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_UNKNOWN",
  "SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE",
  "SVGFEConvolveMatrixElement.SVG_EDGEMODE_WRAP",
  "SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE",
  "SVGFEConvolveMatrixElement.SVG_EDGEMODE_UNKNOWN",
  "SVGFEDisplacementMapElement.SVG_CHANNEL_A",
  "SVGFEDisplacementMapElement.SVG_CHANNEL_B",
  "SVGFEDisplacementMapElement.SVG_CHANNEL_G",
  "SVGFEDisplacementMapElement.SVG_CHANNEL_R",
  "SVGFEDisplacementMapElement.SVG_CHANNEL_UNKNOWN",
  "SVGFEFuncAElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA",
  "SVGFEFuncAElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR",
  "SVGFEFuncAElement.SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE",
  "SVGFEFuncAElement.SVG_FECOMPONENTTRANSFER_TYPE_TABLE",
  "SVGFEFuncAElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY",
  "SVGFEFuncAElement.SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN",
  "SVGFEFuncBElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA",
  "SVGFEFuncBElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR",
  "SVGFEFuncBElement.SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE",
  "SVGFEFuncBElement.SVG_FECOMPONENTTRANSFER_TYPE_TABLE",
  "SVGFEFuncBElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY",
  "SVGFEFuncBElement.SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN",
  "SVGFEFuncGElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA",
  "SVGFEFuncGElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR",
  "SVGFEFuncGElement.SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE",
  "SVGFEFuncGElement.SVG_FECOMPONENTTRANSFER_TYPE_TABLE",
  "SVGFEFuncGElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY",
  "SVGFEFuncGElement.SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN",
  "SVGFEFuncRElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA",
  "SVGFEFuncRElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR",
  "SVGFEFuncRElement.SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE",
  "SVGFEFuncRElement.SVG_FECOMPONENTTRANSFER_TYPE_TABLE",
  "SVGFEFuncRElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY",
  "SVGFEFuncRElement.SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN",
  "SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE",
  "SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE",
  "SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_UNKNOWN",
  "SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH",
  "SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH",
  "SVGFETurbulenceElement.SVG_STITCHTYPE_UNKNOWN",
  "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE",
  "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE",
  "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_UNKNOWN",
  "SVGGradientElement.SVG_SPREADMETHOD_REPEAT",
  "SVGGradientElement.SVG_SPREADMETHOD_REFLECT",
  "SVGGradientElement.SVG_SPREADMETHOD_PAD",
  "SVGGradientElement.SVG_SPREADMETHOD_UNKNOWN",
  "SVGLength.SVG_LENGTHTYPE_UNKNOWN",
  "SVGLength.SVG_LENGTHTYPE_NUMBER",
  "SVGLength.SVG_LENGTHTYPE_PERCENTAGE",
  "SVGLength.SVG_LENGTHTYPE_EMS",
  "SVGLength.SVG_LENGTHTYPE_EXS",
  "SVGLength.SVG_LENGTHTYPE_PX",
  "SVGLength.SVG_LENGTHTYPE_CM",
  "SVGLength.SVG_LENGTHTYPE_MM",
  "SVGLength.SVG_LENGTHTYPE_IN",
  "SVGLength.SVG_LENGTHTYPE_PT",
  "SVGLength.SVG_LENGTHTYPE_PC",
  "SVGLinearGradientElement.SVG_SPREADMETHOD_REPEAT",
  "SVGLinearGradientElement.SVG_SPREADMETHOD_REFLECT",
  "SVGLinearGradientElement.SVG_SPREADMETHOD_PAD",
  "SVGLinearGradientElement.SVG_SPREADMETHOD_UNKNOWN",
  "SVGMarkerElement.SVG_MARKERUNITS_UNKNOWN",
  "SVGMarkerElement.SVG_MARKERUNITS_USERSPACEONUSE",
  "SVGMarkerElement.SVG_MARKERUNITS_STROKEWIDTH",
  "SVGMarkerElement.SVG_MARKER_ORIENT_UNKNOWN",
  "SVGMarkerElement.SVG_MARKER_ORIENT_AUTO",
  "SVGMarkerElement.SVG_MARKER_ORIENT_ANGLE",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMIN",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX",
  "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX",
  "SVGPreserveAspectRatio.SVG_MEETORSLICE_UNKNOWN",
  "SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET",
  "SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE",
  "SVGRadialGradientElement.SVG_SPREADMETHOD_REPEAT",
  "SVGRadialGradientElement.SVG_SPREADMETHOD_REFLECT",
  "SVGRadialGradientElement.SVG_SPREADMETHOD_PAD",
  "SVGRadialGradientElement.SVG_SPREADMETHOD_UNKNOWN",
  "SVGSVGElement.SVG_ZOOMANDPAN_UNKNOWN",
  "SVGSVGElement.SVG_ZOOMANDPAN_DISABLE",
  "SVGSVGElement.SVG_ZOOMANDPAN_MAGNIFY",
  "SVGTextContentElement.LENGTHADJUST_SPACINGANDGLYPHS",
  "SVGTextContentElement.LENGTHADJUST_SPACING",
  "SVGTextContentElement.LENGTHADJUST_UNKNOWN",
  "SVGTextElement.LENGTHADJUST_SPACINGANDGLYPHS",
  "SVGTextElement.LENGTHADJUST_SPACING",
  "SVGTextElement.LENGTHADJUST_UNKNOWN",
  "SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT",
  "SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO",
  "SVGTextPathElement.TEXTPATH_SPACINGTYPE_UNKNOWN",
  "SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH",
  "SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN",
  "SVGTextPathElement.TEXTPATH_METHODTYPE_UNKNOWN",
  "SVGTextPathElement.LENGTHADJUST_SPACINGANDGLYPHS",
  "SVGTextPathElement.LENGTHADJUST_SPACING",
  "SVGTextPathElement.LENGTHADJUST_UNKNOWN",
  "SVGTextPositioningElement.LENGTHADJUST_SPACINGANDGLYPHS",
  "SVGTextPositioningElement.LENGTHADJUST_SPACING",
  "SVGTextPositioningElement.LENGTHADJUST_UNKNOWN",
  "SVGTransform.SVG_TRANSFORM_UNKNOWN",
  "SVGTransform.SVG_TRANSFORM_MATRIX",
  "SVGTransform.SVG_TRANSFORM_TRANSLATE",
  "SVGTransform.SVG_TRANSFORM_SCALE",
  "SVGTransform.SVG_TRANSFORM_ROTATE",
  "SVGTransform.SVG_TRANSFORM_SKEWX",
  "SVGTransform.SVG_TRANSFORM_SKEWY",
  "SVGTSpanElement.LENGTHADJUST_SPACINGANDGLYPHS",
  "SVGTSpanElement.LENGTHADJUST_SPACING",
  "SVGTSpanElement.LENGTHADJUST_UNKNOWN",
  "SVGUnitTypes.SVG_UNIT_TYPE_UNKNOWN",
  "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE",
  "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX",
  "SVGViewElement.SVG_ZOOMANDPAN_UNKNOWN",
  "SVGViewElement.SVG_ZOOMANDPAN_DISABLE",
  "SVGViewElement.SVG_ZOOMANDPAN_MAGNIFY",
  "top.document",
  "top.name",
  "top.customElements",
  "top.history",
  "top.menubar",
  "top.personalbar",
  "top.scrollbars",
  "top.statusbar",
  "top.toolbar",
  "top.status",
  "top.closed",
  "top.length",
  "top.opener",
  "top.frameElement",
  "top.navigator",
  "top.origin",
  "top.external",
  "top.screen",
  "top.innerWidth",
  "top.innerHeight",
  "top.scrollX",
  "top.pageXOffset",
  "top.scrollY",
  "top.pageYOffset",
  "top.visualViewport",
  "top.screenX",
  "top.screenY",
  "top.outerWidth",
  "top.outerHeight",
  "top.devicePixelRatio",
  "top.clientInformation",
  "top.screenLeft",
  "top.screenTop",
  "top.styleMedia",
  "top.onsearch",
  "top.isSecureContext",
  "top.trustedTypes",
  "top.performance",
  "top.onappinstalled",
  "top.onbeforeinstallprompt",
  "top.crypto",
  "top.indexedDB",
  "top.sessionStorage",
  "top.localStorage",
  "top.onbeforexrselect",
  "top.onabort",
  "top.onbeforeinput",
  "top.onblur",
  "top.oncancel",
  "top.oncanplay",
  "top.oncanplaythrough",
  "top.onchange",
  "top.onclick",
  "top.onclose",
  "top.oncontextlost",
  "top.oncontextmenu",
  "top.oncontextrestored",
  "top.oncuechange",
  "top.ondblclick",
  "top.ondrag",
  "top.ondragend",
  "top.ondragenter",
  "top.ondragleave",
  "top.ondragover",
  "top.ondragstart",
  "top.ondrop",
  "top.ondurationchange",
  "top.onemptied",
  "top.onended",
  "top.onerror",
  "top.onfocus",
  "top.onformdata",
  "top.oninput",
  "top.oninvalid",
  "top.onkeydown",
  "top.onkeypress",
  "top.onkeyup",
  "top.onload",
  "top.onloadeddata",
  "top.onloadedmetadata",
  "top.onloadstart",
  "top.onmousedown",
  "top.onmouseenter",
  "top.onmouseleave",
  "top.onmousemove",
  "top.onmouseout",
  "top.onmouseover",
  "top.onmouseup",
  "top.onmousewheel",
  "top.onpause",
  "top.onplay",
  "top.onplaying",
  "top.onprogress",
  "top.onratechange",
  "top.onreset",
  "top.onresize",
  "top.onscroll",
  "top.onsecuritypolicyviolation",
  "top.onseeked",
  "top.onseeking",
  "top.onselect",
  "top.onslotchange",
  "top.onstalled",
  "top.onsubmit",
  "top.onsuspend",
  "top.ontimeupdate",
  "top.ontoggle",
  "top.onvolumechange",
  "top.onwaiting",
  "top.onwebkitanimationend",
  "top.onwebkitanimationiteration",
  "top.onwebkitanimationstart",
  "top.onwebkittransitionend",
  "top.onwheel",
  "top.onauxclick",
  "top.ongotpointercapture",
  "top.onlostpointercapture",
  "top.onpointerdown",
  "top.onpointermove",
  "top.onpointerrawupdate",
  "top.onpointerup",
  "top.onpointercancel",
  "top.onpointerover",
  "top.onpointerout",
  "top.onpointerenter",
  "top.onpointerleave",
  "top.onselectstart",
  "top.onselectionchange",
  "top.onanimationend",
  "top.onanimationiteration",
  "top.onanimationstart",
  "top.ontransitionrun",
  "top.ontransitionstart",
  "top.ontransitionend",
  "top.ontransitioncancel",
  "top.onafterprint",
  "top.onbeforeprint",
  "top.onbeforeunload",
  "top.onhashchange",
  "top.onlanguagechange",
  "top.onmessage",
  "top.onmessageerror",
  "top.onoffline",
  "top.ononline",
  "top.onpagehide",
  "top.onpageshow",
  "top.onpopstate",
  "top.onrejectionhandled",
  "top.onstorage",
  "top.onunhandledrejection",
  "top.onunload",
  "top.crossOriginIsolated",
  "top.scheduler",
  "top.atob",
  "top.blur",
  "top.btoa",
  "top.cancelAnimationFrame",
  "top.cancelIdleCallback",
  "top.captureEvents",
  "top.clearInterval",
  "top.clearTimeout",
  "top.close",
  "top.createImageBitmap",
  "top.fetch",
  "top.find",
  "top.focus",
  "top.getComputedStyle",
  "top.getSelection",
  "top.matchMedia",
  "top.moveBy",
  "top.moveTo",
  "top.postMessage",
  "top.queueMicrotask",
  "top.releaseEvents",
  "top.reportError",
  "top.requestAnimationFrame",
  "top.requestIdleCallback",
  "top.resizeBy",
  "top.resizeTo",
  "top.scroll",
  "top.scrollBy",
  "top.scrollTo",
  "top.setInterval",
  "top.setTimeout",
  "top.structuredClone",
  "top.webkitCancelAnimationFrame",
  "top.webkitRequestAnimationFrame",
  "top.chrome",
  "top.caches",
  "top.cookieStore",
  "top.ondevicemotion",
  "top.ondeviceorientation",
  "top.ondeviceorientationabsolute",
  "top.launchQueue",
  "top.onbeforematch",
  "top.getScreenDetails",
  "top.queryLocalFonts",
  "top.showDirectoryPicker",
  "top.showOpenFilePicker",
  "top.showSaveFilePicker",
  "top.originAgentCluster",
  "top.navigation",
  "top.webkitStorageInfo",
  "top.speechSynthesis",
  "top.oncontentvisibilityautostatechange",
  "top.openDatabase",
  "top.webkitRequestFileSystem",
  "top.webkitResolveLocalFileSystemURL",
  "top.define",
  "top.ethereum",
  "top.fuzzyValues",
  "top.getProperties",
  "top.y",
  "top.addEventListener",
  "top.dispatchEvent",
  "top.removeEventListener",
  "trustedTypes.createPolicy",
  "trustedTypes.getAttributeType",
  "trustedTypes.getPropertyType",
  "trustedTypes.getTypeMapping",
  "trustedTypes.isHTML",
  "trustedTypes.isScript",
  "trustedTypes.isScriptURL",
  "trustedTypes.addEventListener",
  "trustedTypes.dispatchEvent",
  "trustedTypes.removeEventListener",
  "TaskSignal.abort",
  "TaskSignal.timeout",
  "unmonitorEvents.toString",
  "URL.createObjectURL",
  "URL.revokeObjectURL",
  "visualViewport.addEventListener",
  "visualViewport.dispatchEvent",
  "visualViewport.removeEventListener",
  "VideoDecoder.isConfigSupported",
  "VideoEncoder.isConfigSupported",
  "webkitStorageInfo.queryUsageAndQuota",
  "webkitStorageInfo.requestQuota",
  "window.document",
  "window.name",  "window.customElements",
  "window.history",  "window.menubar",
  "window.personalbar",
  "window.scrollbars",
  "window.statusbar",
  "window.toolbar",
  "window.status",
  "window.closed",
  "window.length",
  "window.top",
  "window.frameElement",
  "window.navigator",
  "window.origin",
  "window.external",
  "window.screen",
  "window.innerWidth",
  "window.innerHeight",
  "window.scrollX",
  "window.pageXOffset",
  "window.scrollY",
  "window.pageYOffset",
  "window.visualViewport",
  "window.screenX",
  "window.screenY",
  "window.outerWidth",
  "window.outerHeight",
  "window.devicePixelRatio",
  "window.clientInformation",
  "window.screenLeft",
  "window.screenTop",
  "window.styleMedia",
  "window.onsearch",
  "window.isSecureContext",
  "window.trustedTypes",
  "window.performance",
  "window.onappinstalled",
  "window.onbeforeinstallprompt",
  "window.crypto",
  "window.indexedDB",
  "window.sessionStorage",
  "window.localStorage",
  "window.onbeforexrselect",
  "window.onabort",
  "window.onbeforeinput",
  "window.onblur",
  "window.oncancel",
  "window.oncanplay",
  "window.oncanplaythrough",
  "window.onchange",
  "window.onclick",
  "window.onclose",
  "window.oncontextlost",
  "window.oncontextmenu",
  "window.oncontextrestored",
  "window.oncuechange",
  "window.ondblclick",
  "window.ondrag",
  "window.ondragend",
  "window.ondragenter",
  "window.ondragleave",
  "window.ondragover",
  "window.ondragstart",
  "window.ondrop",
  "window.ondurationchange",
  "window.onemptied",
  "window.onended",
  "window.onerror",
  "window.onfocus",
  "window.onformdata",
  "window.oninput",
  "window.oninvalid",
  "window.onkeydown",
  "window.onkeypress",
  "window.onkeyup",
  "window.onload",
  "window.onloadeddata",
  "window.onloadedmetadata",
  "window.onloadstart",
  "window.onmousedown",
  "window.onmouseenter",
  "window.onmouseleave",
  "window.onmousemove",
  "window.onmouseout",
  "window.onmouseover",
  "window.onmouseup",
  "window.onmousewheel",
  "window.onpause",
  "window.onplay",
  "window.onplaying",
  "window.onprogress",
  "window.onratechange",
  "window.onreset",
  "window.onresize",
  "window.onscroll",
  "window.onsecuritypolicyviolation",
  "window.onseeked",
  "window.onseeking",
  "window.onselect",
  "window.onslotchange",
  "window.onstalled",
  "window.onsubmit",
  "window.onsuspend",
  "window.ontimeupdate",
  "window.ontoggle",
  "window.onvolumechange",
  "window.onwaiting",
  "window.onwebkitanimationend",
  "window.onwebkitanimationiteration",
  "window.onwebkitanimationstart",
  "window.onwebkittransitionend",
  "window.onwheel",
  "window.onauxclick",
  "window.ongotpointercapture",
  "window.onlostpointercapture",
  "window.onpointerdown",
  "window.onpointermove",
  "window.onpointerrawupdate",
  "window.onpointerup",
  "window.onpointercancel",
  "window.onpointerover",
  "window.onpointerout",
  "window.onpointerenter",
  "window.onpointerleave",
  "window.onselectstart",
  "window.onselectionchange",
  "window.onanimationend",
  "window.onanimationiteration",
  "window.onanimationstart",
  "window.ontransitionrun",
  "window.ontransitionstart",
  "window.ontransitionend",
  "window.ontransitioncancel",
  "window.onafterprint",
  "window.onbeforeprint",
  "window.onbeforeunload",
  "window.onhashchange",
  "window.onlanguagechange",
  "window.onmessage",
  "window.onmessageerror",
  "window.onoffline",
  "window.ononline",
  "window.onpagehide",
  "window.onpageshow",
  "window.onpopstate",
  "window.onrejectionhandled",
  "window.onstorage",
  "window.onunhandledrejection",
  "window.onunload",
  "window.crossOriginIsolated",
  "window.scheduler",
  "window.atob",
  "window.blur",
  "window.btoa",
  "window.cancelAnimationFrame",
  "window.cancelIdleCallback",
  "window.captureEvents",
  "window.clearInterval",
  "window.clearTimeout",
  "window.close",
  "window.createImageBitmap",
  "window.fetch",
  "window.find",
  "window.focus",
  "window.getComputedStyle",
  "window.getSelection",
  "window.matchMedia",
  "window.moveBy",
  "window.moveTo",
  "window.postMessage",
  "window.queueMicrotask",
  "window.releaseEvents",
  "window.reportError",
  "window.requestAnimationFrame",
  "window.requestIdleCallback",
  "window.resizeBy",
  "window.resizeTo",
  "window.scroll",
  "window.scrollBy",
  "window.scrollTo",
  "window.setInterval",
  "window.setTimeout",
  "window.structuredClone",
  "window.webkitCancelAnimationFrame",
  "window.webkitRequestAnimationFrame",
  "window.chrome",
  "window.caches",
  "window.cookieStore",
  "window.ondevicemotion",
  "window.ondeviceorientation",
  "window.ondeviceorientationabsolute",
  "window.launchQueue",
  "window.onbeforematch",
  "window.getScreenDetails",
  "window.queryLocalFonts",
  "window.showDirectoryPicker",
  "window.showOpenFilePicker",
  "window.showSaveFilePicker",
  "window.originAgentCluster",
  "window.navigation",
  "window.webkitStorageInfo",
  "window.speechSynthesis",
  "window.oncontentvisibilityautostatechange",
  "window.openDatabase",
  "window.webkitRequestFileSystem",
  "window.webkitResolveLocalFileSystemURL",
  "window.define",
  "window.ethereum",
  "window.fuzzyValues",
  "window.getProperties",
  "window.y",
  "window.addEventListener",
  "window.dispatchEvent",
  "window.removeEventListener",
  "webkitRTCPeerConnection.generateCertificate",
  "webkitURL.createObjectURL",
  "webkitURL.revokeObjectURL",
  "WebAssembly.compile",
  "WebAssembly.validate",
  "WebAssembly.instantiate",
  "WebAssembly.compileStreaming",
  "WebAssembly.instantiateStreaming",
  "WebGL2RenderingContext.DEPTH_BUFFER_BIT",
  "WebGL2RenderingContext.STENCIL_BUFFER_BIT",
  "WebGL2RenderingContext.COLOR_BUFFER_BIT",
  "WebGL2RenderingContext.POINTS",
  "WebGL2RenderingContext.LINES",
  "WebGL2RenderingContext.LINE_LOOP",
  "WebGL2RenderingContext.LINE_STRIP",
  "WebGL2RenderingContext.TRIANGLES",
  "WebGL2RenderingContext.TRIANGLE_STRIP",
  "WebGL2RenderingContext.TRIANGLE_FAN",
  "WebGL2RenderingContext.ZERO",
  "WebGL2RenderingContext.ONE",
  "WebGL2RenderingContext.SRC_COLOR",
  "WebGL2RenderingContext.ONE_MINUS_SRC_COLOR",
  "WebGL2RenderingContext.SRC_ALPHA",
  "WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA",
  "WebGL2RenderingContext.DST_ALPHA",
  "WebGL2RenderingContext.ONE_MINUS_DST_ALPHA",
  "WebGL2RenderingContext.DST_COLOR",
  "WebGL2RenderingContext.ONE_MINUS_DST_COLOR",
  "WebGL2RenderingContext.SRC_ALPHA_SATURATE",
  "WebGL2RenderingContext.FUNC_ADD",
  "WebGL2RenderingContext.BLEND_EQUATION",
  "WebGL2RenderingContext.BLEND_EQUATION_RGB",
  "WebGL2RenderingContext.BLEND_EQUATION_ALPHA",
  "WebGL2RenderingContext.FUNC_SUBTRACT",
  "WebGL2RenderingContext.FUNC_REVERSE_SUBTRACT",
  "WebGL2RenderingContext.BLEND_DST_RGB",
  "WebGL2RenderingContext.BLEND_SRC_RGB",
  "WebGL2RenderingContext.BLEND_DST_ALPHA",
  "WebGL2RenderingContext.BLEND_SRC_ALPHA",
  "WebGL2RenderingContext.CONSTANT_COLOR",
  "WebGL2RenderingContext.ONE_MINUS_CONSTANT_COLOR",
  "WebGL2RenderingContext.CONSTANT_ALPHA",
  "WebGL2RenderingContext.ONE_MINUS_CONSTANT_ALPHA",
  "WebGL2RenderingContext.BLEND_COLOR",
  "WebGL2RenderingContext.ARRAY_BUFFER",
  "WebGL2RenderingContext.ELEMENT_ARRAY_BUFFER",
  "WebGL2RenderingContext.ARRAY_BUFFER_BINDING",
  "WebGL2RenderingContext.ELEMENT_ARRAY_BUFFER_BINDING",
  "WebGL2RenderingContext.STREAM_DRAW",
  "WebGL2RenderingContext.STATIC_DRAW",
  "WebGL2RenderingContext.DYNAMIC_DRAW",
  "WebGL2RenderingContext.BUFFER_SIZE",
  "WebGL2RenderingContext.BUFFER_USAGE",
  "WebGL2RenderingContext.CURRENT_VERTEX_ATTRIB",
  "WebGL2RenderingContext.FRONT",
  "WebGL2RenderingContext.BACK",
  "WebGL2RenderingContext.FRONT_AND_BACK",
  "WebGL2RenderingContext.TEXTURE_2D",
  "WebGL2RenderingContext.CULL_FACE",
  "WebGL2RenderingContext.BLEND",
  "WebGL2RenderingContext.DITHER",
  "WebGL2RenderingContext.STENCIL_TEST",
  "WebGL2RenderingContext.DEPTH_TEST",
  "WebGL2RenderingContext.SCISSOR_TEST",
  "WebGL2RenderingContext.POLYGON_OFFSET_FILL",
  "WebGL2RenderingContext.SAMPLE_ALPHA_TO_COVERAGE",
  "WebGL2RenderingContext.SAMPLE_COVERAGE",
  "WebGL2RenderingContext.NO_ERROR",
  "WebGL2RenderingContext.INVALID_ENUM",
  "WebGL2RenderingContext.INVALID_VALUE",
  "WebGL2RenderingContext.INVALID_OPERATION",
  "WebGL2RenderingContext.OUT_OF_MEMORY",
  "WebGL2RenderingContext.CW",
  "WebGL2RenderingContext.CCW",
  "WebGL2RenderingContext.LINE_WIDTH",
  "WebGL2RenderingContext.ALIASED_POINT_SIZE_RANGE",
  "WebGL2RenderingContext.ALIASED_LINE_WIDTH_RANGE",
  "WebGL2RenderingContext.CULL_FACE_MODE",
  "WebGL2RenderingContext.FRONT_FACE",
  "WebGL2RenderingContext.DEPTH_RANGE",
  "WebGL2RenderingContext.DEPTH_WRITEMASK",
  "WebGL2RenderingContext.DEPTH_CLEAR_VALUE",
  "WebGL2RenderingContext.DEPTH_FUNC",
  "WebGL2RenderingContext.STENCIL_CLEAR_VALUE",
  "WebGL2RenderingContext.STENCIL_FUNC",
  "WebGL2RenderingContext.STENCIL_FAIL",
  "WebGL2RenderingContext.STENCIL_PASS_DEPTH_FAIL",
  "WebGL2RenderingContext.STENCIL_PASS_DEPTH_PASS",
  "WebGL2RenderingContext.STENCIL_REF",
  "WebGL2RenderingContext.STENCIL_VALUE_MASK",
  "WebGL2RenderingContext.STENCIL_WRITEMASK",
  "WebGL2RenderingContext.STENCIL_BACK_FUNC",
  "WebGL2RenderingContext.STENCIL_BACK_FAIL",
  "WebGL2RenderingContext.STENCIL_BACK_PASS_DEPTH_FAIL",
  "WebGL2RenderingContext.STENCIL_BACK_PASS_DEPTH_PASS",
  "WebGL2RenderingContext.STENCIL_BACK_REF",
  "WebGL2RenderingContext.STENCIL_BACK_VALUE_MASK",
  "WebGL2RenderingContext.STENCIL_BACK_WRITEMASK",
  "WebGL2RenderingContext.VIEWPORT",
  "WebGL2RenderingContext.SCISSOR_BOX",
  "WebGL2RenderingContext.COLOR_CLEAR_VALUE",
  "WebGL2RenderingContext.COLOR_WRITEMASK",
  "WebGL2RenderingContext.UNPACK_ALIGNMENT",
  "WebGL2RenderingContext.PACK_ALIGNMENT",
  "WebGL2RenderingContext.MAX_TEXTURE_SIZE",
  "WebGL2RenderingContext.MAX_VIEWPORT_DIMS",
  "WebGL2RenderingContext.SUBPIXEL_BITS",
  "WebGL2RenderingContext.RED_BITS",
  "WebGL2RenderingContext.GREEN_BITS",
  "WebGL2RenderingContext.BLUE_BITS",
  "WebGL2RenderingContext.ALPHA_BITS",
  "WebGL2RenderingContext.DEPTH_BITS",
  "WebGL2RenderingContext.STENCIL_BITS",
  "WebGL2RenderingContext.POLYGON_OFFSET_UNITS",
  "WebGL2RenderingContext.POLYGON_OFFSET_FACTOR",
  "WebGL2RenderingContext.TEXTURE_BINDING_2D",
  "WebGL2RenderingContext.SAMPLE_BUFFERS",
  "WebGL2RenderingContext.SAMPLES",
  "WebGL2RenderingContext.SAMPLE_COVERAGE_VALUE",
  "WebGL2RenderingContext.SAMPLE_COVERAGE_INVERT",
  "WebGL2RenderingContext.COMPRESSED_TEXTURE_FORMATS",
  "WebGL2RenderingContext.DONT_CARE",
  "WebGL2RenderingContext.FASTEST",
  "WebGL2RenderingContext.NICEST",
  "WebGL2RenderingContext.GENERATE_MIPMAP_HINT",
  "WebGL2RenderingContext.BYTE",
  "WebGL2RenderingContext.UNSIGNED_BYTE",
  "WebGL2RenderingContext.SHORT",
  "WebGL2RenderingContext.UNSIGNED_SHORT",
  "WebGL2RenderingContext.INT",
  "WebGL2RenderingContext.UNSIGNED_INT",
  "WebGL2RenderingContext.FLOAT",
  "WebGL2RenderingContext.DEPTH_COMPONENT",
  "WebGL2RenderingContext.ALPHA",
  "WebGL2RenderingContext.RGB",
  "WebGL2RenderingContext.RGBA",
  "WebGL2RenderingContext.LUMINANCE",
  "WebGL2RenderingContext.LUMINANCE_ALPHA",
  "WebGL2RenderingContext.UNSIGNED_SHORT_4_4_4_4",
  "WebGL2RenderingContext.UNSIGNED_SHORT_5_5_5_1",
  "WebGL2RenderingContext.UNSIGNED_SHORT_5_6_5",
  "WebGL2RenderingContext.FRAGMENT_SHADER",
  "WebGL2RenderingContext.VERTEX_SHADER",
  "WebGL2RenderingContext.MAX_VERTEX_ATTRIBS",
  "WebGL2RenderingContext.MAX_VERTEX_UNIFORM_VECTORS",
  "WebGL2RenderingContext.MAX_VARYING_VECTORS",
  "WebGL2RenderingContext.MAX_COMBINED_TEXTURE_IMAGE_UNITS",
  "WebGL2RenderingContext.MAX_VERTEX_TEXTURE_IMAGE_UNITS",
  "WebGL2RenderingContext.MAX_TEXTURE_IMAGE_UNITS",
  "WebGL2RenderingContext.MAX_FRAGMENT_UNIFORM_VECTORS",
  "WebGL2RenderingContext.SHADER_TYPE",
  "WebGL2RenderingContext.DELETE_STATUS",
  "WebGL2RenderingContext.LINK_STATUS",
  "WebGL2RenderingContext.VALIDATE_STATUS",
  "WebGL2RenderingContext.ATTACHED_SHADERS",
  "WebGL2RenderingContext.ACTIVE_UNIFORMS",
  "WebGL2RenderingContext.ACTIVE_ATTRIBUTES",
  "WebGL2RenderingContext.SHADING_LANGUAGE_VERSION",
  "WebGL2RenderingContext.CURRENT_PROGRAM",
  "WebGL2RenderingContext.NEVER",
  "WebGL2RenderingContext.LESS",
  "WebGL2RenderingContext.EQUAL",
  "WebGL2RenderingContext.LEQUAL",
  "WebGL2RenderingContext.GREATER",
  "WebGL2RenderingContext.NOTEQUAL",
  "WebGL2RenderingContext.GEQUAL",
  "WebGL2RenderingContext.ALWAYS",
  "WebGL2RenderingContext.KEEP",
  "WebGL2RenderingContext.REPLACE",
  "WebGL2RenderingContext.INCR",
  "WebGL2RenderingContext.DECR",
  "WebGL2RenderingContext.INVERT",
  "WebGL2RenderingContext.INCR_WRAP",
  "WebGL2RenderingContext.DECR_WRAP",
  "WebGL2RenderingContext.VENDOR",
  "WebGL2RenderingContext.RENDERER",
  "WebGL2RenderingContext.VERSION",
  "WebGL2RenderingContext.NEAREST",
  "WebGL2RenderingContext.LINEAR",
  "WebGL2RenderingContext.NEAREST_MIPMAP_NEAREST",
  "WebGL2RenderingContext.LINEAR_MIPMAP_NEAREST",
  "WebGL2RenderingContext.NEAREST_MIPMAP_LINEAR",
  "WebGL2RenderingContext.LINEAR_MIPMAP_LINEAR",
  "WebGL2RenderingContext.TEXTURE_MAG_FILTER",
  "WebGL2RenderingContext.TEXTURE_MIN_FILTER",
  "WebGL2RenderingContext.TEXTURE_WRAP_S",
  "WebGL2RenderingContext.TEXTURE_WRAP_T",
  "WebGL2RenderingContext.TEXTURE",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP",
  "WebGL2RenderingContext.TEXTURE_BINDING_CUBE_MAP",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z",
  "WebGL2RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z",
  "WebGL2RenderingContext.MAX_CUBE_MAP_TEXTURE_SIZE",
  "WebGL2RenderingContext.TEXTURE0",
  "WebGL2RenderingContext.TEXTURE1",
  "WebGL2RenderingContext.TEXTURE2",
  "WebGL2RenderingContext.TEXTURE3",
  "WebGL2RenderingContext.TEXTURE4",
  "WebGL2RenderingContext.TEXTURE5",
  "WebGL2RenderingContext.TEXTURE6",
  "WebGL2RenderingContext.TEXTURE7",
  "WebGL2RenderingContext.TEXTURE8",
  "WebGL2RenderingContext.TEXTURE9",
  "WebGL2RenderingContext.TEXTURE10",
  "WebGL2RenderingContext.TEXTURE11",
  "WebGL2RenderingContext.TEXTURE12",
  "WebGL2RenderingContext.TEXTURE13",
  "WebGL2RenderingContext.TEXTURE14",
  "WebGL2RenderingContext.TEXTURE15",
  "WebGL2RenderingContext.TEXTURE16",
  "WebGL2RenderingContext.TEXTURE17",
  "WebGL2RenderingContext.TEXTURE18",
  "WebGL2RenderingContext.TEXTURE19",
  "WebGL2RenderingContext.TEXTURE20",
  "WebGL2RenderingContext.TEXTURE21",
  "WebGL2RenderingContext.TEXTURE22",
  "WebGL2RenderingContext.TEXTURE23",
  "WebGL2RenderingContext.TEXTURE24",
  "WebGL2RenderingContext.TEXTURE25",
  "WebGL2RenderingContext.TEXTURE26",
  "WebGL2RenderingContext.TEXTURE27",
  "WebGL2RenderingContext.TEXTURE28",
  "WebGL2RenderingContext.TEXTURE29",
  "WebGL2RenderingContext.TEXTURE30",
  "WebGL2RenderingContext.TEXTURE31",
  "WebGL2RenderingContext.ACTIVE_TEXTURE",
  "WebGL2RenderingContext.REPEAT",
  "WebGL2RenderingContext.CLAMP_TO_EDGE",
  "WebGL2RenderingContext.MIRRORED_REPEAT",
  "WebGL2RenderingContext.FLOAT_VEC2",
  "WebGL2RenderingContext.FLOAT_VEC3",
  "WebGL2RenderingContext.FLOAT_VEC4",
  "WebGL2RenderingContext.INT_VEC2",
  "WebGL2RenderingContext.INT_VEC3",
  "WebGL2RenderingContext.INT_VEC4",
  "WebGL2RenderingContext.BOOL",
  "WebGL2RenderingContext.BOOL_VEC2",
  "WebGL2RenderingContext.BOOL_VEC3",
  "WebGL2RenderingContext.BOOL_VEC4",
  "WebGL2RenderingContext.FLOAT_MAT2",
  "WebGL2RenderingContext.FLOAT_MAT3",
  "WebGL2RenderingContext.FLOAT_MAT4",
  "WebGL2RenderingContext.SAMPLER_2D",
  "WebGL2RenderingContext.SAMPLER_CUBE",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_ENABLED",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_SIZE",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_STRIDE",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_TYPE",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_NORMALIZED",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_POINTER",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",
  "WebGL2RenderingContext.IMPLEMENTATION_COLOR_READ_TYPE",
  "WebGL2RenderingContext.IMPLEMENTATION_COLOR_READ_FORMAT",
  "WebGL2RenderingContext.COMPILE_STATUS",
  "WebGL2RenderingContext.LOW_FLOAT",
  "WebGL2RenderingContext.MEDIUM_FLOAT",
  "WebGL2RenderingContext.HIGH_FLOAT",
  "WebGL2RenderingContext.LOW_INT",
  "WebGL2RenderingContext.MEDIUM_INT",
  "WebGL2RenderingContext.HIGH_INT",
  "WebGL2RenderingContext.FRAMEBUFFER",
  "WebGL2RenderingContext.RENDERBUFFER",
  "WebGL2RenderingContext.RGBA4",
  "WebGL2RenderingContext.RGB5_A1",
  "WebGL2RenderingContext.RGB565",
  "WebGL2RenderingContext.DEPTH_COMPONENT16",
  "WebGL2RenderingContext.STENCIL_INDEX8",
  "WebGL2RenderingContext.DEPTH_STENCIL",
  "WebGL2RenderingContext.RENDERBUFFER_WIDTH",
  "WebGL2RenderingContext.RENDERBUFFER_HEIGHT",
  "WebGL2RenderingContext.RENDERBUFFER_INTERNAL_FORMAT",
  "WebGL2RenderingContext.RENDERBUFFER_RED_SIZE",
  "WebGL2RenderingContext.RENDERBUFFER_GREEN_SIZE",
  "WebGL2RenderingContext.RENDERBUFFER_BLUE_SIZE",
  "WebGL2RenderingContext.RENDERBUFFER_ALPHA_SIZE",
  "WebGL2RenderingContext.RENDERBUFFER_DEPTH_SIZE",
  "WebGL2RenderingContext.RENDERBUFFER_STENCIL_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",
  "WebGL2RenderingContext.COLOR_ATTACHMENT0",
  "WebGL2RenderingContext.DEPTH_ATTACHMENT",
  "WebGL2RenderingContext.STENCIL_ATTACHMENT",
  "WebGL2RenderingContext.DEPTH_STENCIL_ATTACHMENT",
  "WebGL2RenderingContext.NONE",
  "WebGL2RenderingContext.FRAMEBUFFER_COMPLETE",
  "WebGL2RenderingContext.FRAMEBUFFER_INCOMPLETE_ATTACHMENT",
  "WebGL2RenderingContext.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",
  "WebGL2RenderingContext.FRAMEBUFFER_INCOMPLETE_DIMENSIONS",
  "WebGL2RenderingContext.FRAMEBUFFER_UNSUPPORTED",
  "WebGL2RenderingContext.FRAMEBUFFER_BINDING",
  "WebGL2RenderingContext.RENDERBUFFER_BINDING",
  "WebGL2RenderingContext.MAX_RENDERBUFFER_SIZE",
  "WebGL2RenderingContext.INVALID_FRAMEBUFFER_OPERATION",
  "WebGL2RenderingContext.UNPACK_FLIP_Y_WEBGL",
  "WebGL2RenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL",
  "WebGL2RenderingContext.CONTEXT_LOST_WEBGL",
  "WebGL2RenderingContext.UNPACK_COLORSPACE_CONVERSION_WEBGL",
  "WebGL2RenderingContext.BROWSER_DEFAULT_WEBGL",
  "WebGL2RenderingContext.READ_BUFFER",
  "WebGL2RenderingContext.UNPACK_ROW_LENGTH",
  "WebGL2RenderingContext.UNPACK_SKIP_ROWS",
  "WebGL2RenderingContext.UNPACK_SKIP_PIXELS",
  "WebGL2RenderingContext.PACK_ROW_LENGTH",
  "WebGL2RenderingContext.PACK_SKIP_ROWS",
  "WebGL2RenderingContext.PACK_SKIP_PIXELS",
  "WebGL2RenderingContext.COLOR",
  "WebGL2RenderingContext.DEPTH",
  "WebGL2RenderingContext.STENCIL",
  "WebGL2RenderingContext.RED",
  "WebGL2RenderingContext.RGB8",
  "WebGL2RenderingContext.RGBA8",
  "WebGL2RenderingContext.RGB10_A2",
  "WebGL2RenderingContext.TEXTURE_BINDING_3D",
  "WebGL2RenderingContext.UNPACK_SKIP_IMAGES",
  "WebGL2RenderingContext.UNPACK_IMAGE_HEIGHT",
  "WebGL2RenderingContext.TEXTURE_3D",
  "WebGL2RenderingContext.TEXTURE_WRAP_R",
  "WebGL2RenderingContext.MAX_3D_TEXTURE_SIZE",
  "WebGL2RenderingContext.UNSIGNED_INT_2_10_10_10_REV",
  "WebGL2RenderingContext.MAX_ELEMENTS_VERTICES",
  "WebGL2RenderingContext.MAX_ELEMENTS_INDICES",
  "WebGL2RenderingContext.TEXTURE_MIN_LOD",
  "WebGL2RenderingContext.TEXTURE_MAX_LOD",
  "WebGL2RenderingContext.TEXTURE_BASE_LEVEL",
  "WebGL2RenderingContext.TEXTURE_MAX_LEVEL",
  "WebGL2RenderingContext.MIN",
  "WebGL2RenderingContext.MAX",
  "WebGL2RenderingContext.DEPTH_COMPONENT24",
  "WebGL2RenderingContext.MAX_TEXTURE_LOD_BIAS",
  "WebGL2RenderingContext.TEXTURE_COMPARE_MODE",
  "WebGL2RenderingContext.TEXTURE_COMPARE_FUNC",
  "WebGL2RenderingContext.CURRENT_QUERY",
  "WebGL2RenderingContext.QUERY_RESULT",
  "WebGL2RenderingContext.QUERY_RESULT_AVAILABLE",
  "WebGL2RenderingContext.STREAM_READ",
  "WebGL2RenderingContext.STREAM_COPY",
  "WebGL2RenderingContext.STATIC_READ",
  "WebGL2RenderingContext.STATIC_COPY",
  "WebGL2RenderingContext.DYNAMIC_READ",
  "WebGL2RenderingContext.DYNAMIC_COPY",
  "WebGL2RenderingContext.MAX_DRAW_BUFFERS",
  "WebGL2RenderingContext.DRAW_BUFFER0",
  "WebGL2RenderingContext.DRAW_BUFFER1",
  "WebGL2RenderingContext.DRAW_BUFFER2",
  "WebGL2RenderingContext.DRAW_BUFFER3",
  "WebGL2RenderingContext.DRAW_BUFFER4",
  "WebGL2RenderingContext.DRAW_BUFFER5",
  "WebGL2RenderingContext.DRAW_BUFFER6",
  "WebGL2RenderingContext.DRAW_BUFFER7",
  "WebGL2RenderingContext.DRAW_BUFFER8",
  "WebGL2RenderingContext.DRAW_BUFFER9",
  "WebGL2RenderingContext.DRAW_BUFFER10",
  "WebGL2RenderingContext.DRAW_BUFFER11",
  "WebGL2RenderingContext.DRAW_BUFFER12",
  "WebGL2RenderingContext.DRAW_BUFFER13",
  "WebGL2RenderingContext.DRAW_BUFFER14",
  "WebGL2RenderingContext.DRAW_BUFFER15",
  "WebGL2RenderingContext.MAX_FRAGMENT_UNIFORM_COMPONENTS",
  "WebGL2RenderingContext.MAX_VERTEX_UNIFORM_COMPONENTS",
  "WebGL2RenderingContext.SAMPLER_3D",
  "WebGL2RenderingContext.SAMPLER_2D_SHADOW",
  "WebGL2RenderingContext.FRAGMENT_SHADER_DERIVATIVE_HINT",
  "WebGL2RenderingContext.PIXEL_PACK_BUFFER",
  "WebGL2RenderingContext.PIXEL_UNPACK_BUFFER",
  "WebGL2RenderingContext.PIXEL_PACK_BUFFER_BINDING",
  "WebGL2RenderingContext.PIXEL_UNPACK_BUFFER_BINDING",
  "WebGL2RenderingContext.FLOAT_MAT2x3",
  "WebGL2RenderingContext.FLOAT_MAT2x4",
  "WebGL2RenderingContext.FLOAT_MAT3x2",
  "WebGL2RenderingContext.FLOAT_MAT3x4",
  "WebGL2RenderingContext.FLOAT_MAT4x2",
  "WebGL2RenderingContext.FLOAT_MAT4x3",
  "WebGL2RenderingContext.SRGB",
  "WebGL2RenderingContext.SRGB8",
  "WebGL2RenderingContext.SRGB8_ALPHA8",
  "WebGL2RenderingContext.COMPARE_REF_TO_TEXTURE",
  "WebGL2RenderingContext.RGBA32F",
  "WebGL2RenderingContext.RGB32F",
  "WebGL2RenderingContext.RGBA16F",
  "WebGL2RenderingContext.RGB16F",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_INTEGER",
  "WebGL2RenderingContext.MAX_ARRAY_TEXTURE_LAYERS",
  "WebGL2RenderingContext.MIN_PROGRAM_TEXEL_OFFSET",
  "WebGL2RenderingContext.MAX_PROGRAM_TEXEL_OFFSET",
  "WebGL2RenderingContext.MAX_VARYING_COMPONENTS",
  "WebGL2RenderingContext.TEXTURE_2D_ARRAY",
  "WebGL2RenderingContext.TEXTURE_BINDING_2D_ARRAY",
  "WebGL2RenderingContext.R11F_G11F_B10F",
  "WebGL2RenderingContext.UNSIGNED_INT_10F_11F_11F_REV",
  "WebGL2RenderingContext.RGB9_E5",
  "WebGL2RenderingContext.UNSIGNED_INT_5_9_9_9_REV",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_BUFFER_MODE",
  "WebGL2RenderingContext.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_VARYINGS",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_BUFFER_START",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_BUFFER_SIZE",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",
  "WebGL2RenderingContext.RASTERIZER_DISCARD",
  "WebGL2RenderingContext.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",
  "WebGL2RenderingContext.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",
  "WebGL2RenderingContext.INTERLEAVED_ATTRIBS",
  "WebGL2RenderingContext.SEPARATE_ATTRIBS",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_BUFFER",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_BUFFER_BINDING",
  "WebGL2RenderingContext.RGBA32UI",
  "WebGL2RenderingContext.RGB32UI",
  "WebGL2RenderingContext.RGBA16UI",
  "WebGL2RenderingContext.RGB16UI",
  "WebGL2RenderingContext.RGBA8UI",
  "WebGL2RenderingContext.RGB8UI",
  "WebGL2RenderingContext.RGBA32I",
  "WebGL2RenderingContext.RGB32I",
  "WebGL2RenderingContext.RGBA16I",
  "WebGL2RenderingContext.RGB16I",
  "WebGL2RenderingContext.RGBA8I",
  "WebGL2RenderingContext.RGB8I",
  "WebGL2RenderingContext.RED_INTEGER",
  "WebGL2RenderingContext.RGB_INTEGER",
  "WebGL2RenderingContext.RGBA_INTEGER",
  "WebGL2RenderingContext.SAMPLER_2D_ARRAY",
  "WebGL2RenderingContext.SAMPLER_2D_ARRAY_SHADOW",
  "WebGL2RenderingContext.SAMPLER_CUBE_SHADOW",
  "WebGL2RenderingContext.UNSIGNED_INT_VEC2",
  "WebGL2RenderingContext.UNSIGNED_INT_VEC3",
  "WebGL2RenderingContext.UNSIGNED_INT_VEC4",
  "WebGL2RenderingContext.INT_SAMPLER_2D",
  "WebGL2RenderingContext.INT_SAMPLER_3D",
  "WebGL2RenderingContext.INT_SAMPLER_CUBE",
  "WebGL2RenderingContext.INT_SAMPLER_2D_ARRAY",
  "WebGL2RenderingContext.UNSIGNED_INT_SAMPLER_2D",
  "WebGL2RenderingContext.UNSIGNED_INT_SAMPLER_3D",
  "WebGL2RenderingContext.UNSIGNED_INT_SAMPLER_CUBE",
  "WebGL2RenderingContext.UNSIGNED_INT_SAMPLER_2D_ARRAY",
  "WebGL2RenderingContext.DEPTH_COMPONENT32F",
  "WebGL2RenderingContext.DEPTH32F_STENCIL8",
  "WebGL2RenderingContext.FLOAT_32_UNSIGNED_INT_24_8_REV",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_RED_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",
  "WebGL2RenderingContext.FRAMEBUFFER_DEFAULT",
  "WebGL2RenderingContext.UNSIGNED_INT_24_8",
  "WebGL2RenderingContext.DEPTH24_STENCIL8",
  "WebGL2RenderingContext.UNSIGNED_NORMALIZED",
  "WebGL2RenderingContext.DRAW_FRAMEBUFFER_BINDING",
  "WebGL2RenderingContext.READ_FRAMEBUFFER",
  "WebGL2RenderingContext.DRAW_FRAMEBUFFER",
  "WebGL2RenderingContext.READ_FRAMEBUFFER_BINDING",
  "WebGL2RenderingContext.RENDERBUFFER_SAMPLES",
  "WebGL2RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",
  "WebGL2RenderingContext.MAX_COLOR_ATTACHMENTS",
  "WebGL2RenderingContext.COLOR_ATTACHMENT1",
  "WebGL2RenderingContext.COLOR_ATTACHMENT2",
  "WebGL2RenderingContext.COLOR_ATTACHMENT3",
  "WebGL2RenderingContext.COLOR_ATTACHMENT4",
  "WebGL2RenderingContext.COLOR_ATTACHMENT5",
  "WebGL2RenderingContext.COLOR_ATTACHMENT6",
  "WebGL2RenderingContext.COLOR_ATTACHMENT7",
  "WebGL2RenderingContext.COLOR_ATTACHMENT8",
  "WebGL2RenderingContext.COLOR_ATTACHMENT9",
  "WebGL2RenderingContext.COLOR_ATTACHMENT10",
  "WebGL2RenderingContext.COLOR_ATTACHMENT11",
  "WebGL2RenderingContext.COLOR_ATTACHMENT12",
  "WebGL2RenderingContext.COLOR_ATTACHMENT13",
  "WebGL2RenderingContext.COLOR_ATTACHMENT14",
  "WebGL2RenderingContext.COLOR_ATTACHMENT15",
  "WebGL2RenderingContext.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",
  "WebGL2RenderingContext.MAX_SAMPLES",
  "WebGL2RenderingContext.HALF_FLOAT",
  "WebGL2RenderingContext.RG",
  "WebGL2RenderingContext.RG_INTEGER",
  "WebGL2RenderingContext.R8",
  "WebGL2RenderingContext.RG8",
  "WebGL2RenderingContext.R16F",
  "WebGL2RenderingContext.R32F",
  "WebGL2RenderingContext.RG16F",
  "WebGL2RenderingContext.RG32F",
  "WebGL2RenderingContext.R8I",
  "WebGL2RenderingContext.R8UI",
  "WebGL2RenderingContext.R16I",
  "WebGL2RenderingContext.R16UI",
  "WebGL2RenderingContext.R32I",
  "WebGL2RenderingContext.R32UI",
  "WebGL2RenderingContext.RG8I",
  "WebGL2RenderingContext.RG8UI",
  "WebGL2RenderingContext.RG16I",
  "WebGL2RenderingContext.RG16UI",
  "WebGL2RenderingContext.RG32I",
  "WebGL2RenderingContext.RG32UI",
  "WebGL2RenderingContext.VERTEX_ARRAY_BINDING",
  "WebGL2RenderingContext.R8_SNORM",
  "WebGL2RenderingContext.RG8_SNORM",
  "WebGL2RenderingContext.RGB8_SNORM",
  "WebGL2RenderingContext.RGBA8_SNORM",
  "WebGL2RenderingContext.SIGNED_NORMALIZED",
  "WebGL2RenderingContext.COPY_READ_BUFFER",
  "WebGL2RenderingContext.COPY_WRITE_BUFFER",
  "WebGL2RenderingContext.COPY_READ_BUFFER_BINDING",
  "WebGL2RenderingContext.COPY_WRITE_BUFFER_BINDING",
  "WebGL2RenderingContext.UNIFORM_BUFFER",
  "WebGL2RenderingContext.UNIFORM_BUFFER_BINDING",
  "WebGL2RenderingContext.UNIFORM_BUFFER_START",
  "WebGL2RenderingContext.UNIFORM_BUFFER_SIZE",
  "WebGL2RenderingContext.MAX_VERTEX_UNIFORM_BLOCKS",
  "WebGL2RenderingContext.MAX_FRAGMENT_UNIFORM_BLOCKS",
  "WebGL2RenderingContext.MAX_COMBINED_UNIFORM_BLOCKS",
  "WebGL2RenderingContext.MAX_UNIFORM_BUFFER_BINDINGS",
  "WebGL2RenderingContext.MAX_UNIFORM_BLOCK_SIZE",
  "WebGL2RenderingContext.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",
  "WebGL2RenderingContext.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",
  "WebGL2RenderingContext.UNIFORM_BUFFER_OFFSET_ALIGNMENT",
  "WebGL2RenderingContext.ACTIVE_UNIFORM_BLOCKS",
  "WebGL2RenderingContext.UNIFORM_TYPE",
  "WebGL2RenderingContext.UNIFORM_SIZE",
  "WebGL2RenderingContext.UNIFORM_BLOCK_INDEX",
  "WebGL2RenderingContext.UNIFORM_OFFSET",
  "WebGL2RenderingContext.UNIFORM_ARRAY_STRIDE",
  "WebGL2RenderingContext.UNIFORM_MATRIX_STRIDE",
  "WebGL2RenderingContext.UNIFORM_IS_ROW_MAJOR",
  "WebGL2RenderingContext.UNIFORM_BLOCK_BINDING",
  "WebGL2RenderingContext.UNIFORM_BLOCK_DATA_SIZE",
  "WebGL2RenderingContext.UNIFORM_BLOCK_ACTIVE_UNIFORMS",
  "WebGL2RenderingContext.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",
  "WebGL2RenderingContext.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",
  "WebGL2RenderingContext.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",
  "WebGL2RenderingContext.INVALID_INDEX",
  "WebGL2RenderingContext.MAX_VERTEX_OUTPUT_COMPONENTS",
  "WebGL2RenderingContext.MAX_FRAGMENT_INPUT_COMPONENTS",
  "WebGL2RenderingContext.MAX_SERVER_WAIT_TIMEOUT",
  "WebGL2RenderingContext.OBJECT_TYPE",
  "WebGL2RenderingContext.SYNC_CONDITION",
  "WebGL2RenderingContext.SYNC_STATUS",
  "WebGL2RenderingContext.SYNC_FLAGS",
  "WebGL2RenderingContext.SYNC_FENCE",
  "WebGL2RenderingContext.SYNC_GPU_COMMANDS_COMPLETE",
  "WebGL2RenderingContext.UNSIGNALED",
  "WebGL2RenderingContext.SIGNALED",
  "WebGL2RenderingContext.ALREADY_SIGNALED",
  "WebGL2RenderingContext.TIMEOUT_EXPIRED",
  "WebGL2RenderingContext.CONDITION_SATISFIED",
  "WebGL2RenderingContext.WAIT_FAILED",
  "WebGL2RenderingContext.SYNC_FLUSH_COMMANDS_BIT",
  "WebGL2RenderingContext.VERTEX_ATTRIB_ARRAY_DIVISOR",
  "WebGL2RenderingContext.ANY_SAMPLES_PASSED",
  "WebGL2RenderingContext.ANY_SAMPLES_PASSED_CONSERVATIVE",
  "WebGL2RenderingContext.SAMPLER_BINDING",
  "WebGL2RenderingContext.RGB10_A2UI",
  "WebGL2RenderingContext.INT_2_10_10_10_REV",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_PAUSED",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_ACTIVE",
  "WebGL2RenderingContext.TRANSFORM_FEEDBACK_BINDING",
  "WebGL2RenderingContext.TEXTURE_IMMUTABLE_FORMAT",
  "WebGL2RenderingContext.MAX_ELEMENT_INDEX",
  "WebGL2RenderingContext.TEXTURE_IMMUTABLE_LEVELS",
  "WebGL2RenderingContext.TIMEOUT_IGNORED",
  "WebGL2RenderingContext.MAX_CLIENT_WAIT_TIMEOUT_WEBGL",
  "WebGLRenderingContext.DEPTH_BUFFER_BIT",
  "WebGLRenderingContext.STENCIL_BUFFER_BIT",
  "WebGLRenderingContext.COLOR_BUFFER_BIT",
  "WebGLRenderingContext.POINTS",
  "WebGLRenderingContext.LINES",
  "WebGLRenderingContext.LINE_LOOP",
  "WebGLRenderingContext.LINE_STRIP",
  "WebGLRenderingContext.TRIANGLES",
  "WebGLRenderingContext.TRIANGLE_STRIP",
  "WebGLRenderingContext.TRIANGLE_FAN",
  "WebGLRenderingContext.ZERO",
  "WebGLRenderingContext.ONE",
  "WebGLRenderingContext.SRC_COLOR",
  "WebGLRenderingContext.ONE_MINUS_SRC_COLOR",
  "WebGLRenderingContext.SRC_ALPHA",
  "WebGLRenderingContext.ONE_MINUS_SRC_ALPHA",
  "WebGLRenderingContext.DST_ALPHA",
  "WebGLRenderingContext.ONE_MINUS_DST_ALPHA",
  "WebGLRenderingContext.DST_COLOR",
  "WebGLRenderingContext.ONE_MINUS_DST_COLOR",
  "WebGLRenderingContext.SRC_ALPHA_SATURATE",
  "WebGLRenderingContext.FUNC_ADD",
  "WebGLRenderingContext.BLEND_EQUATION",
  "WebGLRenderingContext.BLEND_EQUATION_RGB",
  "WebGLRenderingContext.BLEND_EQUATION_ALPHA",
  "WebGLRenderingContext.FUNC_SUBTRACT",
  "WebGLRenderingContext.FUNC_REVERSE_SUBTRACT",
  "WebGLRenderingContext.BLEND_DST_RGB",
  "WebGLRenderingContext.BLEND_SRC_RGB",
  "WebGLRenderingContext.BLEND_DST_ALPHA",
  "WebGLRenderingContext.BLEND_SRC_ALPHA",
  "WebGLRenderingContext.CONSTANT_COLOR",
  "WebGLRenderingContext.ONE_MINUS_CONSTANT_COLOR",
  "WebGLRenderingContext.CONSTANT_ALPHA",
  "WebGLRenderingContext.ONE_MINUS_CONSTANT_ALPHA",
  "WebGLRenderingContext.BLEND_COLOR",
  "WebGLRenderingContext.ARRAY_BUFFER",
  "WebGLRenderingContext.ELEMENT_ARRAY_BUFFER",
  "WebGLRenderingContext.ARRAY_BUFFER_BINDING",
  "WebGLRenderingContext.ELEMENT_ARRAY_BUFFER_BINDING",
  "WebGLRenderingContext.STREAM_DRAW",
  "WebGLRenderingContext.STATIC_DRAW",
  "WebGLRenderingContext.DYNAMIC_DRAW",
  "WebGLRenderingContext.BUFFER_SIZE",
  "WebGLRenderingContext.BUFFER_USAGE",
  "WebGLRenderingContext.CURRENT_VERTEX_ATTRIB",
  "WebGLRenderingContext.FRONT",
  "WebGLRenderingContext.BACK",
  "WebGLRenderingContext.FRONT_AND_BACK",
  "WebGLRenderingContext.TEXTURE_2D",
  "WebGLRenderingContext.CULL_FACE",
  "WebGLRenderingContext.BLEND",
  "WebGLRenderingContext.DITHER",
  "WebGLRenderingContext.STENCIL_TEST",
  "WebGLRenderingContext.DEPTH_TEST",
  "WebGLRenderingContext.SCISSOR_TEST",
  "WebGLRenderingContext.POLYGON_OFFSET_FILL",
  "WebGLRenderingContext.SAMPLE_ALPHA_TO_COVERAGE",
  "WebGLRenderingContext.SAMPLE_COVERAGE",
  "WebGLRenderingContext.NO_ERROR",
  "WebGLRenderingContext.INVALID_ENUM",
  "WebGLRenderingContext.INVALID_VALUE",
  "WebGLRenderingContext.INVALID_OPERATION",
  "WebGLRenderingContext.OUT_OF_MEMORY",
  "WebGLRenderingContext.CW",
  "WebGLRenderingContext.CCW",
  "WebGLRenderingContext.LINE_WIDTH",
  "WebGLRenderingContext.ALIASED_POINT_SIZE_RANGE",
  "WebGLRenderingContext.ALIASED_LINE_WIDTH_RANGE",
  "WebGLRenderingContext.CULL_FACE_MODE",
  "WebGLRenderingContext.FRONT_FACE",
  "WebGLRenderingContext.DEPTH_RANGE",
  "WebGLRenderingContext.DEPTH_WRITEMASK",
  "WebGLRenderingContext.DEPTH_CLEAR_VALUE",
  "WebGLRenderingContext.DEPTH_FUNC",
  "WebGLRenderingContext.STENCIL_CLEAR_VALUE",
  "WebGLRenderingContext.STENCIL_FUNC",
  "WebGLRenderingContext.STENCIL_FAIL",
  "WebGLRenderingContext.STENCIL_PASS_DEPTH_FAIL",
  "WebGLRenderingContext.STENCIL_PASS_DEPTH_PASS",
  "WebGLRenderingContext.STENCIL_REF",
  "WebGLRenderingContext.STENCIL_VALUE_MASK",
  "WebGLRenderingContext.STENCIL_WRITEMASK",
  "WebGLRenderingContext.STENCIL_BACK_FUNC",
  "WebGLRenderingContext.STENCIL_BACK_FAIL",
  "WebGLRenderingContext.STENCIL_BACK_PASS_DEPTH_FAIL",
  "WebGLRenderingContext.STENCIL_BACK_PASS_DEPTH_PASS",
  "WebGLRenderingContext.STENCIL_BACK_REF",
  "WebGLRenderingContext.STENCIL_BACK_VALUE_MASK",
  "WebGLRenderingContext.STENCIL_BACK_WRITEMASK",
  "WebGLRenderingContext.VIEWPORT",
  "WebGLRenderingContext.SCISSOR_BOX",
  "WebGLRenderingContext.COLOR_CLEAR_VALUE",
  "WebGLRenderingContext.COLOR_WRITEMASK",
  "WebGLRenderingContext.UNPACK_ALIGNMENT",
  "WebGLRenderingContext.PACK_ALIGNMENT",
  "WebGLRenderingContext.MAX_TEXTURE_SIZE",
  "WebGLRenderingContext.MAX_VIEWPORT_DIMS",
  "WebGLRenderingContext.SUBPIXEL_BITS",
  "WebGLRenderingContext.RED_BITS",
  "WebGLRenderingContext.GREEN_BITS",
  "WebGLRenderingContext.BLUE_BITS",
  "WebGLRenderingContext.ALPHA_BITS",
  "WebGLRenderingContext.DEPTH_BITS",
  "WebGLRenderingContext.STENCIL_BITS",
  "WebGLRenderingContext.POLYGON_OFFSET_UNITS",
  "WebGLRenderingContext.POLYGON_OFFSET_FACTOR",
  "WebGLRenderingContext.TEXTURE_BINDING_2D",
  "WebGLRenderingContext.SAMPLE_BUFFERS",
  "WebGLRenderingContext.SAMPLES",
  "WebGLRenderingContext.SAMPLE_COVERAGE_VALUE",
  "WebGLRenderingContext.SAMPLE_COVERAGE_INVERT",
  "WebGLRenderingContext.COMPRESSED_TEXTURE_FORMATS",
  "WebGLRenderingContext.DONT_CARE",
  "WebGLRenderingContext.FASTEST",
  "WebGLRenderingContext.NICEST",
  "WebGLRenderingContext.GENERATE_MIPMAP_HINT",
  "WebGLRenderingContext.BYTE",
  "WebGLRenderingContext.UNSIGNED_BYTE",
  "WebGLRenderingContext.SHORT",
  "WebGLRenderingContext.UNSIGNED_SHORT",
  "WebGLRenderingContext.INT",
  "WebGLRenderingContext.UNSIGNED_INT",
  "WebGLRenderingContext.FLOAT",
  "WebGLRenderingContext.DEPTH_COMPONENT",
  "WebGLRenderingContext.ALPHA",
  "WebGLRenderingContext.RGB",
  "WebGLRenderingContext.RGBA",
  "WebGLRenderingContext.LUMINANCE",
  "WebGLRenderingContext.LUMINANCE_ALPHA",
  "WebGLRenderingContext.UNSIGNED_SHORT_4_4_4_4",
  "WebGLRenderingContext.UNSIGNED_SHORT_5_5_5_1",
  "WebGLRenderingContext.UNSIGNED_SHORT_5_6_5",
  "WebGLRenderingContext.FRAGMENT_SHADER",
  "WebGLRenderingContext.VERTEX_SHADER",
  "WebGLRenderingContext.MAX_VERTEX_ATTRIBS",
  "WebGLRenderingContext.MAX_VERTEX_UNIFORM_VECTORS",
  "WebGLRenderingContext.MAX_VARYING_VECTORS",
  "WebGLRenderingContext.MAX_COMBINED_TEXTURE_IMAGE_UNITS",
  "WebGLRenderingContext.MAX_VERTEX_TEXTURE_IMAGE_UNITS",
  "WebGLRenderingContext.MAX_TEXTURE_IMAGE_UNITS",
  "WebGLRenderingContext.MAX_FRAGMENT_UNIFORM_VECTORS",
  "WebGLRenderingContext.SHADER_TYPE",
  "WebGLRenderingContext.DELETE_STATUS",
  "WebGLRenderingContext.LINK_STATUS",
  "WebGLRenderingContext.VALIDATE_STATUS",
  "WebGLRenderingContext.ATTACHED_SHADERS",
  "WebGLRenderingContext.ACTIVE_UNIFORMS",
  "WebGLRenderingContext.ACTIVE_ATTRIBUTES",
  "WebGLRenderingContext.SHADING_LANGUAGE_VERSION",
  "WebGLRenderingContext.CURRENT_PROGRAM",
  "WebGLRenderingContext.NEVER",
  "WebGLRenderingContext.LESS",
  "WebGLRenderingContext.EQUAL",
  "WebGLRenderingContext.LEQUAL",
  "WebGLRenderingContext.GREATER",
  "WebGLRenderingContext.NOTEQUAL",
  "WebGLRenderingContext.GEQUAL",
  "WebGLRenderingContext.ALWAYS",
  "WebGLRenderingContext.KEEP",
  "WebGLRenderingContext.REPLACE",
  "WebGLRenderingContext.INCR",
  "WebGLRenderingContext.DECR",
  "WebGLRenderingContext.INVERT",
  "WebGLRenderingContext.INCR_WRAP",
  "WebGLRenderingContext.DECR_WRAP",
  "WebGLRenderingContext.VENDOR",
  "WebGLRenderingContext.RENDERER",
  "WebGLRenderingContext.VERSION",
  "WebGLRenderingContext.NEAREST",
  "WebGLRenderingContext.LINEAR",
  "WebGLRenderingContext.NEAREST_MIPMAP_NEAREST",
  "WebGLRenderingContext.LINEAR_MIPMAP_NEAREST",
  "WebGLRenderingContext.NEAREST_MIPMAP_LINEAR",
  "WebGLRenderingContext.LINEAR_MIPMAP_LINEAR",
  "WebGLRenderingContext.TEXTURE_MAG_FILTER",
  "WebGLRenderingContext.TEXTURE_MIN_FILTER",
  "WebGLRenderingContext.TEXTURE_WRAP_S",
  "WebGLRenderingContext.TEXTURE_WRAP_T",
  "WebGLRenderingContext.TEXTURE",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP",
  "WebGLRenderingContext.TEXTURE_BINDING_CUBE_MAP",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z",
  "WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z",
  "WebGLRenderingContext.MAX_CUBE_MAP_TEXTURE_SIZE",
  "WebGLRenderingContext.TEXTURE0",
  "WebGLRenderingContext.TEXTURE1",
  "WebGLRenderingContext.TEXTURE2",
  "WebGLRenderingContext.TEXTURE3",
  "WebGLRenderingContext.TEXTURE4",
  "WebGLRenderingContext.TEXTURE5",
  "WebGLRenderingContext.TEXTURE6",
  "WebGLRenderingContext.TEXTURE7",
  "WebGLRenderingContext.TEXTURE8",
  "WebGLRenderingContext.TEXTURE9",
  "WebGLRenderingContext.TEXTURE10",
  "WebGLRenderingContext.TEXTURE11",
  "WebGLRenderingContext.TEXTURE12",
  "WebGLRenderingContext.TEXTURE13",
  "WebGLRenderingContext.TEXTURE14",
  "WebGLRenderingContext.TEXTURE15",
  "WebGLRenderingContext.TEXTURE16",
  "WebGLRenderingContext.TEXTURE17",
  "WebGLRenderingContext.TEXTURE18",
  "WebGLRenderingContext.TEXTURE19",
  "WebGLRenderingContext.TEXTURE20",
  "WebGLRenderingContext.TEXTURE21",
  "WebGLRenderingContext.TEXTURE22",
  "WebGLRenderingContext.TEXTURE23",
  "WebGLRenderingContext.TEXTURE24",
  "WebGLRenderingContext.TEXTURE25",
  "WebGLRenderingContext.TEXTURE26",
  "WebGLRenderingContext.TEXTURE27",
  "WebGLRenderingContext.TEXTURE28",
  "WebGLRenderingContext.TEXTURE29",
  "WebGLRenderingContext.TEXTURE30",
  "WebGLRenderingContext.TEXTURE31",
  "WebGLRenderingContext.ACTIVE_TEXTURE",
  "WebGLRenderingContext.REPEAT",
  "WebGLRenderingContext.CLAMP_TO_EDGE",
  "WebGLRenderingContext.MIRRORED_REPEAT",
  "WebGLRenderingContext.FLOAT_VEC2",
  "WebGLRenderingContext.FLOAT_VEC3",
  "WebGLRenderingContext.FLOAT_VEC4",
  "WebGLRenderingContext.INT_VEC2",
  "WebGLRenderingContext.INT_VEC3",
  "WebGLRenderingContext.INT_VEC4",
  "WebGLRenderingContext.BOOL",
  "WebGLRenderingContext.BOOL_VEC2",
  "WebGLRenderingContext.BOOL_VEC3",
  "WebGLRenderingContext.BOOL_VEC4",
  "WebGLRenderingContext.FLOAT_MAT2",
  "WebGLRenderingContext.FLOAT_MAT3",
  "WebGLRenderingContext.FLOAT_MAT4",
  "WebGLRenderingContext.SAMPLER_2D",
  "WebGLRenderingContext.SAMPLER_CUBE",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_ENABLED",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_SIZE",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_STRIDE",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_TYPE",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_NORMALIZED",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_POINTER",
  "WebGLRenderingContext.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",
  "WebGLRenderingContext.IMPLEMENTATION_COLOR_READ_TYPE",
  "WebGLRenderingContext.IMPLEMENTATION_COLOR_READ_FORMAT",
  "WebGLRenderingContext.COMPILE_STATUS",
  "WebGLRenderingContext.LOW_FLOAT",
  "WebGLRenderingContext.MEDIUM_FLOAT",
  "WebGLRenderingContext.HIGH_FLOAT",
  "WebGLRenderingContext.LOW_INT",
  "WebGLRenderingContext.MEDIUM_INT",
  "WebGLRenderingContext.HIGH_INT",
  "WebGLRenderingContext.FRAMEBUFFER",
  "WebGLRenderingContext.RENDERBUFFER",
  "WebGLRenderingContext.RGBA4",
  "WebGLRenderingContext.RGB5_A1",
  "WebGLRenderingContext.RGB565",
  "WebGLRenderingContext.DEPTH_COMPONENT16",
  "WebGLRenderingContext.STENCIL_INDEX8",
  "WebGLRenderingContext.DEPTH_STENCIL",
  "WebGLRenderingContext.RENDERBUFFER_WIDTH",
  "WebGLRenderingContext.RENDERBUFFER_HEIGHT",
  "WebGLRenderingContext.RENDERBUFFER_INTERNAL_FORMAT",
  "WebGLRenderingContext.RENDERBUFFER_RED_SIZE",
  "WebGLRenderingContext.RENDERBUFFER_GREEN_SIZE",
  "WebGLRenderingContext.RENDERBUFFER_BLUE_SIZE",
  "WebGLRenderingContext.RENDERBUFFER_ALPHA_SIZE",
  "WebGLRenderingContext.RENDERBUFFER_DEPTH_SIZE",
  "WebGLRenderingContext.RENDERBUFFER_STENCIL_SIZE",
  "WebGLRenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",
  "WebGLRenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",
  "WebGLRenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",
  "WebGLRenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",
  "WebGLRenderingContext.COLOR_ATTACHMENT0",
  "WebGLRenderingContext.DEPTH_ATTACHMENT",
  "WebGLRenderingContext.STENCIL_ATTACHMENT",
  "WebGLRenderingContext.DEPTH_STENCIL_ATTACHMENT",
  "WebGLRenderingContext.NONE",
  "WebGLRenderingContext.FRAMEBUFFER_COMPLETE",
  "WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_ATTACHMENT",
  "WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",
  "WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_DIMENSIONS",
  "WebGLRenderingContext.FRAMEBUFFER_UNSUPPORTED",
  "WebGLRenderingContext.FRAMEBUFFER_BINDING",
  "WebGLRenderingContext.RENDERBUFFER_BINDING",
  "WebGLRenderingContext.MAX_RENDERBUFFER_SIZE",
  "WebGLRenderingContext.INVALID_FRAMEBUFFER_OPERATION",
  "WebGLRenderingContext.UNPACK_FLIP_Y_WEBGL",
  "WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL",
  "WebGLRenderingContext.CONTEXT_LOST_WEBGL",
  "WebGLRenderingContext.UNPACK_COLORSPACE_CONVERSION_WEBGL",
  "WebGLRenderingContext.BROWSER_DEFAULT_WEBGL",
  "WebKitCSSMatrix.fromFloat32Array",
  "WebKitCSSMatrix.fromFloat64Array",
  "WebKitCSSMatrix.fromMatrix",
  "WebSocket.CONNECTING",
  "WebSocket.OPEN",
  "WebSocket.CLOSING",
  "WebSocket.CLOSED",
  "WheelEvent.DOM_DELTA_PIXEL",
  "WheelEvent.DOM_DELTA_LINE",
  "WheelEvent.DOM_DELTA_PAGE",
  "Window.TEMPORARY",
  "Window.PERSISTENT",
  "XMLHttpRequest.UNSENT",
  "XMLHttpRequest.OPENED",
  "XMLHttpRequest.HEADERS_RECEIVED",
  "XMLHttpRequest.LOADING",
  "XMLHttpRequest.DONE",
  "XPathResult.ANY_TYPE",
  "XPathResult.NUMBER_TYPE",
  "XPathResult.STRING_TYPE",
  "XPathResult.BOOLEAN_TYPE",
  "XPathResult.UNORDERED_NODE_ITERATOR_TYPE",
  "XPathResult.ORDERED_NODE_ITERATOR_TYPE",
  "XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE",
  "XPathResult.ORDERED_NODE_SNAPSHOT_TYPE",
  "XPathResult.ANY_UNORDERED_NODE_TYPE",
  "XPathResult.FIRST_ORDERED_NODE_TYPE",
  "XRWebGLLayer.getNativeFramebufferScaleFactor",
  "AbortController.abort",
  "AbsoluteOrientationSensor.populateMatrix",
  "AbsoluteOrientationSensor.start",
  "AbsoluteOrientationSensor.stop",
  "AbsoluteOrientationSensor.addEventListener",
  "AbsoluteOrientationSensor.dispatchEvent",
  "AbsoluteOrientationSensor.removeEventListener",
  "Accelerometer.start",
  "Accelerometer.stop",
  "Accelerometer.addEventListener",
  "Accelerometer.dispatchEvent",
  "Accelerometer.removeEventListener",
  "Animation.cancel",
  "Animation.finish",
  "Animation.pause",
  "Animation.play",
  "Animation.reverse",
  "Animation.updatePlaybackRate",
  "Animation.commitStyles",
  "Animation.persist",
  "Animation.addEventListener",
  "Animation.dispatchEvent",
  "Animation.removeEventListener",
  "Audio.addTextTrack",
  "Audio.canPlayType",
  "Audio.captureStream",
  "Audio.load",
  "Audio.pause",
  "Audio.play",
  "Audio.setSinkId",
  "Audio.setMediaKeys",
  "Audio.attachInternals",
  "Audio.blur",
  "Audio.click",
  "Audio.focus",
  "Audio.after",
  "Audio.animate",
  "Audio.append",
  "Audio.attachShadow",
  "Audio.before",
  "Audio.closest",
  "Audio.computedStyleMap",
  "Audio.getAttribute",
  "Audio.getAttributeNS",
  "Audio.getAttributeNames",
  "Audio.getAttributeNode",
  "Audio.getAttributeNodeNS",
  "Audio.getBoundingClientRect",
  "Audio.getClientRects",
  "Audio.getElementsByClassName",
  "Audio.getElementsByTagName",
  "Audio.getElementsByTagNameNS",
  "Audio.getInnerHTML",
  "Audio.hasAttribute",
  "Audio.hasAttributeNS",
  "Audio.hasAttributes",
  "Audio.hasPointerCapture",
  "Audio.insertAdjacentElement",
  "Audio.insertAdjacentHTML",
  "Audio.insertAdjacentText",
  "Audio.matches",
  "Audio.prepend",
  "Audio.querySelector",
  "Audio.querySelectorAll",
  "Audio.releasePointerCapture",
  "Audio.remove",
  "Audio.removeAttribute",
  "Audio.removeAttributeNS",
  "Audio.removeAttributeNode",
  "Audio.replaceChildren",
  "Audio.replaceWith",
  "Audio.requestFullscreen",
  "Audio.requestPointerLock",
  "Audio.scroll",
  "Audio.scrollBy",
  "Audio.scrollIntoView",
  "Audio.scrollIntoViewIfNeeded",
  "Audio.scrollTo",
  "Audio.setAttribute",
  "Audio.setAttributeNS",
  "Audio.setAttributeNode",
  "Audio.setAttributeNodeNS",
  "Audio.setPointerCapture",
  "Audio.toggleAttribute",
  "Audio.webkitMatchesSelector",
  "Audio.webkitRequestFullScreen",
  "Audio.webkitRequestFullscreen",
  "Audio.checkVisibility",
  "Audio.getAnimations",
  "Audio.setHTML",
  "Audio.appendChild",
  "Audio.cloneNode",
  "Audio.compareDocumentPosition",
  "Audio.contains",
  "Audio.getRootNode",
  "Audio.hasChildNodes",
  "Audio.insertBefore",
  "Audio.isDefaultNamespace",
  "Audio.isEqualNode",
  "Audio.isSameNode",
  "Audio.lookupNamespaceURI",
  "Audio.lookupPrefix",
  "Audio.normalize",
  "Audio.removeChild",
  "Audio.replaceChild",
  "Audio.addEventListener",
  "Audio.dispatchEvent",
  "Audio.removeEventListener",
  "AudioContext.close",
  "AudioContext.createMediaElementSource",
  "AudioContext.createMediaStreamDestination",
  "AudioContext.createMediaStreamSource",
  "AudioContext.getOutputTimestamp",
  "AudioContext.resume",
  "AudioContext.suspend",
  "AudioContext.createAnalyser",
  "AudioContext.createBiquadFilter",
  "AudioContext.createBuffer",
  "AudioContext.createBufferSource",
  "AudioContext.createChannelMerger",
  "AudioContext.createChannelSplitter",
  "AudioContext.createConstantSource",
  "AudioContext.createConvolver",
  "AudioContext.createDelay",
  "AudioContext.createDynamicsCompressor",
  "AudioContext.createGain",
  "AudioContext.createIIRFilter",
  "AudioContext.createOscillator",
  "AudioContext.createPanner",
  "AudioContext.createPeriodicWave",
  "AudioContext.createScriptProcessor",
  "AudioContext.createStereoPanner",
  "AudioContext.createWaveShaper",
  "AudioContext.decodeAudioData",
  "AudioContext.addEventListener",
  "AudioContext.dispatchEvent",
  "AudioContext.removeEventListener",
  "BarcodeDetector.detect",
  "Blob.arrayBuffer",
  "Blob.slice",
  "Blob.stream",
  "Blob.text",
  "CaptureController.setFocusBehavior",
  "Comment.after",
  "Comment.appendData",
  "Comment.before",
  "Comment.deleteData",
  "Comment.insertData",
  "Comment.remove",
  "Comment.replaceData",
  "Comment.replaceWith",
  "Comment.substringData",
  "Comment.appendChild",
  "Comment.cloneNode",
  "Comment.compareDocumentPosition",
  "Comment.contains",
  "Comment.getRootNode",
  "Comment.hasChildNodes",
  "Comment.insertBefore",
  "Comment.isDefaultNamespace",
  "Comment.isEqualNode",
  "Comment.isSameNode",
  "Comment.lookupNamespaceURI",
  "Comment.lookupPrefix",
  "Comment.normalize",
  "Comment.removeChild",
  "Comment.replaceChild",
  "Comment.addEventListener",
  "Comment.dispatchEvent",
  "Comment.removeEventListener",
  "CSSStyleSheet.addRule",
  "CSSStyleSheet.deleteRule",
  "CSSStyleSheet.insertRule",
  "CSSStyleSheet.removeRule",
  "CSSStyleSheet.replace",
  "CSSStyleSheet.replaceSync",
  "DataTransfer.clearData",
  "DataTransfer.getData",
  "DataTransfer.setData",
  "DataTransfer.setDragImage",  "Document.adoptNode",
  "Document.append",
  "Document.captureEvents",
  "Document.caretRangeFromPoint",
  "Document.clear",
  "Document.close",
  "Document.createAttribute",
  "Document.createAttributeNS",
  "Document.createCDATASection",
  "Document.createComment",
  "Document.createDocumentFragment",
  "Document.createElement",
  "Document.createElementNS",
  "Document.createEvent",
  "Document.createExpression",
  "Document.createNSResolver",
  "Document.createNodeIterator",
  "Document.createProcessingInstruction",
  "Document.createRange",
  "Document.createTextNode",
  "Document.createTreeWalker",
  "Document.elementFromPoint",
  "Document.elementsFromPoint",
  "Document.evaluate",
  "Document.execCommand",
  "Document.exitFullscreen",
  "Document.exitPointerLock",
  "Document.getElementById",
  "Document.getElementsByClassName",
  "Document.getElementsByName",
  "Document.getElementsByTagName",
  "Document.getElementsByTagNameNS",
  "Document.getSelection",
  "Document.hasFocus",
  "Document.importNode",
  "Document.open",
  "Document.prepend",
  "Document.queryCommandEnabled",
  "Document.queryCommandIndeterm",
  "Document.queryCommandState",
  "Document.queryCommandSupported",
  "Document.queryCommandValue",
  "Document.querySelector",
  "Document.querySelectorAll",
  "Document.releaseEvents",
  "Document.replaceChildren",
  "Document.webkitCancelFullScreen",
  "Document.webkitExitFullscreen",
  "Document.write",
  "Document.writeln",
  "Document.exitPictureInPicture",
  "Document.getAnimations",
  "Document.appendChild",
  "Document.cloneNode",
  "Document.compareDocumentPosition",
  "Document.contains",
  "Document.getRootNode",
  "Document.hasChildNodes",
  "Document.insertBefore",
  "Document.isDefaultNamespace",
  "Document.isEqualNode",
  "Document.isSameNode",
  "Document.lookupNamespaceURI",
  "Document.lookupPrefix",
  "Document.normalize",
  "Document.removeChild",
  "Document.replaceChild",
  "Document.addEventListener",
  "Document.dispatchEvent",
  "Document.removeEventListener",
  "DocumentFragment.append",
  "DocumentFragment.getElementById",
  "DocumentFragment.prepend",
  "DocumentFragment.querySelector",
  "DocumentFragment.querySelectorAll",
  "DocumentFragment.replaceChildren",
  "DocumentFragment.appendChild",
  "DocumentFragment.cloneNode",
  "DocumentFragment.compareDocumentPosition",
  "DocumentFragment.contains",
  "DocumentFragment.getRootNode",
  "DocumentFragment.hasChildNodes",
  "DocumentFragment.insertBefore",
  "DocumentFragment.isDefaultNamespace",
  "DocumentFragment.isEqualNode",
  "DocumentFragment.isSameNode",
  "DocumentFragment.lookupNamespaceURI",
  "DocumentFragment.lookupPrefix",
  "DocumentFragment.normalize",
  "DocumentFragment.removeChild",
  "DocumentFragment.replaceChild",
  "DocumentFragment.addEventListener",
  "DocumentFragment.dispatchEvent",
  "DocumentFragment.removeEventListener",
  "DOMMatrix.invertSelf",
  "DOMMatrix.multiplySelf",
  "DOMMatrix.preMultiplySelf",
  "DOMMatrix.rotateAxisAngleSelf",
  "DOMMatrix.rotateFromVectorSelf",
  "DOMMatrix.rotateSelf",
  "DOMMatrix.scale3dSelf",
  "DOMMatrix.scaleSelf",
  "DOMMatrix.skewXSelf",
  "DOMMatrix.skewYSelf",
  "DOMMatrix.translateSelf",
  "DOMMatrix.setMatrixValue",
  "DOMMatrix.flipX",
  "DOMMatrix.flipY",
  "DOMMatrix.inverse",
  "DOMMatrix.multiply",
  "DOMMatrix.rotate",
  "DOMMatrix.rotateAxisAngle",
  "DOMMatrix.rotateFromVector",
  "DOMMatrix.scale",
  "DOMMatrix.scale3d",
  "DOMMatrix.scaleNonUniform",
  "DOMMatrix.skewX",
  "DOMMatrix.skewY",
  "DOMMatrix.toFloat32Array",
  "DOMMatrix.toFloat64Array",
  "DOMMatrix.toJSON",
  "DOMMatrix.transformPoint",
  "DOMMatrix.translate",
  "DOMMatrix.toString",
  "DOMMatrixReadOnly.flipX",
  "DOMMatrixReadOnly.flipY",
  "DOMMatrixReadOnly.inverse",
  "DOMMatrixReadOnly.multiply",
  "DOMMatrixReadOnly.rotate",
  "DOMMatrixReadOnly.rotateAxisAngle",
  "DOMMatrixReadOnly.rotateFromVector",
  "DOMMatrixReadOnly.scale",
  "DOMMatrixReadOnly.scale3d",
  "DOMMatrixReadOnly.scaleNonUniform",
  "DOMMatrixReadOnly.skewX",
  "DOMMatrixReadOnly.skewY",
  "DOMMatrixReadOnly.toFloat32Array",
  "DOMMatrixReadOnly.toFloat64Array",
  "DOMMatrixReadOnly.toJSON",
  "DOMMatrixReadOnly.transformPoint",
  "DOMMatrixReadOnly.translate",
  "DOMMatrixReadOnly.toString",
  "DOMParser.parseFromString",
  "DOMPoint.matrixTransform",
  "DOMPoint.toJSON",
  "DOMPointReadOnly.matrixTransform",
  "DOMPointReadOnly.toJSON",
  "DOMQuad.getBounds",
  "DOMQuad.toJSON",
  "DOMRect.toJSON",
  "DOMRectReadOnly.toJSON",
  "EventTarget.addEventListener",
  "EventTarget.dispatchEvent",
  "EventTarget.removeEventListener",
  "EyeDropper.open",
  "FileReader.abort",
  "FileReader.readAsArrayBuffer",
  "FileReader.readAsBinaryString",
  "FileReader.readAsDataURL",
  "FileReader.readAsText",
  "FileReader.addEventListener",
  "FileReader.dispatchEvent",
  "FileReader.removeEventListener",
  "FormData.append",
  "FormData.delete",
  "FormData.get",
  "FormData.getAll",
  "FormData.has",
  "FormData.set",
  "FormData.entries",
  "FormData.forEach",
  "FormData.keys",
  "FormData.values",
  "GravitySensor.start",
  "GravitySensor.stop",
  "GravitySensor.addEventListener",
  "GravitySensor.dispatchEvent",
  "GravitySensor.removeEventListener",
  "Gyroscope.start",
  "Gyroscope.stop",
  "Gyroscope.addEventListener",
  "Gyroscope.dispatchEvent",
  "Gyroscope.removeEventListener",
  "Headers.append",
  "Headers.delete",
  "Headers.get",
  "Headers.has",
  "Headers.set",
  "Headers.entries",
  "Headers.forEach",
  "Headers.keys",
  "Headers.values",
  "Highlight.add",
  "Highlight.clear",
  "Highlight.delete",
  "Highlight.entries",
  "Highlight.forEach",
  "Highlight.has",
  "Highlight.keys",
  "Highlight.values",
  "IdleDetector.start",
  "IdleDetector.addEventListener",
  "IdleDetector.dispatchEvent",
  "IdleDetector.removeEventListener",
  "Image.decode",
  "Image.attachInternals",
  "Image.blur",
  "Image.click",
  "Image.focus",
  "Image.after",
  "Image.animate",
  "Image.append",
  "Image.attachShadow",
  "Image.before",
  "Image.closest",
  "Image.computedStyleMap",
  "Image.getAttribute",
  "Image.getAttributeNS",
  "Image.getAttributeNames",
  "Image.getAttributeNode",
  "Image.getAttributeNodeNS",
  "Image.getBoundingClientRect",
  "Image.getClientRects",
  "Image.getElementsByClassName",
  "Image.getElementsByTagName",
  "Image.getElementsByTagNameNS",
  "Image.getInnerHTML",
  "Image.hasAttribute",
  "Image.hasAttributeNS",
  "Image.hasAttributes",
  "Image.hasPointerCapture",
  "Image.insertAdjacentElement",
  "Image.insertAdjacentHTML",
  "Image.insertAdjacentText",
  "Image.matches",
  "Image.prepend",
  "Image.querySelector",
  "Image.querySelectorAll",
  "Image.releasePointerCapture",
  "Image.remove",
  "Image.removeAttribute",
  "Image.removeAttributeNS",
  "Image.removeAttributeNode",
  "Image.replaceChildren",
  "Image.replaceWith",
  "Image.requestFullscreen",
  "Image.requestPointerLock",
  "Image.scroll",
  "Image.scrollBy",
  "Image.scrollIntoView",
  "Image.scrollIntoViewIfNeeded",
  "Image.scrollTo",
  "Image.setAttribute",
  "Image.setAttributeNS",
  "Image.setAttributeNode",
  "Image.setAttributeNodeNS",
  "Image.setPointerCapture",
  "Image.toggleAttribute",
  "Image.webkitMatchesSelector",
  "Image.webkitRequestFullScreen",
  "Image.webkitRequestFullscreen",
  "Image.checkVisibility",
  "Image.getAnimations",
  "Image.setHTML",
  "Image.appendChild",
  "Image.cloneNode",
  "Image.compareDocumentPosition",
  "Image.contains",
  "Image.getRootNode",
  "Image.hasChildNodes",
  "Image.insertBefore",
  "Image.isDefaultNamespace",
  "Image.isEqualNode",
  "Image.isSameNode",
  "Image.lookupNamespaceURI",
  "Image.lookupPrefix",
  "Image.normalize",
  "Image.removeChild",
  "Image.replaceChild",
  "Image.addEventListener",
  "Image.dispatchEvent",
  "Image.removeEventListener",
  "LinearAccelerationSensor.start",
  "LinearAccelerationSensor.stop",
  "LinearAccelerationSensor.addEventListener",
  "LinearAccelerationSensor.dispatchEvent",
  "LinearAccelerationSensor.removeEventListener",
  "MediaSource.addSourceBuffer",
  "MediaSource.clearLiveSeekableRange",
  "MediaSource.endOfStream",
  "MediaSource.removeSourceBuffer",
  "MediaSource.setLiveSeekableRange",
  "MediaSource.addEventListener",
  "MediaSource.dispatchEvent",
  "MediaSource.removeEventListener",
  "MediaStream.addTrack",
  "MediaStream.clone",
  "MediaStream.getAudioTracks",
  "MediaStream.getTrackById",
  "MediaStream.getTracks",
  "MediaStream.getVideoTracks",
  "MediaStream.removeTrack",
  "MediaStream.addEventListener",
  "MediaStream.dispatchEvent",
  "MediaStream.removeEventListener",
  "Path2D.addPath",
  "Path2D.roundRect",
  "Path2D.arc",
  "Path2D.arcTo",
  "Path2D.bezierCurveTo",
  "Path2D.closePath",
  "Path2D.ellipse",
  "Path2D.lineTo",
  "Path2D.moveTo",
  "Path2D.quadraticCurveTo",
  "Path2D.rect",
  "Range.cloneContents",
  "Range.cloneRange",
  "Range.collapse",
  "Range.compareBoundaryPoints",
  "Range.comparePoint",
  "Range.createContextualFragment",
  "Range.deleteContents",
  "Range.detach",
  "Range.expand",
  "Range.extractContents",
  "Range.getBoundingClientRect",
  "Range.getClientRects",
  "Range.insertNode",
  "Range.intersectsNode",
  "Range.isPointInRange",
  "Range.selectNode",
  "Range.selectNodeContents",
  "Range.setEnd",
  "Range.setEndAfter",
  "Range.setEndBefore",
  "Range.setStart",
  "Range.setStartAfter",
  "Range.setStartBefore",
  "Range.surroundContents",
  "Range.toString",
  "ReadableStream.cancel",
  "ReadableStream.getReader",
  "ReadableStream.pipeThrough",
  "ReadableStream.pipeTo",
  "ReadableStream.tee",
  "RelativeOrientationSensor.populateMatrix",
  "RelativeOrientationSensor.start",
  "RelativeOrientationSensor.stop",
  "RelativeOrientationSensor.addEventListener",
  "RelativeOrientationSensor.dispatchEvent",
  "RelativeOrientationSensor.removeEventListener",
  "Response.arrayBuffer",
  "Response.blob",
  "Response.clone",
  "Response.formData",
  "Response.text",
  "RTCPeerConnection.addIceCandidate",
  "RTCPeerConnection.addStream",
  "RTCPeerConnection.addTrack",
  "RTCPeerConnection.addTransceiver",
  "RTCPeerConnection.close",
  "RTCPeerConnection.createAnswer",
  "RTCPeerConnection.createDTMFSender",
  "RTCPeerConnection.createDataChannel",
  "RTCPeerConnection.createOffer",
  "RTCPeerConnection.getConfiguration",
  "RTCPeerConnection.getLocalStreams",
  "RTCPeerConnection.getReceivers",
  "RTCPeerConnection.getRemoteStreams",
  "RTCPeerConnection.getSenders",
  "RTCPeerConnection.getStats",
  "RTCPeerConnection.getTransceivers",
  "RTCPeerConnection.removeStream",
  "RTCPeerConnection.removeTrack",
  "RTCPeerConnection.restartIce",
  "RTCPeerConnection.setConfiguration",
  "RTCPeerConnection.setLocalDescription",
  "RTCPeerConnection.setRemoteDescription",
  "RTCPeerConnection.addEventListener",
  "RTCPeerConnection.dispatchEvent",
  "RTCPeerConnection.removeEventListener",
  "RTCSessionDescription.toJSON",
  "Sanitizer.getConfiguration",
  "SpeechSynthesisUtterance.addEventListener",
  "SpeechSynthesisUtterance.dispatchEvent",
  "SpeechSynthesisUtterance.removeEventListener",
  "TaskController.setPriority",
  "TaskController.abort",
  "Text.splitText",
  "Text.after",
  "Text.appendData",
  "Text.before",
  "Text.deleteData",
  "Text.insertData",
  "Text.remove",
  "Text.replaceData",
  "Text.replaceWith",
  "Text.substringData",
  "Text.appendChild",
  "Text.cloneNode",
  "Text.compareDocumentPosition",
  "Text.contains",
  "Text.getRootNode",
  "Text.hasChildNodes",
  "Text.insertBefore",
  "Text.isDefaultNamespace",
  "Text.isEqualNode",
  "Text.isSameNode",
  "Text.lookupNamespaceURI",
  "Text.lookupPrefix",
  "Text.normalize",
  "Text.removeChild",
  "Text.replaceChild",
  "Text.addEventListener",
  "Text.dispatchEvent",
  "Text.removeEventListener",
  "TextDecoder.decode",
  "TextEncoder.encode",
  "TextEncoder.encodeInto",
  "URLPattern.exec",
  "URLPattern.test",
  "URLSearchParams.append",
  "URLSearchParams.delete",
  "URLSearchParams.get",
  "URLSearchParams.getAll",
  "URLSearchParams.has",
  "URLSearchParams.set",
  "URLSearchParams.sort",
  "URLSearchParams.toString",
  "URLSearchParams.entries",
  "URLSearchParams.forEach",
  "URLSearchParams.keys",
  "URLSearchParams.values",
  "VideoColorSpace.toJSON",
  "webkitMediaStream.addTrack",
  "webkitMediaStream.clone",
  "webkitMediaStream.getAudioTracks",
  "webkitMediaStream.getTrackById",
  "webkitMediaStream.getTracks",
  "webkitMediaStream.getVideoTracks",
  "webkitMediaStream.removeTrack",
  "webkitMediaStream.addEventListener",
  "webkitMediaStream.dispatchEvent",
  "webkitMediaStream.removeEventListener",
  "webkitRTCPeerConnection.addIceCandidate",
  "webkitRTCPeerConnection.addStream",
  "webkitRTCPeerConnection.addTrack",
  "webkitRTCPeerConnection.addTransceiver",
  "webkitRTCPeerConnection.close",
  "webkitRTCPeerConnection.createAnswer",
  "webkitRTCPeerConnection.createDTMFSender",
  "webkitRTCPeerConnection.createDataChannel",
  "webkitRTCPeerConnection.createOffer",
  "webkitRTCPeerConnection.getConfiguration",
  "webkitRTCPeerConnection.getLocalStreams",
  "webkitRTCPeerConnection.getReceivers",
  "webkitRTCPeerConnection.getRemoteStreams",
  "webkitRTCPeerConnection.getSenders",
  "webkitRTCPeerConnection.getStats",
  "webkitRTCPeerConnection.getTransceivers",
  "webkitRTCPeerConnection.removeStream",
  "webkitRTCPeerConnection.removeTrack",
  "webkitRTCPeerConnection.restartIce",
  "webkitRTCPeerConnection.setConfiguration",
  "webkitRTCPeerConnection.setLocalDescription",
  "webkitRTCPeerConnection.setRemoteDescription",
  "webkitRTCPeerConnection.addEventListener",
  "webkitRTCPeerConnection.dispatchEvent",
  "webkitRTCPeerConnection.removeEventListener",
  "webkitSpeechGrammarList.addFromString",
  "webkitSpeechGrammarList.addFromUri",
  "webkitSpeechGrammarList.item",
  "webkitSpeechRecognition.abort",
  "webkitSpeechRecognition.start",
  "webkitSpeechRecognition.stop",
  "webkitSpeechRecognition.addEventListener",
  "webkitSpeechRecognition.dispatchEvent",
  "webkitSpeechRecognition.removeEventListener",
  "WebKitCSSMatrix.invertSelf",
  "WebKitCSSMatrix.multiplySelf",
  "WebKitCSSMatrix.preMultiplySelf",
  "WebKitCSSMatrix.rotateAxisAngleSelf",
  "WebKitCSSMatrix.rotateFromVectorSelf",
  "WebKitCSSMatrix.rotateSelf",
  "WebKitCSSMatrix.scale3dSelf",
  "WebKitCSSMatrix.scaleSelf",
  "WebKitCSSMatrix.skewXSelf",
  "WebKitCSSMatrix.skewYSelf",
  "WebKitCSSMatrix.translateSelf",
  "WebKitCSSMatrix.setMatrixValue",
  "WebKitCSSMatrix.flipX",
  "WebKitCSSMatrix.flipY",
  "WebKitCSSMatrix.inverse",
  "WebKitCSSMatrix.multiply",
  "WebKitCSSMatrix.rotate",
  "WebKitCSSMatrix.rotateAxisAngle",
  "WebKitCSSMatrix.rotateFromVector",
  "WebKitCSSMatrix.scale",
  "WebKitCSSMatrix.scale3d",
  "WebKitCSSMatrix.scaleNonUniform",
  "WebKitCSSMatrix.skewX",
  "WebKitCSSMatrix.skewY",
  "WebKitCSSMatrix.toFloat32Array",
  "WebKitCSSMatrix.toFloat64Array",
  "WebKitCSSMatrix.toJSON",
  "WebKitCSSMatrix.transformPoint",
  "WebKitCSSMatrix.translate",
  "WebKitCSSMatrix.toString",
  "WritableStream.abort",
  "WritableStream.close",
  "WritableStream.getWriter",
  "XMLHttpRequest.abort",
  "XMLHttpRequest.getAllResponseHeaders",
  "XMLHttpRequest.getResponseHeader",
  "XMLHttpRequest.open",
  "XMLHttpRequest.overrideMimeType",
  "XMLHttpRequest.send",
  "XMLHttpRequest.setRequestHeader",
  "XMLHttpRequest.addEventListener",
  "XMLHttpRequest.dispatchEvent",
  "XMLHttpRequest.removeEventListener",
  "XMLSerializer.serializeToString",
  "XPathEvaluator.createExpression",
  "XPathEvaluator.createNSResolver",
  "XPathEvaluator.evaluate",
  "XSLTProcessor.clearParameters",
  "XSLTProcessor.getParameter",
  "XSLTProcessor.importStylesheet",
  "XSLTProcessor.removeParameter",
  "XSLTProcessor.reset",
  "XSLTProcessor.setParameter",
  "XSLTProcessor.transformToDocument",
  "XSLTProcessor.transformToFragment"
]

let styleProps = [
  "style.accentColor",
  "style.additiveSymbols",
  "style.alignContent",
  "style.alignItems",
  "style.alignSelf",
  "style.alignmentBaseline",
  "style.all",
  "style.animation",
  "style.animationDelay",
  "style.animationDirection",
  "style.animationDuration",
  "style.animationFillMode",
  "style.animationIterationCount",
  "style.animationName",
  "style.animationPlayState",
  "style.animationTimingFunction",
  "style.appRegion",
  "style.appearance",
  "style.ascentOverride",
  "style.aspectRatio",
  "style.backdropFilter",
  "style.backfaceVisibility",
  "style.background",
  "style.backgroundAttachment",
  "style.backgroundBlendMode",
  "style.backgroundClip",
  "style.backgroundColor",
  "style.backgroundImage",
  "style.backgroundOrigin",
  "style.backgroundPosition",
  "style.backgroundPositionX",
  "style.backgroundPositionY",
  "style.backgroundRepeat",
  "style.backgroundRepeatX",
  "style.backgroundRepeatY",
  "style.backgroundSize",
  "style.basePalette",
  "style.baselineShift",
  "style.blockSize",
  "style.border",
  "style.borderBlock",
  "style.borderBlockColor",
  "style.borderBlockEnd",
  "style.borderBlockEndColor",
  "style.borderBlockEndStyle",
  "style.borderBlockEndWidth",
  "style.borderBlockStart",
  "style.borderBlockStartColor",
  "style.borderBlockStartStyle",
  "style.borderBlockStartWidth",
  "style.borderBlockStyle",
  "style.borderBlockWidth",
  "style.borderBottom",
  "style.borderBottomColor",
  "style.borderBottomLeftRadius",
  "style.borderBottomRightRadius",
  "style.borderBottomStyle",
  "style.borderBottomWidth",
  "style.borderCollapse",
  "style.borderColor",
  "style.borderEndEndRadius",
  "style.borderEndStartRadius",
  "style.borderImage",
  "style.borderImageOutset",
  "style.borderImageRepeat",
  "style.borderImageSlice",
  "style.borderImageSource",
  "style.borderImageWidth",
  "style.borderInline",
  "style.borderInlineColor",
  "style.borderInlineEnd",
  "style.borderInlineEndColor",
  "style.borderInlineEndStyle",
  "style.borderInlineEndWidth",
  "style.borderInlineStart",
  "style.borderInlineStartColor",
  "style.borderInlineStartStyle",
  "style.borderInlineStartWidth",
  "style.borderInlineStyle",
  "style.borderInlineWidth",
  "style.borderLeft",
  "style.borderLeftColor",
  "style.borderLeftStyle",
  "style.borderLeftWidth",
  "style.borderRadius",
  "style.borderRight",
  "style.borderRightColor",
  "style.borderRightStyle",
  "style.borderRightWidth",
  "style.borderSpacing",
  "style.borderStartEndRadius",
  "style.borderStartStartRadius",
  "style.borderStyle",
  "style.borderTop",
  "style.borderTopColor",
  "style.borderTopLeftRadius",
  "style.borderTopRightRadius",
  "style.borderTopStyle",
  "style.borderTopWidth",
  "style.borderWidth",
  "style.bottom",
  "style.boxShadow",
  "style.boxSizing",
  "style.breakAfter",
  "style.breakBefore",
  "style.breakInside",
  "style.bufferedRendering",
  "style.captionSide",
  "style.caretColor",
  "style.clear",
  "style.clip",
  "style.clipPath",
  "style.clipRule",
  "style.color",
  "style.colorInterpolation",
  "style.colorInterpolationFilters",
  "style.colorRendering",
  "style.colorScheme",
  "style.columnCount",
  "style.columnFill",
  "style.columnGap",
  "style.columnRule",
  "style.columnRuleColor",
  "style.columnRuleStyle",
  "style.columnRuleWidth",
  "style.columnSpan",
  "style.columnWidth",
  "style.columns",
  "style.contain",
  "style.containIntrinsicBlockSize",
  "style.containIntrinsicHeight",
  "style.containIntrinsicInlineSize",
  "style.containIntrinsicSize",
  "style.containIntrinsicWidth",
  "style.container",
  "style.containerName",
  "style.containerType",
  "style.content",
  "style.contentVisibility",
  "style.counterIncrement",
  "style.counterReset",
  "style.counterSet",
  "style.cursor",
  "style.cx",
  "style.cy",
  "style.d",
  "style.descentOverride",
  "style.direction",
  "style.display",
  "style.dominantBaseline",
  "style.emptyCells",
  "style.epubCaptionSide",
  "style.epubTextCombine",
  "style.epubTextEmphasis",
  "style.epubTextEmphasisColor",
  "style.epubTextEmphasisStyle",
  "style.epubTextOrientation",
  "style.epubTextTransform",
  "style.epubWordBreak",
  "style.epubWritingMode",
  "style.fallback",
  "style.fill",
  "style.fillOpacity",
  "style.fillRule",
  "style.filter",
  "style.flex",
  "style.flexBasis",
  "style.flexDirection",
  "style.flexFlow",
  "style.flexGrow",
  "style.flexShrink",
  "style.flexWrap",
  "style.float",
  "style.floodColor",
  "style.floodOpacity",
  "style.font",
  "style.fontDisplay",
  "style.fontFamily",
  "style.fontFeatureSettings",
  "style.fontKerning",
  "style.fontOpticalSizing",
  "style.fontPalette",
  "style.fontSize",
  "style.fontStretch",
  "style.fontStyle",
  "style.fontSynthesis",
  "style.fontSynthesisSmallCaps",
  "style.fontSynthesisStyle",
  "style.fontSynthesisWeight",
  "style.fontVariant",
  "style.fontVariantCaps",
  "style.fontVariantEastAsian",
  "style.fontVariantLigatures",
  "style.fontVariantNumeric",
  "style.fontVariationSettings",
  "style.fontWeight",
  "style.forcedColorAdjust",
  "style.gap",
  "style.grid",
  "style.gridArea",
  "style.gridAutoColumns",
  "style.gridAutoFlow",
  "style.gridAutoRows",
  "style.gridColumn",
  "style.gridColumnEnd",
  "style.gridColumnGap",
  "style.gridColumnStart",
  "style.gridGap",
  "style.gridRow",
  "style.gridRowEnd",
  "style.gridRowGap",
  "style.gridRowStart",
  "style.gridTemplate",
  "style.gridTemplateAreas",
  "style.gridTemplateColumns",
  "style.gridTemplateRows",
  "style.height",
  "style.hyphenateCharacter",
  "style.hyphenateLimitChars",
  "style.hyphens",
  "style.imageOrientation",
  "style.imageRendering",
  "style.inherits",
  "style.initialValue",
  "style.inlineSize",
  "style.inset",
  "style.insetBlock",
  "style.insetBlockEnd",
  "style.insetBlockStart",
  "style.insetInline",
  "style.insetInlineEnd",
  "style.insetInlineStart",
  "style.isolation",
  "style.justifyContent",
  "style.justifyItems",
  "style.justifySelf",
  "style.left",
  "style.letterSpacing",
  "style.lightingColor",
  "style.lineBreak",
  "style.lineGapOverride",
  "style.lineHeight",
  "style.listStyle",
  "style.listStyleImage",
  "style.listStylePosition",
  "style.listStyleType",
  "style.margin",
  "style.marginBlock",
  "style.marginBlockEnd",
  "style.marginBlockStart",
  "style.marginBottom",
  "style.marginInline",
  "style.marginInlineEnd",
  "style.marginInlineStart",
  "style.marginLeft",
  "style.marginRight",
  "style.marginTop",
  "style.marker",
  "style.markerEnd",
  "style.markerMid",
  "style.markerStart",
  "style.mask",
  "style.maskType",
  "style.mathDepth",
  "style.mathShift",
  "style.mathStyle",
  "style.maxBlockSize",
  "style.maxHeight",
  "style.maxInlineSize",
  "style.maxWidth",
  "style.minBlockSize",
  "style.minHeight",
  "style.minInlineSize",
  "style.minWidth",
  "style.mixBlendMode",
  "style.negative",
  "style.objectFit",
  "style.objectPosition",
  "style.objectViewBox",
  "style.offset",
  "style.offsetDistance",
  "style.offsetPath",
  "style.offsetRotate",
  "style.opacity",
  "style.order",
  "style.orphans",
  "style.outline",
  "style.outlineColor",
  "style.outlineOffset",
  "style.outlineStyle",
  "style.outlineWidth",
  "style.overflow",
  "style.overflowAnchor",
  "style.overflowClipMargin",
  "style.overflowWrap",
  "style.overflowX",
  "style.overflowY",
  "style.overrideColors",
  "style.overscrollBehavior",
  "style.overscrollBehaviorBlock",
  "style.overscrollBehaviorInline",
  "style.overscrollBehaviorX",
  "style.overscrollBehaviorY",
  "style.pad",
  "style.padding",
  "style.paddingBlock",
  "style.paddingBlockEnd",
  "style.paddingBlockStart",
  "style.paddingBottom",
  "style.paddingInline",
  "style.paddingInlineEnd",
  "style.paddingInlineStart",
  "style.paddingLeft",
  "style.paddingRight",
  "style.paddingTop",
  "style.page",
  "style.pageBreakAfter",
  "style.pageBreakBefore",
  "style.pageBreakInside",
  "style.pageOrientation",
  "style.paintOrder",
  "style.perspective",
  "style.perspectiveOrigin",
  "style.placeContent",
  "style.placeItems",
  "style.placeSelf",
  "style.pointerEvents",
  "style.position",
  "style.prefix",
  "style.quotes",
  "style.r",
  "style.range",
  "style.resize",
  "style.right",
  "style.rotate",
  "style.rowGap",
  "style.rubyPosition",
  "style.rx",
  "style.ry",
  "style.scale",
  "style.scrollBehavior",
  "style.scrollMargin",
  "style.scrollMarginBlock",
  "style.scrollMarginBlockEnd",
  "style.scrollMarginBlockStart",
  "style.scrollMarginBottom",
  "style.scrollMarginInline",
  "style.scrollMarginInlineEnd",
  "style.scrollMarginInlineStart",
  "style.scrollMarginLeft",
  "style.scrollMarginRight",
  "style.scrollMarginTop",
  "style.scrollPadding",
  "style.scrollPaddingBlock",
  "style.scrollPaddingBlockEnd",
  "style.scrollPaddingBlockStart",
  "style.scrollPaddingBottom",
  "style.scrollPaddingInline",
  "style.scrollPaddingInlineEnd",
  "style.scrollPaddingInlineStart",
  "style.scrollPaddingLeft",
  "style.scrollPaddingRight",
  "style.scrollPaddingTop",
  "style.scrollSnapAlign",
  "style.scrollSnapStop",
  "style.scrollSnapType",
  "style.scrollbarGutter",
  "style.shapeImageThreshold",
  "style.shapeMargin",
  "style.shapeOutside",
  "style.shapeRendering",
  "style.size",
  "style.sizeAdjust",
  "style.speak",
  "style.speakAs",
  "style.src",
  "style.stopColor",
  "style.stopOpacity",
  "style.stroke",
  "style.strokeDasharray",
  "style.strokeDashoffset",
  "style.strokeLinecap",
  "style.strokeLinejoin",
  "style.strokeMiterlimit",
  "style.strokeOpacity",
  "style.strokeWidth",
  "style.suffix",
  "style.symbols",
  "style.syntax",
  "style.system",
  "style.tabSize",
  "style.tableLayout",
  "style.textAlign",
  "style.textAlignLast",
  "style.textAnchor",
  "style.textCombineUpright",
  "style.textDecoration",
  "style.textDecorationColor",
  "style.textDecorationLine",
  "style.textDecorationSkipInk",
  "style.textDecorationStyle",
  "style.textDecorationThickness",
  "style.textEmphasis",
  "style.textEmphasisColor",
  "style.textEmphasisPosition",
  "style.textEmphasisStyle",
  "style.textIndent",
  "style.textOrientation",
  "style.textOverflow",
  "style.textRendering",
  "style.textShadow",
  "style.textSizeAdjust",
  "style.textTransform",
  "style.textUnderlineOffset",
  "style.textUnderlinePosition",
  "style.top",
  "style.touchAction",
  "style.transform",
  "style.transformBox",
  "style.transformOrigin",
  "style.transformStyle",
  "style.transition",
  "style.transitionDelay",
  "style.transitionDuration",
  "style.transitionProperty",
  "style.transitionTimingFunction",
  "style.translate",
  "style.unicodeBidi",
  "style.unicodeRange",
  "style.userSelect",
  "style.vectorEffect",
  "style.verticalAlign",
  "style.visibility",
  "style.webkitAlignContent",
  "style.webkitAlignItems",
  "style.webkitAlignSelf",
  "style.webkitAnimation",
  "style.webkitAnimationDelay",
  "style.webkitAnimationDirection",
  "style.webkitAnimationDuration",
  "style.webkitAnimationFillMode",
  "style.webkitAnimationIterationCount",
  "style.webkitAnimationName",
  "style.webkitAnimationPlayState",
  "style.webkitAnimationTimingFunction",
  "style.webkitAppRegion",
  "style.webkitAppearance",
  "style.webkitBackfaceVisibility",
  "style.webkitBackgroundClip",
  "style.webkitBackgroundOrigin",
  "style.webkitBackgroundSize",
  "style.webkitBorderAfter",
  "style.webkitBorderAfterColor",
  "style.webkitBorderAfterStyle",
  "style.webkitBorderAfterWidth",
  "style.webkitBorderBefore",
  "style.webkitBorderBeforeColor",
  "style.webkitBorderBeforeStyle",
  "style.webkitBorderBeforeWidth",
  "style.webkitBorderBottomLeftRadius",
  "style.webkitBorderBottomRightRadius",
  "style.webkitBorderEnd",
  "style.webkitBorderEndColor",
  "style.webkitBorderEndStyle",
  "style.webkitBorderEndWidth",
  "style.webkitBorderHorizontalSpacing",
  "style.webkitBorderImage",
  "style.webkitBorderRadius",
  "style.webkitBorderStart",
  "style.webkitBorderStartColor",
  "style.webkitBorderStartStyle",
  "style.webkitBorderStartWidth",
  "style.webkitBorderTopLeftRadius",
  "style.webkitBorderTopRightRadius",
  "style.webkitBorderVerticalSpacing",
  "style.webkitBoxAlign",
  "style.webkitBoxDecorationBreak",
  "style.webkitBoxDirection",
  "style.webkitBoxFlex",
  "style.webkitBoxOrdinalGroup",
  "style.webkitBoxOrient",
  "style.webkitBoxPack",
  "style.webkitBoxReflect",
  "style.webkitBoxShadow",
  "style.webkitBoxSizing",
  "style.webkitClipPath",
  "style.webkitColumnBreakAfter",
  "style.webkitColumnBreakBefore",
  "style.webkitColumnBreakInside",
  "style.webkitColumnCount",
  "style.webkitColumnGap",
  "style.webkitColumnRule",
  "style.webkitColumnRuleColor",
  "style.webkitColumnRuleStyle",
  "style.webkitColumnRuleWidth",
  "style.webkitColumnSpan",
  "style.webkitColumnWidth",
  "style.webkitColumns",
  "style.webkitFilter",
  "style.webkitFlex",
  "style.webkitFlexBasis",
  "style.webkitFlexDirection",
  "style.webkitFlexFlow",
  "style.webkitFlexGrow",
  "style.webkitFlexShrink",
  "style.webkitFlexWrap",
  "style.webkitFontFeatureSettings",
  "style.webkitFontSmoothing",
  "style.webkitHighlight",
  "style.webkitHyphenateCharacter",
  "style.webkitJustifyContent",
  "style.webkitLineBreak",
  "style.webkitLineClamp",
  "style.webkitLocale",
  "style.webkitLogicalHeight",
  "style.webkitLogicalWidth",
  "style.webkitMarginAfter",
  "style.webkitMarginBefore",
  "style.webkitMarginEnd",
  "style.webkitMarginStart",
  "style.webkitMask",
  "style.webkitMaskBoxImage",
  "style.webkitMaskBoxImageOutset",
  "style.webkitMaskBoxImageRepeat",
  "style.webkitMaskBoxImageSlice",
  "style.webkitMaskBoxImageSource",
  "style.webkitMaskBoxImageWidth",
  "style.webkitMaskClip",
  "style.webkitMaskComposite",
  "style.webkitMaskImage",
  "style.webkitMaskOrigin",
  "style.webkitMaskPosition",
  "style.webkitMaskPositionX",
  "style.webkitMaskPositionY",
  "style.webkitMaskRepeat",
  "style.webkitMaskRepeatX",
  "style.webkitMaskRepeatY",
  "style.webkitMaskSize",
  "style.webkitMaxLogicalHeight",
  "style.webkitMaxLogicalWidth",
  "style.webkitMinLogicalHeight",
  "style.webkitMinLogicalWidth",
  "style.webkitOpacity",
  "style.webkitOrder",
  "style.webkitPaddingAfter",
  "style.webkitPaddingBefore",
  "style.webkitPaddingEnd",
  "style.webkitPaddingStart",
  "style.webkitPerspective",
  "style.webkitPerspectiveOrigin",
  "style.webkitPerspectiveOriginX",
  "style.webkitPerspectiveOriginY",
  "style.webkitPrintColorAdjust",
  "style.webkitRtlOrdering",
  "style.webkitRubyPosition",
  "style.webkitShapeImageThreshold",
  "style.webkitShapeMargin",
  "style.webkitShapeOutside",
  "style.webkitTapHighlightColor",
  "style.webkitTextCombine",
  "style.webkitTextDecorationsInEffect",
  "style.webkitTextEmphasis",
  "style.webkitTextEmphasisColor",
  "style.webkitTextEmphasisPosition",
  "style.webkitTextEmphasisStyle",
  "style.webkitTextFillColor",
  "style.webkitTextOrientation",
  "style.webkitTextSecurity",
  "style.webkitTextSizeAdjust",
  "style.webkitTextStroke",
  "style.webkitTextStrokeColor",
  "style.webkitTextStrokeWidth",
  "style.webkitTransform",
  "style.webkitTransformOrigin",
  "style.webkitTransformOriginX",
  "style.webkitTransformOriginY",
  "style.webkitTransformOriginZ",
  "style.webkitTransformStyle",
  "style.webkitTransition",
  "style.webkitTransitionDelay",
  "style.webkitTransitionDuration",
  "style.webkitTransitionProperty",
  "style.webkitTransitionTimingFunction",
  "style.webkitUserDrag",
  "style.webkitUserModify",
  "style.webkitUserSelect",
  "style.webkitWritingMode",
  "style.whiteSpace",
  "style.widows",
  "style.width",
  "style.willChange",
  "style.wordBreak",
  "style.wordSpacing",
  "style.wordWrap",
  "style.writingMode",
  "style.x",
  "style.y",
  "style.zIndex",
  "style.zoom"
]

let usedVars = []

let shuffledProps = []

function dirGlob(pattern) {
  const directory = path.dirname(pattern)
  const basename = path.basename(pattern)

  return fs.readdirSync(directory).filter(file => minimatch(file, basename))
}

function rSeed() {
  return Math.floor(Math.random() * 10000000)
}

function rString() {
  return `s${(Math.random().toString(36)).substr(2, 8)}${(Math.random().toString(36)).substr(2, 8)}`
}

function defineVariable() {
  let varName = `u${(Math.random() + 1).toString(36).substring(2)}`
  usedVars.push(varName)

  return varName
}

function useVariable() {
  return rArr(usedVars)
}

function arraySeed(array, seed) {
  let randomIndex = Math.floor(Math.abs(Math.sin(seed)) * array.length);
  return array[randomIndex];
}

function fuzzInput(file, output) {
  let buffer;
  if (file) {
    buffer = fs.readFileSync(file);
  } else {
    buffer = fs.readFileSync(0, 'utf-8');
    buffer = Buffer.from(buffer, 'utf-8');
  }

  const modificationCount = fuzzMutationCount // crypto.randomBytes(1).readUInt8(0) % buffer.length + 1;

  for (let i = 0; i < modificationCount; i++) {
    const index = crypto.randomBytes(1).readUInt8(0) % buffer.length;
    const modification = crypto.randomBytes(1).readUInt8(0) % 7;

    switch (modification) {
      case 0: {
        const swapIndex = crypto.randomBytes(1).readUInt8(0) % buffer.length;
        [buffer[index], buffer[swapIndex]] = [buffer[swapIndex], buffer[index]];
        break;
      }
      case 1: {
        buffer[index] = crypto.randomBytes(1).readUInt8(0);
        break;
      }
      case 2: {
        buffer = Buffer.concat([buffer.slice(0, index), buffer.slice(index + 1)]);
        break;
      }
      case 3: {
        const change = crypto.randomBytes(1).readUInt8(0) - buffer[index];
        buffer[index] = (buffer[index] + change) % 256;
        break;
      }
      case 4: {
        const addition = crypto.randomBytes(1).readUInt8(0);
        buffer = Buffer.concat([buffer.slice(0, index), Buffer.from([addition]), buffer.slice(index)]);
        break;
      }
      case 5: {
        const multiplier = crypto.randomBytes(1).readUInt8(0) % 256;
        buffer[index] = buffer[index] * multiplier;
        break;
      }
      case 6: {
        const repeatCount = crypto.randomBytes(1).readUInt8(0) % 256;
        const repeated = Array(repeatCount)
          .fill(buffer[index])
          .map(b => Buffer.from([b]));
        buffer = Buffer.concat([buffer.slice(0, index), ...repeated, buffer.slice(index + 1)]);
        break;
      }
      default:
        throw new Error('Unexpected modification value');
    }
  }

  fs.writeFileSync(output, buffer);
  //console.log(buffer.toString())
}

function fuzzWebFont() {

  var fontData = ''

  // glob("fonts/*", (err, files) => {
    //fontFile = files[Math.floor(Math.random() * files.length)]
    var fontList = dirGlob("fonts/*")
    var fontFile = fontList[Math.floor(Math.random()*fontList.length)];
    fuzzInput(`fonts/${fontFile}`, `fuzzed-${fuzzTarget}.ttf`)
    // Buffer.from(fs.readFileSync(`fuzzed-${fuzzTarget}.ttf`), 'binary').toString('base64')
    fontData = fs.readFileSync(`fuzzed-${fuzzTarget}.ttf`, {encoding: 'base64'})
  // })

  return fontData
}

function propertyShuffle(array) {
  let shuffledArray = array.slice()
  for (let i = 0; i < shuffledArray.length; i++) {
    let randomIndex = Math.floor(Math.random() * shuffledArray.length)
    let currentString = shuffledArray[i]
    let dotIndex = currentString.indexOf(".")
    let currentProperty = currentString.substring(dotIndex + 1)
    let randomString = shuffledArray[randomIndex]
    let randomDotIndex = randomString.indexOf(".")
    let randomProperty = randomString.substring(randomDotIndex + 1)

    shuffledArray[i] = currentString.substring(0, dotIndex + 1) + randomProperty
    shuffledArray[randomIndex] = randomString.substring(0, randomDotIndex + 1) + currentProperty
  }
  return shuffledArray;
}


function rArr(array) {
  return array[Math.floor(Math.random() * array.length)]
}

function rBool() {
  return Math.floor(Math.random() * 2) > 0
}

function assignStyle() {
  let assignedStyle = ''
  if(rBool()) {
    assignedStyle = `${useVariable()}.${rArr(styleProps)} = ${assignAction()}`
  } else {
    assignedStyle = rBool() ? `${useVariable()}.${rArr(styleProps)} = ${rArr(defaultParams)}` : `${useVariable()}.${rArr(styleProps)} = ${rArr(usedVars)}`
  }
  return assignedStyle
}

function manipulateDOM() {
  let output = ''
  let actions = [
    "assign",
    "remove",
    "link",
    "style",
    "clone",
    "overwrite",
    "append",
    "freeze",
    "click",
    "blur"
  ]
  switch(rArr(actions)) {
    case "assign":
      if(usedVars.length < maxElements) {
        let myVar = defineVariable()
        if(rBool()) {
          if(rBool()) {
            output = `var ${myVar} = document.createElement('${rArr(elementList)}'); ` +
                     `document.body.appendChild(${myVar})`
          } else {
            output = `document.createElement('${rArr(elementList)}'); ` +
                     `document.body.appendChild(${myVar})`
          }
        } else {
          output = `var ${myVar} = ${rArr(defaultParams)}`
        }
      }
      else {
        output = manipulateDOM()
      }
      break;
    case "remove":
      if(usedVars.length > minRemoveLength) {
        if(removedVars < maxRemovedElements) {
          removedVars += 1
          output = `${useVariable()}.remove()`
        } else {
          output = manipulateDOM()
        }
      } else {
        output = manipulateDOM()
      }
      break;
    case "link":
      if(usedVars.length > minLinkLength) {
        output = `${useVariable()} = ${useVariable()}`
      } else {
        output = manipulateDOM()
      }
      break;
    case "clone":
      if(usedVars.length > minCloneLength) {
        output = `${useVariable()} = ${useVariable()}.clone()`
      } else {
        output = manipulateDOM()
      }
      break;
    case "click":
      `${useVariable()} = ${useVariable()}.click()`
      break;
    case "blur":
      `${useVariable()} = ${useVariable()}.blur()`
      break;
    case "freeze":
      if(usedVars.length > minFreezeLength) {
        output = `${useVariable()} = ${useVariable()}.freeze()`
      } else {
        output = manipulateDOM()
      }
      break;
    case "style":
      if(rBool() && (usedVars.length > 0)) {
        output = `${useVariable()}.${rArr(styleProps)} = ${assignAction()}` // ${assignAction()}
      } else {
        output = `${useVariable()}.${rArr(styleProps)} = ${rArr(defaultParams)}`
      }
      break;
    case "overrwrite":
      if(rBool() && (usedVars.length > 0)) {
        output = `${useVariable()} = null` // ${assignAction()}
      } else {
        output = `${useVariable()} = ${rArr(defaultParams)}`
      }
      break;
    case "append":
      if(usedVars.length > 10) {
        if(rBool()) {
          output = `${useVariable()}.appendChild(document.createElement('${rArr(elementList)}'))` // ${assignAction()}
        } else {
          output = `${useVariable()}.appendChild(${useVariable()})` // ${assignAction()}
        }
      } else {
        output = manipulateDOM()
      }
      break;
    default:
      // code block
  }

  return output

}

function assignAction(currentDepth = 0, maxDepth = 4) {

  currentDepth++

  let shuffleProps = rBool()

  const maxParams = 5

  let executed = false

  let parameterCharList = [
    ['[', ']'],
    ['(', ')']
  ]

  let newFunction = ''

  parameterChars = rArr(parameterCharList)

  newFunction = Array(Math.floor(Math.random() * maxParams)).fill("PARAM_PLACEHOLDER").join(",")

  if (rBool()) {
    newFunction = `${parameterChars[0]}${newFunction}${parameterChars[1]}`
  }

  newFunction = newFunction.replace(/PARAM_PLACEHOLDER/g, function() {
    retVal = ''
    if (rBool()) {
      if (rBool()) {

        // if (rBool() && currentDepth < maxDepth) {
        //   retVal = assignAction(currentDepth)
        // } else {
          subparameterChars = rArr([
            ['[', ']'],
            ['(', ')'],
          ])
          retVal = `${subparameterChars[0]}${rArr(targetProps)}${subparameterChars[1]}`
        // }
      } else {
        retVal = shuffleProps ? rArr(propertyShuffle(targetProps)) : rArr(targetProps)
      }
    } else {
      retVal = rArr(targetProps)
      //retVal = rBool() ? rArr(defaultParams) : rArr(usedVars)
    }
    return retVal
  })

  if(newFunction == "[]") {
    newFunction = ""
  }

  let output = (shuffleProps ? rArr(propertyShuffle(targetProps)) : rArr(targetProps)) + newFunction

  if (rBool()) {
    if(!output.match(/^new/)) {
      if(rBool()) {
        output = "new " + output
      } else {
        if(rBool()) {
          if(rBool()) {
            output = `arraySeed(document.querySelectorAll('*'), ${rSeed()}).${output.split(".").slice(1).join(".")}`
          } else {
            output = `arraySeed(document.querySelectorAll('*'), ${rSeed()}) = ${output.split("= ")[1]}`
          }
        } else {
          if(rBool()) {
            output = `arraySeed(document.querySelectorAll('*'), ${rSeed()}).${rArr(["click", "arr", "blur"])}()`
          } else {
            output = `arraySeed(document.querySelectorAll('*'), ${rSeed()}) = arraySeed(document.querySelectorAll('*'), ${rSeed()})`
          }
        }
      }
    }
  }

  return output
}

app.get('/*', (req, res) => {
  output = ''

  if(enableDOMFuzz) {
    for(i=0;i<linesOfCode;i++) {
      output += (rBool() ? manipulateDOM() : assignAction()) + "\n"
    }
  }

  let html = `
  <!DOCTYPE html>
  <html>
  <head>
  <script>
  setTimeout("window.location.reload()", 10000);
  function arraySeed(array, seed) {
    let randomIndex = Math.floor(Math.abs(Math.sin(seed)) * array.length);
    return array[randomIndex];
  }
  </script>
  <style>
    @font-face {
      font-family: "Custom Font";
      src: url("data:application/x-font-ttf;charset=utf-8;base64,${fuzzWebFont()}");
    }

    html, body, p{
      zoom: 80.333333%;
      font-family: "Custom Font", sans-serif!important;
    }

    video {
      position: fixed;
      top:0px;
      right:0px;
      width:100vw;
      height:100vh;
      opacity:0.2;
      z-index:999;
    }
  </style>
  </head>
  <body>
  <h1>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_:;*!?${crypto.randomBytes(Math.floor(Math.random()*1000)).toString()}${rString().repeat(Math.floor(Math.random()*1000))}</h1>
  <b>${rString().repeat(Math.floor(Math.random()*1000))}</b>
  <script>
  ${output.split("\n").map(x => (`try { ${x} } catch(e) { }`)).join("\n")}
  function DOMReady() {
    setTimeout("window.location.reload()", 1)
  }
  DOMReady()
  </script>
  <style>
    html, body, p{
      font-family: "Custom Font", sans-serif!important;
    }
  </style>
  </body>
  </html>
  `

  html = html.replace(/try \{  \} catch\(e\) \{ \}\n/g, "")
  fs.writeFileSync(`output-${fuzzTarget}.html`, html)
  res.send(html);
});

server.listen(serverBind, () => {
  console.log(`Server started on port ${serverBind}`);
});