Kasada is used on various sites like:
When you request the original page you will get a Status Code: 429
. This is Kasada
blocking you because you do not have a session yet. After that it will do request to
https://www.bstn.com/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/ips.js
.
This is the script that contains the VM.
Once this script creates the needed data it will post the data to /tl
. We can see a very specific header
that is getting send: x-kpsdk-ct: 0cI1almM2rwJjck4KMNKwOArHsBhVAtxODS2DwhtysXYkXk7xMmkuvGz4yOJOQxVQEVW4uK1AfKW0z6g10gSRie3utjYXk62NqnzZ2VB8JOurYXkTJGRTdBmwM3QgubLmMAm3bRSRIuVmZZ5KoWeoJxg
I'm not sure yet what this header is. In the body we can see alot of unreadable data. This is a huge json object (scroll down to see what's inside it).
Obviously it's encoded so people cannot read it.
You will get a response with these headers:
x-kpsdk-cr: true // Data was valid?
x-kpsdk-ct: 0ctbYvx8SdfXRX9XN9YujXdwvUCCJGwbWEVDkm5dIfxYR5Mn2aTbUyp1bhWHoWUlx8O8m9BNwM8icyPNJ6LhrxolUey24i8BkcKcl0DSuhpwpaVLDUxW2H4KkXClUWMULiHLpvqf0m1FWkhtqGaO5bmq // Session id?
x-kpsdk-st: 1644394045832 // Timestamp
After all this you can access the site.
ips.js
includes a custom virtual machine to protect the code from being read.
At the bottom of the script we will find a huge string, this is the bytenode. The actual program that will run.
Example:
XKdoKfoKhoKjoKloKnoKpoKroKtoKvoKxoKzoKBoKDoK.. way more data here ..t4wm0b4gQow8lto4g8lm0b4oX
This string will be converted into an array that contains all the opcodes.
let l = {
T: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
U: 50
};
const e = function(n) { // Converts long ass string into opcode
for (var t = l.L, r = t.T, i = t.U, o = r.length - i, e = [], u = 0; u < n.length;)
for (var f = 0, c = 1;;) {
var a = r.indexOf(n[u++]);
if (f += c * (a % i), a < i) {
e.push(0 | f);
break
}
f += i * c, c *= o
}
return e
}
At the bottom of the script we can see around 50 small funcs getting pushed into an array. These are the matching functions for the opcodes. The first func that gets pushed has opcode 0 and so on. This function will go over the opcode array and run the needed functions:
function j(t) {
for (;;) {
var n = c[r[t.v[0]++]]; // c is our array of all the functions, r is our opcode array and t.v[0] is the counter on which opcode we are on the stack.
if (null === n) break;
try {
n(t)
} catch (n) {
m(t, n)
}
}
}
So let's take a look to the first function.
c.push(function(n) {
y(n, b(n) + b(n))
});
as you can see we have 2 more function inside: b
and y
.
Let's take a look at the b
function first:
function b(n) {
return O.default.g(r, n.v) // r = opcode array, N.v = our stack
}
const g = function(n, t) { // O.default.g -> Gets item from the stack
// t -> Current item on the stack? Or the full stack?
var r = n[t[0]++];
if (1 & r) return r >> 1;
if (r === l.R.x) {
var i = n[t[0]++],
o = n[t[0]++],
e = 2147483648 & i ? -1 : 1,
u = (2146435072 & i) >> 20,
f = (1048575 & i) * Math.pow(2, 32) + (o < 0 ? o + Math.pow(2, 32) : o);
return 2047 === u ? f ? NaN : 1 / 0 * e : (0 !== u ? f += Math.pow(2, 52) : u++, e * f * Math.pow(2, u - 1075)) // Return int
}
if (r !== l.R.I) return r === l.R.k || r !== l.R.C && (r === l.R.N ? null : r !== l.R.z ? t[r >> 5] : void 0); // Return item from stack
for (var c = "", a = n[t[0]++], v = 0; v < a; v++) {
var s = n[t[0]++];
c += String.fromCharCode(4294967232 & s | 39 * s & 63)
}
return c // Return string
}
Basically this function will get a specific item of the stack, return an int or it will generate a string from the bytenode.
Now let's look at the y
func.
function y(n, t) { // Places data on the stack
n.v[u(n)] = t
}
function u(n) { // Parse place to put data on stack from bytenode
return r[n.v[0]++] >> 5
}
This function is alot shorter. It will basically put t
on the stack on a specific place so that it can get used
later on.
But what exactly is our stack? It is basically an array of elemtens that get used to store data inside the virtual machine.
// Our full stack
var n = [1 /* Couner on wich opcode we are */, {
u: a,
a: null,
f: [],
v: function() {
return [0]
},
h: function() {
return [0]
},
$: function() {}
}, void 0];
This is our stack from the start. The first element is our opcode counter that gets called alot. The second item
is an object with some functions in it that probably get changed in our vm. After these items you will see void 0
.
Our items will be pushed inplace of the void 0
and after it. This is how our vm will store the data.
This script will create a huge json object and send it in the payload:
{
"duration": 578.6999999955297,
"results": [
[
"02GYufLtrLlkSXGULAtLRYBioVGNCqwBEjqE5HsDzRyUrb4gcS75DMvO8z496zRxdwxEzZ795zuM63wamfnVndWHsfF2hoZMmagts2b989MK",
{
"duration": 0.20000000298023224,
"raw": false,
"state": "completed"
}
],
[
"0NPPMjvrnuSmTvJiSP24XbuPjGyV3rtWFuzK3wltmDU1zRZbEla5XztBP1GJ9Jf3IsxKoMK3FUaSH9kjfF0atNlgHKlF8IP4bc4OK4sfjC",
{
"duration": 0.10000000149011612,
"raw": "477931a0-53e3-428c-b9ee-9510b6bc6711",
"state": "completed"
}
],
[
"0IZ36YRIHPzQqu3jbMaStLkI5HokM29FhrNaNjhcR2drtkLjwfFWwZ0jfxB4XBP5VaZyNuVoJqQ0rmRfOkZNVmd4Y2ZysBK0jI9dQeJ64f",
{
"duration": 1.1000000014901161,
"raw": {
"video/3gpp; codecs=\"mp4v.20.8, samr\"": "",
"video/mp2t; codecs=\"avc1.42E01E,mp4a.40.2\"": "",
"video/mp4;": "maybe",
"video/mp4; codecs=\"avc1.42c00d\"": "probably",
"video/mp4; codecs=\"avc1.42E01E\"": "probably",
"video/mp4; codecs=\"avc1.64001E, mp4a.40.2\"": "probably",
"video/mp4; codecs=\"mp4v.20.240, mp4a.40.2\"": "",
"video/mp4; codecs=\"mp4v.20.8, mp4a.40.2\"": "",
"video/mp4; codecs=bogus": "",
"video/mp4; codecs=mp4a.40.2": "probably",
"video/mpeg;": "",
"video/ogg; codecs=\"theora, speex\"": "",
"video/ogg; codecs=\"theora\"": "probably",
"video/ogg; codecs=opus": "probably",
"video/ogg; codecs=speex": "",
"video/webm; codecs=\"vorbis,vp9\"": "probably",
"video/webm; codecs=\"vp8, vorbis\"": "probably",
"video/webm; codecs=vorbis": "probably",
"video/x-matroska; codecs=\"theora, vorbis\"": "",
"video/x-mpeg": ""
},
"state": "completed"
}
],
[
"0y2heUF0FrDtkiiyebO1q6iwyQq15MrTlDQfxLa8LAyqLbHWRyxwjGQK9OYYCN0y6FwO8Cy50zcuXgG2fMIfBFBt8odO1XFDbnAGWP",
{
"duration": 0.30000000447034836,
"raw": false,
"state": "completed"
}
],
[
"0zsCr6j4LtBB92J4tX7P2UWkujrWhokHvxxWx26RB3zOpEPO8OHdkJVj8FGxuaXBOcnrhgV1U6UbrB1zp58QFNCh9x7WQy1loVEnz5uvR7",
{
"duration": 14,
"raw": [
"getRandomValues",
"constructor",
"subtle",
"randomUUID",
"__defineGetter__",
"__defineSetter__",
"hasOwnProperty",
"__lookupGetter__",
"__lookupSetter__",
"isPrototypeOf",
"propertyIsEnumerable",
"toString",
"valueOf",
"__proto__",
"toLocaleString"
],
"state": "completed"
}
],
[
"02TIeS9gkoKR5PzNsxD6b8L0FYqU8HHqvHLLb2QdwOo7fNog5RsHJSk5765Ntnr0UqZculuWuFeTnYpvHf9NKdtsmRLVzWzbiYxo6aLO",
{
"duration": 553.5999999940395,
"errorCode": 1,
"errorDetails": "timed out",
"state": "failed"
}
],
[
"0g30EbkOlrvAYUSgk9hN25GABuKcNDOD1AD2l9TXoNDminlOktV5cwrtyPhiXyquGyXIbVJk9wlQKeGpmRIRZ3906GfmadcrY2rPkos9M6sjBfM50",
{
"duration": 3.899999998509884,
"raw": [
17,
17
],
"state": "completed"
}
],
[
"0bGu2IJ6KxoPyAzOsJUZ2MB7JDW6y7yHEfghNW9FVL1fkaEai7GZOqLwh3ep7RGXwMc7BiTDUun3jWztI9oodYjuwP9wagSDfI1lLJ5yvM7eg",
{
"duration": 106.80000000447035,
"raw": [
"location",
"constructor",
"implementation",
"URL",
"documentURI",
"compatMode",
"characterSet",
"charset",
"inputEncoding",
"contentType",
"doctype",
"documentElement",
"xmlEncoding",
"xmlVersion",
"xmlStandalone",
"domain",
"referrer",
"cookie",
"lastModified",
"readyState",
"title",
"dir",
"body",
"head",
"images",
"embeds",
"plugins",
"links",
"forms",
"scripts",
"currentScript",
"defaultView",
"designMode",
"onreadystatechange",
"anchors",
"applets",
"fgColor",
"linkColor",
"vlinkColor",
"alinkColor",
"bgColor",
"all",
"scrollingElement",
"onpointerlockchange",
"onpointerlockerror",
"hidden",
"visibilityState",
"wasDiscarded",
"featurePolicy",
"webkitVisibilityState",
"webkitHidden",
"onbeforecopy",
"onbeforecut",
"onbeforepaste",
"onfreeze",
"onresume",
"onsearch",
"onvisibilitychange",
"fullscreenEnabled",
"fullscreen",
"onfullscreenchange",
"onfullscreenerror",
"webkitIsFullScreen",
"webkitCurrentFullScreenElement",
"webkitFullscreenEnabled",
"webkitFullscreenElement",
"onwebkitfullscreenchange",
"onwebkitfullscreenerror",
"rootElement",
"onbeforexrselect",
"onabort",
"onblur",
"oncancel",
"oncanplay",
"oncanplaythrough",
"onchange",
"onclick",
"onclose",
"oncontextmenu",
"oncuechange",
"ondblclick",
"ondrag",
"ondragend",
"ondragenter",
"ondragleave",
"ondragover",
"ondragstart",
"ondrop",
"ondurationchange",
"onemptied",
"onended",
"onerror",
"onfocus",
"onformdata",
"oninput",
"oninvalid",
"onkeydown",
"onkeypress",
"onkeyup",
"onload",
"onloadeddata",
"onloadedmetadata",
"onloadstart",
"onmousedown",
"onmouseenter",
"onmouseleave",
"onmousemove",
"onmouseout",
"onmouseover",
"onmouseup",
"onmousewheel",
"onpause",
"onplay",
"onplaying",
"onprogress",
"onratechange",
"onreset",
"onresize",
"onscroll",
"onsecuritypolicyviolation",
"onseeked",
"onseeking",
"onselect",
"onslotchange",
"onstalled",
"onsubmit",
"onsuspend",
"ontimeupdate",
"ontoggle",
"onvolumechange",
"onwaiting",
"onwebkitanimationend",
"onwebkitanimationiteration",
"onwebkitanimationstart",
"onwebkittransitionend",
"onwheel",
"onauxclick",
"ongotpointercapture",
"onlostpointercapture",
"onpointerdown",
"onpointermove",
"onpointerup",
"onpointercancel",
"onpointerover",
"onpointerout",
"onpointerenter",
"onpointerleave",
"onselectstart",
"onselectionchange",
"onanimationend",
"onanimationiteration",
"onanimationstart",
"ontransitionrun",
"ontransitionstart",
"ontransitionend",
"ontransitioncancel",
"oncopy",
"oncut",
"onpaste",
"children",
"firstElementChild",
"lastElementChild",
"childElementCount",
"activeElement",
"styleSheets",
"pointerLockElement",
"fullscreenElement",
"adoptedStyleSheets",
"fonts",
"adoptNode",
"append",
"captureEvents",
"caretRangeFromPoint",
"clear",
"close",
"createAttribute",
"createAttributeNS",
"createCDATASection",
"createComment",
"createDocumentFragment",
"createElement",
"createElementNS",
"createEvent",
"createExpression",
"createNSResolver",
"createNodeIterator",
"createProcessingInstruction",
"createRange",
"createTextNode",
"createTreeWalker",
"elementFromPoint",
"elementsFromPoint",
"evaluate",
"execCommand",
"exitFullscreen",
"exitPointerLock",
"getElementById",
"getElementsByClassName",
"getElementsByName",
"getElementsByTagName",
"getElementsByTagNameNS",
"getSelection",
"hasFocus",
"importNode",
"open",
"prepend",
"queryCommandEnabled",
"queryCommandIndeterm",
"queryCommandState",
"queryCommandSupported",
"queryCommandValue",
"querySelector",
"querySelectorAll",
"releaseEvents",
"replaceChildren",
"webkitCancelFullScreen",
"webkitExitFullscreen",
"write",
"writeln",
"fragmentDirective",
"timeline",
"pictureInPictureEnabled",
"pictureInPictureElement",
"onpointerrawupdate",
"exitPictureInPicture",
"getAnimations",
"nodeType",
"nodeName",
"baseURI",
"isConnected",
"ownerDocument",
"parentNode",
"parentElement",
"childNodes",
"firstChild",
"lastChild",
"previousSibling",
"nextSibling",
"nodeValue",
"textContent",
"ELEMENT_NODE",
"ATTRIBUTE_NODE",
"TEXT_NODE",
"CDATA_SECTION_NODE",
"ENTITY_REFERENCE_NODE",
"ENTITY_NODE",
"PROCESSING_INSTRUCTION_NODE",
"COMMENT_NODE",
"DOCUMENT_NODE",
"DOCUMENT_TYPE_NODE",
"DOCUMENT_FRAGMENT_NODE",
"NOTATION_NODE",
"DOCUMENT_POSITION_DISCONNECTED",
"DOCUMENT_POSITION_PRECEDING",
"DOCUMENT_POSITION_FOLLOWING",
"DOCUMENT_POSITION_CONTAINS",
"DOCUMENT_POSITION_CONTAINED_BY",
"DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC",
"appendChild",
"cloneNode",
"compareDocumentPosition",
"contains",
"getRootNode",
"hasChildNodes",
"insertBefore",
"isDefaultNamespace",
"isEqualNode",
"isSameNode",
"lookupNamespaceURI",
"lookupPrefix",
"normalize",
"removeChild",
"replaceChild",
"addEventListener",
"dispatchEvent",
"removeEventListener",
"__defineGetter__",
"__defineSetter__",
"hasOwnProperty",
"__lookupGetter__",
"__lookupSetter__",
"isPrototypeOf",
"propertyIsEnumerable",
"toString",
"valueOf",
"__proto__",
"toLocaleString"
],
"state": "completed"
}
],
[
"0xnJ8GuityQhJFyaXJ0Taq9MVKQ0DgPY50AB2UDQj1aS2VWv1w3HZAjIlo3xip39XPQQpIZGB5wODUuSFtQhjsV0SxVh7XcxM9drJSCDbh",
{
"duration": 427.8999999985099,
"raw": [
"Object",
"Function",
"Array",
"Number",
"parseFloat",
"parseInt",
"Infinity",
"NaN",
"undefined",
"Boolean",
"String",
"Symbol",
"Date",
"Promise",
"RegExp",
"Error",
"AggregateError",
"EvalError",
"RangeError",
"ReferenceError",
"SyntaxError",
"TypeError",
"URIError",
"globalThis",
"JSON",
"Math",
"console",
"Intl",
"ArrayBuffer",
"Uint8Array",
"Int8Array",
"Uint16Array",
"Int16Array",
"Uint32Array",
"Int32Array",
"Float32Array",
"Float64Array",
"Uint8ClampedArray",
"BigUint64Array",
"BigInt64Array",
"DataView",
"Map",
"BigInt",
"Set",
"WeakMap",
"WeakSet",
"Proxy",
"Reflect",
"FinalizationRegistry",
"WeakRef",
"decodeURI",
"decodeURIComponent",
"encodeURI",
"encodeURIComponent",
"escape",
"unescape",
"eval",
"isFinite",
"isNaN",
"Option",
"Image",
"Audio",
"webkitURL",
"webkitRTCPeerConnection",
"webkitMediaStream",
"WebKitMutationObserver",
"WebKitCSSMatrix",
"XPathResult",
"XPathExpression",
"XPathEvaluator",
"XMLSerializer",
"XMLHttpRequestUpload",
"XMLHttpRequestEventTarget",
"XMLHttpRequest",
"XMLDocument",
"WritableStreamDefaultWriter",
"WritableStreamDefaultController",
"WritableStream",
"Worker",
"Window",
"WheelEvent",
"WebSocket",
"WebGLVertexArrayObject",
"WebGLUniformLocation",
"WebGLTransformFeedback",
"WebGLTexture",
"WebGLSync",
"WebGLShaderPrecisionFormat",
"WebGLShader",
"WebGLSampler",
"WebGLRenderingContext",
"WebGLRenderbuffer",
"WebGLQuery",
"WebGLProgram",
"WebGLFramebuffer",
"WebGLContextEvent",
"WebGLBuffer",
"WebGLActiveInfo",
"WebGL2RenderingContext",
"WaveShaperNode",
"VisualViewport",
"ValidityState",
"VTTCue",
"UserActivation",
"URLSearchParams",
"URL",
"UIEvent",
"TreeWalker",
"TransitionEvent",
"TransformStream",
"TrackEvent",
"TouchList",
"TouchEvent",
"Touch",
"TimeRanges",
"TextTrackList",
"TextTrackCueList",
"TextTrackCue",
"TextTrack",
"TextMetrics",
"TextEvent",
"TextEncoderStream",
"TextEncoder",
"TextDecoderStream",
"TextDecoder",
"Text",
"TaskAttributionTiming",
"SyncManager",
"SubmitEvent",
"StyleSheetList",
"StyleSheet",
"StylePropertyMapReadOnly",
"StylePropertyMap",
"StorageEvent",
"Storage",
"StereoPannerNode",
"StaticRange",
"ShadowRoot",
"Selection",
"SecurityPolicyViolationEvent",
"ScriptProcessorNode",
"ScreenOrientation",
"Screen",
"SVGViewElement",
"SVGUseElement",
"SVGUnitTypes",
"SVGTransformList",
"SVGTransform",
"SVGTitleElement",
"SVGTextPositioningElement",
"SVGTextPathElement",
"SVGTextElement",
"SVGTextContentElement",
"SVGTSpanElement",
"SVGSymbolElement",
"SVGSwitchElement",
"SVGStyleElement",
"SVGStringList",
"SVGStopElement",
"SVGSetElement",
"SVGScriptElement",
"SVGSVGElement",
"SVGRectElement",
"SVGRect",
"SVGRadialGradientElement",
"SVGPreserveAspectRatio",
"SVGPolylineElement",
"SVGPolygonElement",
"SVGPointList",
"SVGPoint",
"SVGPatternElement",
"SVGPathElement",
"SVGNumberList",
"SVGNumber",
"SVGMetadataElement",
"SVGMatrix",
"SVGMaskElement",
"SVGMarkerElement",
"SVGMPathElement",
"SVGLinearGradientElement",
"SVGLineElement",
"SVGLengthList",
"SVGLength",
"SVGImageElement",
"SVGGraphicsElement",
"SVGGradientElement",
"SVGGeometryElement",
"SVGGElement",
"SVGForeignObjectElement",
"SVGFilterElement",
"SVGFETurbulenceElement",
"SVGFETileElement",
"SVGFESpotLightElement",
"SVGFESpecularLightingElement",
"SVGFEPointLightElement",
"SVGFEOffsetElement",
"SVGFEMorphologyElement",
"SVGFEMergeNodeElement",
"SVGFEMergeElement",
"SVGFEImageElement",
"SVGFEGaussianBlurElement",
"SVGFEFuncRElement",
"SVGFEFuncGElement",
"SVGFEFuncBElement",
"SVGFEFuncAElement",
"SVGFEFloodElement",
"SVGFEDropShadowElement",
"SVGFEDistantLightElement",
"SVGFEDisplacementMapElement",
"SVGFEDiffuseLightingElement",
"SVGFEConvolveMatrixElement",
"SVGFECompositeElement",
"SVGFEComponentTransferElement",
"SVGFEColorMatrixElement",
"SVGFEBlendElement",
"SVGEllipseElement",
"SVGElement",
"SVGDescElement",
"SVGDefsElement",
"SVGComponentTransferFunctionElement",
"SVGClipPathElement",
"SVGCircleElement",
"SVGAnimationElement",
"SVGAnimatedTransformList",
"SVGAnimatedString",
"SVGAnimatedRect",
"SVGAnimatedPreserveAspectRatio",
"SVGAnimatedNumberList",
"SVGAnimatedNumber",
"SVGAnimatedLengthList",
"SVGAnimatedLength",
"SVGAnimatedInteger",
"SVGAnimatedEnumeration",
"SVGAnimatedBoolean",
"SVGAnimatedAngle",
"SVGAnimateTransformElement",
"SVGAnimateMotionElement",
"SVGAnimateElement",
"SVGAngle",
"SVGAElement",
"Response",
"ResizeObserverSize",
"ResizeObserverEntry",
"ResizeObserver",
"Request",
"ReportingObserver",
"ReadableStreamDefaultReader",
"ReadableStreamDefaultController",
"ReadableStreamBYOBRequest",
"ReadableStreamBYOBReader",
"ReadableStream",
"ReadableByteStreamController",
"Range",
"RadioNodeList",
"RTCTrackEvent",
"RTCStatsReport",
"RTCSessionDescription",
"RTCSctpTransport",
"RTCRtpTransceiver",
"RTCRtpSender",
"RTCRtpReceiver",
"RTCPeerConnectionIceEvent",
"RTCPeerConnectionIceErrorEvent",
"RTCPeerConnection",
"RTCIceCandidate",
"RTCErrorEvent",
"RTCError",
"RTCEncodedVideoFrame",
"RTCEncodedAudioFrame",
"RTCDtlsTransport",
"RTCDataChannelEvent",
"RTCDataChannel",
"RTCDTMFToneChangeEvent",
"RTCDTMFSender",
"RTCCertificate",
"PromiseRejectionEvent",
"ProgressEvent",
"ProcessingInstruction",
"PopStateEvent",
"PointerEvent",
"PluginArray",
"Plugin",
"PeriodicWave",
"PerformanceTiming",
"PerformanceServerTiming",
"PerformanceResourceTiming",
"PerformancePaintTiming",
"PerformanceObserverEntryList",
"PerformanceObserver",
"PerformanceNavigationTiming",
"PerformanceNavigation",
"PerformanceMeasure",
"PerformanceMark",
"PerformanceLongTaskTiming",
"PerformanceEventTiming",
"PerformanceEntry",
"PerformanceElementTiming",
"Performance",
"Path2D",
"PannerNode",
"PageTransitionEvent",
"OverconstrainedError",
"OscillatorNode",
"OffscreenCanvasRenderingContext2D",
"OffscreenCanvas",
"OfflineAudioContext",
"OfflineAudioCompletionEvent",
"NodeList",
"NodeIterator",
"NodeFilter",
"Node",
"NetworkInformation",
"Navigator",
"NamedNodeMap",
"MutationRecord",
"MutationObserver",
"MutationEvent",
"MouseEvent",
"MimeTypeArray",
"MimeType",
"MessagePort",
"MessageEvent",
"MessageChannel",
"MediaStreamTrackEvent",
"MediaStreamTrack",
"MediaStreamEvent",
"MediaStreamAudioSourceNode",
"MediaStreamAudioDestinationNode",
"MediaStream",
"MediaRecorder",
"MediaQueryListEvent",
"MediaQueryList",
"MediaList",
"MediaError",
"MediaEncryptedEvent",
"MediaElementAudioSourceNode",
"MediaCapabilities",
"Location",
"LayoutShiftAttribution",
"LayoutShift",
"LargestContentfulPaint",
"KeyframeEffect",
"KeyboardEvent",
"IntersectionObserverEntry",
"IntersectionObserver",
"InputEvent",
"InputDeviceInfo",
"InputDeviceCapabilities",
"ImageData",
"ImageCapture",
"ImageBitmapRenderingContext",
"ImageBitmap",
"IdleDeadline",
"IIRFilterNode",
"IDBVersionChangeEvent",
"IDBTransaction",
"IDBRequest",
"IDBOpenDBRequest",
"IDBObjectStore",
"IDBKeyRange",
"IDBIndex",
"IDBFactory",
"IDBDatabase",
"IDBCursorWithValue",
"IDBCursor",
"History",
"Headers",
"HashChangeEvent",
"HTMLVideoElement",
"HTMLUnknownElement",
"HTMLUListElement",
"HTMLTrackElement",
"HTMLTitleElement",
"HTMLTimeElement",
"HTMLTextAreaElement",
"HTMLTemplateElement",
"HTMLTableSectionElement",
"HTMLTableRowElement",
"HTMLTableElement",
"HTMLTableColElement",
"HTMLTableCellElement",
"HTMLTableCaptionElement",
"HTMLStyleElement",
"HTMLSpanElement",
"HTMLSourceElement",
"HTMLSlotElement",
"HTMLSelectElement",
"HTMLScriptElement",
"HTMLQuoteElement",
"HTMLProgressElement",
"HTMLPreElement",
"HTMLPictureElement",
"HTMLParamElement",
"HTMLParagraphElement",
"HTMLOutputElement",
"HTMLOptionsCollection",
"HTMLOptionElement",
"HTMLOptGroupElement",
"HTMLObjectElement",
"HTMLOListElement",
"HTMLModElement",
"HTMLMeterElement",
"HTMLMetaElement",
"HTMLMenuElement",
"HTMLMediaElement",
"HTMLMarqueeElement",
"HTMLMapElement",
"HTMLLinkElement",
"HTMLLegendElement",
"HTMLLabelElement",
"HTMLLIElement",
"HTMLInputElement",
"HTMLImageElement",
"HTMLIFrameElement",
"HTMLHtmlElement",
"HTMLHeadingElement",
"HTMLHeadElement",
"HTMLHRElement",
"HTMLFrameSetElement",
"HTMLFrameElement",
"HTMLFormElement",
"HTMLFormControlsCollection",
"HTMLFontElement",
"HTMLFieldSetElement",
"HTMLEmbedElement",
"HTMLElement",
"HTMLDocument",
"HTMLDivElement",
"HTMLDirectoryElement",
"HTMLDialogElement",
"HTMLDetailsElement",
"HTMLDataListElement",
"HTMLDataElement",
"HTMLDListElement",
"HTMLCollection",
"HTMLCanvasElement",
"HTMLButtonElement",
"HTMLBodyElement",
"HTMLBaseElement",
"HTMLBRElement",
"HTMLAudioElement",
"HTMLAreaElement",
"HTMLAnchorElement",
"HTMLAllCollection",
"GeolocationPositionError",
"GeolocationPosition",
"GeolocationCoordinates",
"Geolocation",
"GamepadHapticActuator",
"GamepadEvent",
"GamepadButton",
"Gamepad",
"GainNode",
"FormDataEvent",
"FormData",
"FontFaceSetLoadEvent",
"FontFace",
"FocusEvent",
"FileReader",
"FileList",
"File",
"FeaturePolicy",
"External",
"EventTarget",
"EventSource",
"EventCounts",
"Event",
"ErrorEvent",
"ElementInternals",
"Element",
"DynamicsCompressorNode",
"DragEvent",
"DocumentType",
"DocumentFragment",
"Document",
"DelayNode",
"DecompressionStream",
"DataTransferItemList",
"DataTransferItem",
"DataTransfer",
"DOMTokenList",
"DOMStringMap",
"DOMStringList",
"DOMRectReadOnly",
"DOMRectList",
"DOMRect",
"DOMQuad",
"DOMPointReadOnly",
"DOMPoint",
"DOMParser",
"DOMMatrixReadOnly",
"DOMMatrix",
"DOMImplementation",
"DOMException",
"DOMError",
"CustomEvent",
"CustomElementRegistry",
"Crypto",
"CountQueuingStrategy",
"ConvolverNode",
"ConstantSourceNode",
"CompressionStream",
"CompositionEvent",
"Comment",
"CloseEvent",
"ClipboardEvent",
"CharacterData",
"ChannelSplitterNode",
"ChannelMergerNode",
"CanvasRenderingContext2D",
"CanvasPattern",
"CanvasGradient",
"CanvasCaptureMediaStreamTrack",
"CSSVariableReferenceValue",
"CSSUnparsedValue",
"CSSUnitValue",
"CSSTranslate",
"CSSTransformValue",
"CSSTransformComponent",
"CSSSupportsRule",
"CSSStyleValue",
"CSSStyleSheet",
"CSSStyleRule",
"CSSStyleDeclaration",
"CSSSkewY",
"CSSSkewX",
"CSSSkew",
"CSSScale",
"CSSRuleList",
"CSSRule",
"CSSRotate",
"CSSPropertyRule",
"CSSPositionValue",
"CSSPerspective",
"CSSPageRule",
"CSSNumericValue",
"CSSNumericArray",
"CSSNamespaceRule",
"CSSMediaRule",
"CSSMatrixComponent",
"CSSMathValue",
"CSSMathSum",
"CSSMathProduct",
"CSSMathNegate",
"CSSMathMin",
"CSSMathMax",
"CSSMathInvert",
"CSSKeywordValue",
"CSSKeyframesRule",
"CSSKeyframeRule",
"CSSImportRule",
"CSSImageValue",
"CSSGroupingRule",
"CSSFontFaceRule",
"CSSCounterStyleRule",
"CSSConditionRule",
"CSS",
"CDATASection",
"ByteLengthQueuingStrategy",
"BroadcastChannel",
"BlobEvent",
"Blob",
"BiquadFilterNode",
"BeforeUnloadEvent",
"BeforeInstallPromptEvent",
"BatteryManager",
"BaseAudioContext",
"BarProp",
"AudioWorkletNode",
"AudioScheduledSourceNode",
"AudioProcessingEvent",
"AudioParamMap",
"AudioParam",
"AudioNode",
"AudioListener",
"AudioDestinationNode",
"AudioContext",
"AudioBufferSourceNode",
"AudioBuffer",
"Attr",
"AnimationEvent",
"AnimationEffect",
"Animation",
"AnalyserNode",
"AbstractRange",
"AbortSignal",
"AbortController",
"window",
"self",
"document",
"name",
"location",
"customElements",
"history",
"locationbar",
"menubar",
"personalbar",
"scrollbars",
"statusbar",
"toolbar",
"status",
"closed",
"frames",
"length",
"top",
"opener",
"parent",
"frameElement",
"navigator",
"origin",
"external",
"screen",
"innerWidth",
"innerHeight",
"scrollX",
"pageXOffset",
"scrollY",
"pageYOffset",
"visualViewport",
"screenX",
"screenY",
"outerWidth",
"outerHeight",
"devicePixelRatio",
"event",
"clientInformation",
"offscreenBuffering",
"screenLeft",
"screenTop",
"defaultStatus",
"defaultstatus",
"styleMedia",
"onsearch",
"isSecureContext",
"performance",
"onappinstalled",
"onbeforeinstallprompt",
"crypto",
"indexedDB",
"webkitStorageInfo",
"sessionStorage",
"localStorage",
"onbeforexrselect",
"onabort",
"onblur",
"oncancel",
"oncanplay",
"oncanplaythrough",
"onchange",
"onclick",
"onclose",
"oncontextmenu",
"oncuechange",
"ondblclick",
"ondrag",
"ondragend",
"ondragenter",
"ondragleave",
"ondragover",
"ondragstart",
"ondrop",
"ondurationchange",
"onemptied",
"onended",
"onerror",
"onfocus",
"onformdata",
"oninput",
"oninvalid",
"onkeydown",
"onkeypress",
"onkeyup",
"onload",
"onloadeddata",
"onloadedmetadata",
"onloadstart",
"onmousedown",
"onmouseenter",
"onmouseleave",
"onmousemove",
"onmouseout",
"onmouseover",
"onmouseup",
"onmousewheel",
"onpause",
"onplay",
"onplaying",
"onprogress",
"onratechange",
"onreset",
"onresize",
"onscroll",
"onsecuritypolicyviolation",
"onseeked",
"onseeking",
"onselect",
"onslotchange",
"onstalled",
"onsubmit",
"onsuspend",
"ontimeupdate",
"ontoggle",
"onvolumechange",
"onwaiting",
"onwebkitanimationend",
"onwebkitanimationiteration",
"onwebkitanimationstart",
"onwebkittransitionend",
"onwheel",
"onauxclick",
"ongotpointercapture",
"onlostpointercapture",
"onpointerdown",
"onpointermove",
"onpointerup",
"onpointercancel",
"onpointerover",
"onpointerout",
"onpointerenter",
"onpointerleave",
"onselectstart",
"onselectionchange",
"onanimationend",
"onanimationiteration",
"onanimationstart",
"ontransitionrun",
"ontransitionstart",
"ontransitionend",
"ontransitioncancel",
"onafterprint",
"onbeforeprint",
"onbeforeunload",
"onhashchange",
"onlanguagechange",
"onmessage",
"onmessageerror",
"onoffline",
"ononline",
"onpagehide",
"onpageshow",
"onpopstate",
"onrejectionhandled",
"onstorage",
"onunhandledrejection",
"onunload",
"alert",
"atob",
"blur",
"btoa",
"cancelAnimationFrame",
"cancelIdleCallback",
"captureEvents",
"clearInterval",
"clearTimeout",
"close",
"confirm",
"createImageBitmap",
"fetch",
"find",
"focus",
"getComputedStyle",
"getSelection",
"matchMedia",
"moveBy",
"moveTo",
"open",
"postMessage",
"print",
"prompt",
"queueMicrotask",
"releaseEvents",
"reportError",
"requestAnimationFrame",
"requestIdleCallback",
"resizeBy",
"resizeTo",
"scroll",
"scrollBy",
"scrollTo",
"setInterval",
"setTimeout",
"stop",
"webkitCancelAnimationFrame",
"webkitRequestAnimationFrame",
"Atomics",
"chrome",
"WebAssembly",
"caches",
"cookieStore",
"ondevicemotion",
"ondeviceorientation",
"ondeviceorientationabsolute",
"AbsoluteOrientationSensor",
"Accelerometer",
"AudioWorklet",
"Cache",
"CacheStorage",
"Clipboard",
"ClipboardItem",
"CookieChangeEvent",
"CookieStore",
"CookieStoreManager",
"Credential",
"CredentialsContainer",
"CryptoKey",
"DeviceMotionEvent",
"DeviceMotionEventAcceleration",
"DeviceMotionEventRotationRate",
"DeviceOrientationEvent",
"FederatedCredential",
"Gyroscope",
"Keyboard",
"KeyboardLayoutMap",
"LinearAccelerationSensor",
"Lock",
"LockManager",
"MIDIAccess",
"MIDIConnectionEvent",
"MIDIInput",
"MIDIInputMap",
"MIDIMessageEvent",
"MIDIOutput",
"MIDIOutputMap",
"MIDIPort",
"MediaDeviceInfo",
"MediaDevices",
"MediaKeyMessageEvent",
"MediaKeySession",
"MediaKeyStatusMap",
"MediaKeySystemAccess",
"MediaKeys",
"NavigationPreloadManager",
"NavigatorManagedData",
"OrientationSensor",
"PasswordCredential",
"RTCIceTransport",
"RelativeOrientationSensor",
"Sensor",
"SensorErrorEvent",
"ServiceWorker",
"ServiceWorkerContainer",
"ServiceWorkerRegistration",
"StorageManager",
"SubtleCrypto",
"Worklet",
"XRDOMOverlayState",
"XRLayer",
"XRWebGLBinding",
"AudioData",
"EncodedAudioChunk",
"EncodedVideoChunk",
"ImageTrack",
"ImageTrackList",
"VideoColorSpace",
"VideoFrame",
"AudioDecoder",
"AudioEncoder",
"ImageDecoder",
"VideoDecoder",
"VideoEncoder",
"AuthenticatorAssertionResponse",
"AuthenticatorAttestationResponse",
"AuthenticatorResponse",
"PublicKeyCredential",
"Bluetooth",
"BluetoothCharacteristicProperties",
"BluetoothDevice",
"BluetoothRemoteGATTCharacteristic",
"BluetoothRemoteGATTDescriptor",
"BluetoothRemoteGATTServer",
"BluetoothRemoteGATTService",
"EyeDropper",
"FileSystemDirectoryHandle",
"FileSystemFileHandle",
"FileSystemHandle",
"FileSystemWritableFileStream",
"FragmentDirective",
"GravitySensor",
"HID",
"HIDConnectionEvent",
"HIDDevice",
"HIDInputReportEvent",
"IdleDetector",
"MediaStreamTrackGenerator",
"MediaStreamTrackProcessor",
"OTPCredential",
"PaymentAddress",
"PaymentRequest",
"PaymentResponse",
"PaymentMethodChangeEvent",
"Presentation",
"PresentationAvailability",
"PresentationConnection",
"PresentationConnectionAvailableEvent",
"PresentationConnectionCloseEvent",
"PresentationConnectionList",
"PresentationReceiver",
"PresentationRequest",
"Profiler",
"Scheduling",
"Serial",
"SerialPort",
"USB",
"USBAlternateInterface",
"USBConfiguration",
"USBConnectionEvent",
"USBDevice",
"USBEndpoint",
"USBInTransferResult",
"USBInterface",
"USBIsochronousInTransferPacket",
"USBIsochronousInTransferResult",
"USBIsochronousOutTransferPacket",
"USBIsochronousOutTransferResult",
"USBOutTransferResult",
"VirtualKeyboard",
"WakeLock",
"WakeLockSentinel",
"WebTransport",
"WebTransportBidirectionalStream",
"WebTransportDatagramDuplexStream",
"WebTransportError",
"XRAnchor",
"XRAnchorSet",
"XRBoundedReferenceSpace",
"XRFrame",
"XRInputSource",
"XRInputSourceArray",
"XRInputSourceEvent",
"XRInputSourcesChangeEvent",
"XRPose",
"XRReferenceSpace",
"XRReferenceSpaceEvent",
"XRRenderState",
"XRRigidTransform",
"XRSession",
"XRSessionEvent",
"XRSpace",
"XRSystem",
"XRView",
"XRViewerPose",
"XRViewport",
"XRWebGLLayer",
"XRCPUDepthInformation",
"XRDepthInformation",
"XRWebGLDepthInformation",
"XRHitTestResult",
"XRHitTestSource",
"XRRay",
"XRTransientInputHitTestResult",
"XRTransientInputHitTestSource",
"XRLightEstimate",
"XRLightProbe",
"showDirectoryPicker",
"showOpenFilePicker",
"showSaveFilePicker",
"originAgentCluster",
"trustedTypes",
"speechSynthesis",
"onpointerrawupdate",
"crossOriginIsolated",
"scheduler",
"AnimationPlaybackEvent",
"AnimationTimeline",
"CSSAnimation",
"CSSTransition",
"DocumentTimeline",
"BackgroundFetchManager",
"BackgroundFetchRecord",
"BackgroundFetchRegistration",
"BluetoothUUID",
"CustomStateSet",
"DelegatedInkTrailPresenter",
"Ink",
"MediaMetadata",
"MediaSession",
"MediaSource",
"SourceBuffer",
"SourceBufferList",
"NavigatorUAData",
"Notification",
"PaymentInstruments",
"PaymentManager",
"PaymentRequestUpdateEvent",
"PeriodicSyncManager",
"PermissionStatus",
"Permissions",
"PictureInPictureEvent",
"PictureInPictureWindow",
"PushManager",
"PushSubscription",
"PushSubscriptionOptions",
"RemotePlayback",
"Scheduler",
"TaskController",
"TaskPriorityChangeEvent",
"TaskSignal",
"SharedWorker",
"SpeechSynthesisErrorEvent",
"SpeechSynthesisEvent",
"SpeechSynthesisUtterance",
"TrustedHTML",
"TrustedScript",
"TrustedScriptURL",
"TrustedTypePolicy",
"TrustedTypePolicyFactory",
"URLPattern",
"VideoPlaybackQuality",
"VirtualKeyboardGeometryChangeEvent",
"XSLTProcessor",
"webkitSpeechGrammar",
"webkitSpeechGrammarList",
"webkitSpeechRecognition",
"webkitSpeechRecognitionError",
"webkitSpeechRecognitionEvent",
"openDatabase",
"webkitRequestFileSystem",
"webkitResolveLocalFileSystemURL",
"TEMPORARY",
"PERSISTENT",
"constructor",
"addEventListener",
"dispatchEvent",
"removeEventListener",
"__defineGetter__",
"__defineSetter__",
"hasOwnProperty",
"__lookupGetter__",
"__lookupSetter__",
"isPrototypeOf",
"propertyIsEnumerable",
"toString",
"valueOf",
"__proto__",
"toLocaleString"
],
"state": "completed"
}
],
[
"0KUh7m4aUwb7p9aA00pNURkPKNhLImuFvePutF52wCsTTfaNAExJE0k0W9Y11CScdRksgqA0Y5tBd0WYnky4Ui57xlTNtbtAoBnzFOUdnM",
{
"state": "pending"
}
],
[
"08BJtZWABVPMAsc8M2m6RIon62cV7rohS0ArlJFKJVTzGyDSDUNVjpSW7ghDZuo0SZM0RUjvBeMWjW2hBJSQSytPb9YSNsixbUgesFACHKtg8",
{
"state": "pending"
}
],
[
"0GaJx3yClymqWt4RpZP8L7X7Qo27YjU2luJFqTpglMx1pnaiPk75zHh9XgfVomxFWsVUbhWQW3wfrVuR8evhrqzpxBvBb4wBVr7rApQIIE",
{
"state": "pending"
}
],
[
"0auadYM8fXqjF2tLVZP7wd3KG42FUB60Ze4z0FXultSlMRKflsPbs9a2GrnnrXZXWNnhaCI01fkkGCT1GoTs6y5c1XCMtOGoYmFWC59Rp",
{
"state": "pending"
}
],
[
"0frsFYsm7ZuFlCesQP9z9fkF0mQc1n2Gz8gTLglPQ1jF0JrvNbOYBVAztZtFatYXPibajLPzqkdmR6XfwLV0BmAvmCyLF9niHrsKzKLhc6T3JEMkZxZNc",
{
"state": "pending"
}
],
[
"0yS2L9PQUy3Ydu9TP6ENOyrJ74x3BthtegdVuFw9GEEWmx7lh8BCdkQaZxeFbik7TMsdkwbe5uWjOVgpcleDElXulfqz03mzpX",
{
"state": "pending"
}
],
[
"0L5pbVohUQ4sKHwVTT4Yc26M6gh0ADEbtpSuwzzRwipbAeeTfAFXiVKyZ7yjAeY9DCWUDnGKHEq5CjMCQWKHoUSRlC9TYpjvoZhN5dprhMlE97",
{
"state": "pending"
}
],
[
"0fbexwhkBZJCywAYukA8Tca1zmXxCVXHriXCzNhSqsKuoIBy86UdniVNdd1xgk2GKB5In7oPFqrOzN9jTDHNdI8WFMBdhMzW7BDfJAujNHL1evbGr",
{
"state": "pending"
}
],
[
"0br0UFzYfXMFiDr0U0Uxq5WaKSI4yVJMKHROMQuhtiRgIgPAW8uZ3DmIFv8D3HGh7PYh0JBiSC7aOpWqyFCvcd82PwBk9Af6o75TqEwJQQoWg",
{
"state": "pending"
}
],
[
"0yNtyeD3MDIC1p6JPRbdbhaC06bXJjzHn0QcV9dA02P7VsyzM8DIufMewSxT9YpxaP6X0mXkmfiUhiw7HGeKwEaXzz0JR9lEbeEMJQgWrL",
{
"state": "pending"
}
],
[
"026ZehwWiZ7OhVNHgcHXFIq0PDmbr88E7I2Yyf8iDNL0QeoDogOgccDEryNRN3ViY8RudoSmTj2j4Of9AvwF1AGufDNcrDV9dkkuHWOb",
{
"state": "pending"
}
]
],
"timedOut": true,
"version": "2.0.0"
}