• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*! *****************************************************************************
2Copyright (c) Microsoft Corporation. All rights reserved.
3Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4this file except in compliance with the License. You may obtain a copy of the
5License at http://www.apache.org/licenses/LICENSE-2.0
6
7THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10MERCHANTABLITY OR NON-INFRINGEMENT.
11
12See the Apache Version 2.0 License for specific language governing permissions
13and limitations under the License.
14***************************************************************************** */
15
16/// <reference no-default-lib="true"/>
17
18/////////////////////////////
19/// ECMAScript APIs
20/////////////////////////////
21
22declare var NaN: number;
23declare var Infinity: number;
24
25/**
26  * Evaluates JavaScript code and executes it.
27  * @param x A String value that contains valid JavaScript code.
28  */
29declare function eval(x: string): any;
30
31/**
32  * Converts A string to an integer.
33  * @param s A string to convert into a number.
34  * @param radix A value between 2 and 36 that specifies the base of the number in numString.
35  * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
36  * All other strings are considered decimal.
37  */
38declare function parseInt(s: string, radix?: number): number;
39
40/**
41  * Converts a string to a floating-point number.
42  * @param string A string that contains a floating-point number.
43  */
44declare function parseFloat(string: string): number;
45
46/**
47  * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).
48  * @param number A numeric value.
49  */
50declare function isNaN(number: number): boolean;
51
52/**
53  * Determines whether a supplied number is finite.
54  * @param number Any numeric value.
55  */
56declare function isFinite(number: number): boolean;
57
58/**
59  * Gets the unencoded version of an encoded Uniform Resource Identifier (URI).
60  * @param encodedURI A value representing an encoded URI.
61  */
62declare function decodeURI(encodedURI: string): string;
63
64/**
65  * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).
66  * @param encodedURIComponent A value representing an encoded URI component.
67  */
68declare function decodeURIComponent(encodedURIComponent: string): string;
69
70/**
71  * Encodes a text string as a valid Uniform Resource Identifier (URI)
72  * @param uri A value representing an encoded URI.
73  */
74declare function encodeURI(uri: string): string;
75
76/**
77  * Encodes a text string as a valid component of a Uniform Resource Identifier (URI).
78  * @param uriComponent A value representing an encoded URI component.
79  */
80declare function encodeURIComponent(uriComponent: string | number | boolean): string;
81
82/**
83  * Computes a new string in which certain characters have been replaced by a hexadecimal escape sequence.
84  * @param string A string value
85  */
86declare function escape(string: string): string;
87
88/**
89  * Computes a new string in which hexadecimal escape sequences are replaced with the character that it represents.
90  * @param string A string value
91  */
92declare function unescape(string: string): string;
93
94interface PropertyDescriptor {
95    configurable?: boolean;
96    enumerable?: boolean;
97    value?: any;
98    writable?: boolean;
99    get? (): any;
100    set? (v: any): void;
101}
102
103interface PropertyDescriptorMap {
104    [s: string]: PropertyDescriptor;
105}
106
107interface Object {
108    /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */
109    constructor: Function;
110
111    /** Returns a string representation of an object. */
112    toString(): string;
113
114    /** Returns a date converted to a string using the current locale. */
115    toLocaleString(): string;
116
117    /** Returns the primitive value of the specified object. */
118    valueOf(): Object;
119
120    /**
121      * Determines whether an object has a property with the specified name.
122      * @param v A property name.
123      */
124    hasOwnProperty(v: string): boolean;
125
126    /**
127      * Determines whether an object exists in another object's prototype chain.
128      * @param v Another object whose prototype chain is to be checked.
129      */
130    isPrototypeOf(v: Object): boolean;
131
132    /**
133      * Determines whether a specified property is enumerable.
134      * @param v A property name.
135      */
136    propertyIsEnumerable(v: string): boolean;
137}
138
139interface ObjectConstructor {
140    new (value?: any): Object;
141    (): any;
142    (value: any): any;
143
144    /** A reference to the prototype for a class of objects. */
145    prototype: Object;
146
147    /**
148      * Returns the prototype of an object.
149      * @param o The object that references the prototype.
150      */
151    getPrototypeOf(o: any): any;
152
153    /**
154      * Gets the own property descriptor of the specified object.
155      * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype.
156      * @param o Object that contains the property.
157      * @param p Name of the property.
158    */
159    getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor;
160
161    /**
162      * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly
163      * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions.
164      * @param o Object that contains the own properties.
165      */
166    getOwnPropertyNames(o: any): string[];
167
168    /**
169      * Creates an object that has the specified prototype, and that optionally contains specified properties.
170      * @param o Object to use as a prototype. May be null
171      * @param properties JavaScript object that contains one or more property descriptors.
172      */
173    create(o: any, properties?: PropertyDescriptorMap): any;
174
175    /**
176      * Adds a property to an object, or modifies attributes of an existing property.
177      * @param o Object on which to add or modify the property. This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object.
178      * @param p The property name.
179      * @param attributes Descriptor for the property. It can be for a data property or an accessor property.
180      */
181    defineProperty(o: any, p: string, attributes: PropertyDescriptor): any;
182
183    /**
184      * Adds one or more properties to an object, and/or modifies attributes of existing properties.
185      * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object.
186      * @param properties JavaScript object that contains one or more descriptor objects. Each descriptor object describes a data property or an accessor property.
187      */
188    defineProperties(o: any, properties: PropertyDescriptorMap): any;
189
190    /**
191      * Prevents the modification of attributes of existing properties, and prevents the addition of new properties.
192      * @param o Object on which to lock the attributes.
193      */
194    seal<T>(o: T): T;
195
196    /**
197      * Prevents the modification of existing property attributes and values, and prevents the addition of new properties.
198      * @param o Object on which to lock the attributes.
199      */
200    freeze<T>(o: T): T;
201
202    /**
203      * Prevents the addition of new properties to an object.
204      * @param o Object to make non-extensible.
205      */
206    preventExtensions<T>(o: T): T;
207
208    /**
209      * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object.
210      * @param o Object to test.
211      */
212    isSealed(o: any): boolean;
213
214    /**
215      * Returns true if existing property attributes and values cannot be modified in an object, and new properties cannot be added to the object.
216      * @param o Object to test.
217      */
218    isFrozen(o: any): boolean;
219
220    /**
221      * Returns a value that indicates whether new properties can be added to an object.
222      * @param o Object to test.
223      */
224    isExtensible(o: any): boolean;
225
226    /**
227      * Returns the names of the enumerable properties and methods of an object.
228      * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.
229      */
230    keys(o: any): string[];
231}
232
233/**
234  * Provides functionality common to all JavaScript objects.
235  */
236declare var Object: ObjectConstructor;
237
238/**
239  * Creates a new function.
240  */
241interface Function {
242    /**
243      * Calls the function, substituting the specified object for the this value of the function, and the specified array for the arguments of the function.
244      * @param thisArg The object to be used as the this object.
245      * @param argArray A set of arguments to be passed to the function.
246      */
247    apply(thisArg: any, argArray?: any): any;
248
249    /**
250      * Calls a method of an object, substituting another object for the current object.
251      * @param thisArg The object to be used as the current object.
252      * @param argArray A list of arguments to be passed to the method.
253      */
254    call(thisArg: any, ...argArray: any[]): any;
255
256    /**
257      * For a given function, creates a bound function that has the same body as the original function.
258      * The this object of the bound function is associated with the specified object, and has the specified initial parameters.
259      * @param thisArg An object to which the this keyword can refer inside the new function.
260      * @param argArray A list of arguments to be passed to the new function.
261      */
262    bind(thisArg: any, ...argArray: any[]): any;
263
264    prototype: any;
265    length: number;
266
267    // Non-standard extensions
268    arguments: any;
269    caller: Function;
270}
271
272interface FunctionConstructor {
273    /**
274      * Creates a new function.
275      * @param args A list of arguments the function accepts.
276      */
277    new (...args: string[]): Function;
278    (...args: string[]): Function;
279    prototype: Function;
280}
281
282declare var Function: FunctionConstructor;
283
284interface IArguments {
285    [index: number]: any;
286    length: number;
287    callee: Function;
288}
289
290interface String {
291    /** Returns a string representation of a string. */
292    toString(): string;
293
294    /**
295      * Returns the character at the specified index.
296      * @param pos The zero-based index of the desired character.
297      */
298    charAt(pos: number): string;
299
300    /**
301      * Returns the Unicode value of the character at the specified location.
302      * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned.
303      */
304    charCodeAt(index: number): number;
305
306    /**
307      * Returns a string that contains the concatenation of two or more strings.
308      * @param strings The strings to append to the end of the string.
309      */
310    concat(...strings: string[]): string;
311
312    /**
313      * Returns the position of the first occurrence of a substring.
314      * @param searchString The substring to search for in the string
315      * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string.
316      */
317    indexOf(searchString: string, position?: number): number;
318
319    /**
320      * Returns the last occurrence of a substring in the string.
321      * @param searchString The substring to search for.
322      * @param position The index at which to begin searching. If omitted, the search begins at the end of the string.
323      */
324    lastIndexOf(searchString: string, position?: number): number;
325
326    /**
327      * Determines whether two strings are equivalent in the current locale.
328      * @param that String to compare to target string
329      */
330    localeCompare(that: string): number;
331
332    /**
333      * Matches a string with a regular expression, and returns an array containing the results of that search.
334      * @param regexp A variable name or string literal containing the regular expression pattern and flags.
335      */
336    match(regexp: string): RegExpMatchArray;
337
338    /**
339      * Matches a string with a regular expression, and returns an array containing the results of that search.
340      * @param regexp A regular expression object that contains the regular expression pattern and applicable flags.
341      */
342    match(regexp: RegExp): RegExpMatchArray;
343
344    /**
345      * Replaces text in a string, using a regular expression or search string.
346      * @param searchValue A string that represents the regular expression.
347      * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
348      */
349    replace(searchValue: string, replaceValue: string): string;
350
351    /**
352      * Replaces text in a string, using a regular expression or search string.
353      * @param searchValue A string that represents the regular expression.
354      * @param replacer A function that returns the replacement text.
355      */
356    replace(searchValue: string, replacer: (substring: string, ...args: any[]) => string): string;
357
358    /**
359      * Replaces text in a string, using a regular expression or search string.
360      * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags.
361      * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
362      */
363    replace(searchValue: RegExp, replaceValue: string): string;
364
365    /**
366      * Replaces text in a string, using a regular expression or search string.
367      * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags
368      * @param replacer A function that returns the replacement text.
369      */
370    replace(searchValue: RegExp, replacer: (substring: string, ...args: any[]) => string): string;
371
372    /**
373      * Finds the first substring match in a regular expression search.
374      * @param regexp The regular expression pattern and applicable flags.
375      */
376    search(regexp: string): number;
377
378    /**
379      * Finds the first substring match in a regular expression search.
380      * @param regexp The regular expression pattern and applicable flags.
381      */
382    search(regexp: RegExp): number;
383
384    /**
385      * Returns a section of a string.
386      * @param start The index to the beginning of the specified portion of stringObj.
387      * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end.
388      * If this value is not specified, the substring continues to the end of stringObj.
389      */
390    slice(start?: number, end?: number): string;
391
392    /**
393      * Split a string into substrings using the specified separator and return them as an array.
394      * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned.
395      * @param limit A value used to limit the number of elements returned in the array.
396      */
397    split(separator: string, limit?: number): string[];
398
399    /**
400      * Split a string into substrings using the specified separator and return them as an array.
401      * @param separator A Regular Express that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned.
402      * @param limit A value used to limit the number of elements returned in the array.
403      */
404    split(separator: RegExp, limit?: number): string[];
405
406    /**
407      * Returns the substring at the specified location within a String object.
408      * @param start The zero-based index number indicating the beginning of the substring.
409      * @param end Zero-based index number indicating the end of the substring. The substring includes the characters up to, but not including, the character indicated by end.
410      * If end is omitted, the characters from start through the end of the original string are returned.
411      */
412    substring(start: number, end?: number): string;
413
414    /** Converts all the alphabetic characters in a string to lowercase. */
415    toLowerCase(): string;
416
417    /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */
418    toLocaleLowerCase(): string;
419
420    /** Converts all the alphabetic characters in a string to uppercase. */
421    toUpperCase(): string;
422
423    /** Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. */
424    toLocaleUpperCase(): string;
425
426    /** Removes the leading and trailing white space and line terminator characters from a string. */
427    trim(): string;
428
429    /** Returns the length of a String object. */
430    length: number;
431
432    // IE extensions
433    /**
434      * Gets a substring beginning at the specified location and having the specified length.
435      * @param from The starting position of the desired substring. The index of the first character in the string is zero.
436      * @param length The number of characters to include in the returned substring.
437      */
438    substr(from: number, length?: number): string;
439
440    /** Returns the primitive value of the specified object. */
441    valueOf(): string;
442
443    [index: number]: string;
444}
445
446interface StringConstructor {
447    new (value?: any): String;
448    (value?: any): string;
449    prototype: String;
450    fromCharCode(...codes: number[]): string;
451}
452
453/**
454  * Allows manipulation and formatting of text strings and determination and location of substrings within strings.
455  */
456declare var String: StringConstructor;
457
458interface Boolean {
459    /** Returns the primitive value of the specified object. */
460    valueOf(): boolean;
461}
462
463interface BooleanConstructor {
464    new (value?: any): Boolean;
465    (value?: any): boolean;
466    prototype: Boolean;
467}
468
469declare var Boolean: BooleanConstructor;
470
471interface Number {
472    /**
473      * Returns a string representation of an object.
474      * @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers.
475      */
476    toString(radix?: number): string;
477
478    /**
479      * Returns a string representing a number in fixed-point notation.
480      * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive.
481      */
482    toFixed(fractionDigits?: number): string;
483
484    /**
485      * Returns a string containing a number represented in exponential notation.
486      * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive.
487      */
488    toExponential(fractionDigits?: number): string;
489
490    /**
491      * Returns a string containing a number represented either in exponential or fixed-point notation with a specified number of digits.
492      * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive.
493      */
494    toPrecision(precision?: number): string;
495
496    /** Returns the primitive value of the specified object. */
497    valueOf(): number;
498}
499
500interface NumberConstructor {
501    new (value?: any): Number;
502    (value?: any): number;
503    prototype: Number;
504
505    /** The largest number that can be represented in JavaScript. Equal to approximately 1.79E+308. */
506    MAX_VALUE: number;
507
508    /** The closest number to zero that can be represented in JavaScript. Equal to approximately 5.00E-324. */
509    MIN_VALUE: number;
510
511    /**
512      * A value that is not a number.
513      * In equality comparisons, NaN does not equal any value, including itself. To test whether a value is equivalent to NaN, use the isNaN function.
514      */
515    NaN: number;
516
517    /**
518      * A value that is less than the largest negative number that can be represented in JavaScript.
519      * JavaScript displays NEGATIVE_INFINITY values as -infinity.
520      */
521    NEGATIVE_INFINITY: number;
522
523    /**
524      * A value greater than the largest number that can be represented in JavaScript.
525      * JavaScript displays POSITIVE_INFINITY values as infinity.
526      */
527    POSITIVE_INFINITY: number;
528}
529
530/** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */
531declare var Number: NumberConstructor;
532
533interface TemplateStringsArray extends Array<string> {
534    raw: string[];
535}
536
537interface Math {
538    /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */
539    E: number;
540    /** The natural logarithm of 10. */
541    LN10: number;
542    /** The natural logarithm of 2. */
543    LN2: number;
544    /** The base-2 logarithm of e. */
545    LOG2E: number;
546    /** The base-10 logarithm of e. */
547    LOG10E: number;
548    /** Pi. This is the ratio of the circumference of a circle to its diameter. */
549    PI: number;
550    /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */
551    SQRT1_2: number;
552    /** The square root of 2. */
553    SQRT2: number;
554    /**
555      * Returns the absolute value of a number (the value without regard to whether it is positive or negative).
556      * For example, the absolute value of -5 is the same as the absolute value of 5.
557      * @param x A numeric expression for which the absolute value is needed.
558      */
559    abs(x: number): number;
560    /**
561      * Returns the arc cosine (or inverse cosine) of a number.
562      * @param x A numeric expression.
563      */
564    acos(x: number): number;
565    /**
566      * Returns the arcsine of a number.
567      * @param x A numeric expression.
568      */
569    asin(x: number): number;
570    /**
571      * Returns the arctangent of a number.
572      * @param x A numeric expression for which the arctangent is needed.
573      */
574    atan(x: number): number;
575    /**
576      * Returns the angle (in radians) from the X axis to a point.
577      * @param y A numeric expression representing the cartesian y-coordinate.
578      * @param x A numeric expression representing the cartesian x-coordinate.
579      */
580    atan2(y: number, x: number): number;
581    /**
582      * Returns the smallest number greater than or equal to its numeric argument.
583      * @param x A numeric expression.
584      */
585    ceil(x: number): number;
586    /**
587      * Returns the cosine of a number.
588      * @param x A numeric expression that contains an angle measured in radians.
589      */
590    cos(x: number): number;
591    /**
592      * Returns e (the base of natural logarithms) raised to a power.
593      * @param x A numeric expression representing the power of e.
594      */
595    exp(x: number): number;
596    /**
597      * Returns the greatest number less than or equal to its numeric argument.
598      * @param x A numeric expression.
599      */
600    floor(x: number): number;
601    /**
602      * Returns the natural logarithm (base e) of a number.
603      * @param x A numeric expression.
604      */
605    log(x: number): number;
606    /**
607      * Returns the larger of a set of supplied numeric expressions.
608      * @param values Numeric expressions to be evaluated.
609      */
610    max(...values: number[]): number;
611    /**
612      * Returns the smaller of a set of supplied numeric expressions.
613      * @param values Numeric expressions to be evaluated.
614      */
615    min(...values: number[]): number;
616    /**
617      * Returns the value of a base expression taken to a specified power.
618      * @param x The base value of the expression.
619      * @param y The exponent value of the expression.
620      */
621    pow(x: number, y: number): number;
622    /** Returns a pseudorandom number between 0 and 1. */
623    random(): number;
624    /**
625      * Returns a supplied numeric expression rounded to the nearest number.
626      * @param x The value to be rounded to the nearest number.
627      */
628    round(x: number): number;
629    /**
630      * Returns the sine of a number.
631      * @param x A numeric expression that contains an angle measured in radians.
632      */
633    sin(x: number): number;
634    /**
635      * Returns the square root of a number.
636      * @param x A numeric expression.
637      */
638    sqrt(x: number): number;
639    /**
640      * Returns the tangent of a number.
641      * @param x A numeric expression that contains an angle measured in radians.
642      */
643    tan(x: number): number;
644}
645/** An intrinsic object that provides basic mathematics functionality and constants. */
646declare var Math: Math;
647
648/** Enables basic storage and retrieval of dates and times. */
649interface Date {
650    /** Returns a string representation of a date. The format of the string depends on the locale. */
651    toString(): string;
652    /** Returns a date as a string value. */
653    toDateString(): string;
654    /** Returns a time as a string value. */
655    toTimeString(): string;
656    /** Returns a value as a string value appropriate to the host environment's current locale. */
657    toLocaleString(): string;
658    /** Returns a date as a string value appropriate to the host environment's current locale. */
659    toLocaleDateString(): string;
660    /** Returns a time as a string value appropriate to the host environment's current locale. */
661    toLocaleTimeString(): string;
662    /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */
663    valueOf(): number;
664    /** Gets the time value in milliseconds. */
665    getTime(): number;
666    /** Gets the year, using local time. */
667    getFullYear(): number;
668    /** Gets the year using Universal Coordinated Time (UTC). */
669    getUTCFullYear(): number;
670    /** Gets the month, using local time. */
671    getMonth(): number;
672    /** Gets the month of a Date object using Universal Coordinated Time (UTC). */
673    getUTCMonth(): number;
674    /** Gets the day-of-the-month, using local time. */
675    getDate(): number;
676    /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */
677    getUTCDate(): number;
678    /** Gets the day of the week, using local time. */
679    getDay(): number;
680    /** Gets the day of the week using Universal Coordinated Time (UTC). */
681    getUTCDay(): number;
682    /** Gets the hours in a date, using local time. */
683    getHours(): number;
684    /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */
685    getUTCHours(): number;
686    /** Gets the minutes of a Date object, using local time. */
687    getMinutes(): number;
688    /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */
689    getUTCMinutes(): number;
690    /** Gets the seconds of a Date object, using local time. */
691    getSeconds(): number;
692    /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */
693    getUTCSeconds(): number;
694    /** Gets the milliseconds of a Date, using local time. */
695    getMilliseconds(): number;
696    /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */
697    getUTCMilliseconds(): number;
698    /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */
699    getTimezoneOffset(): number;
700    /**
701      * Sets the date and time value in the Date object.
702      * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT.
703      */
704    setTime(time: number): number;
705    /**
706      * Sets the milliseconds value in the Date object using local time.
707      * @param ms A numeric value equal to the millisecond value.
708      */
709    setMilliseconds(ms: number): number;
710    /**
711      * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC).
712      * @param ms A numeric value equal to the millisecond value.
713      */
714    setUTCMilliseconds(ms: number): number;
715
716    /**
717      * Sets the seconds value in the Date object using local time.
718      * @param sec A numeric value equal to the seconds value.
719      * @param ms A numeric value equal to the milliseconds value.
720      */
721    setSeconds(sec: number, ms?: number): number;
722    /**
723      * Sets the seconds value in the Date object using Universal Coordinated Time (UTC).
724      * @param sec A numeric value equal to the seconds value.
725      * @param ms A numeric value equal to the milliseconds value.
726      */
727    setUTCSeconds(sec: number, ms?: number): number;
728    /**
729      * Sets the minutes value in the Date object using local time.
730      * @param min A numeric value equal to the minutes value.
731      * @param sec A numeric value equal to the seconds value.
732      * @param ms A numeric value equal to the milliseconds value.
733      */
734    setMinutes(min: number, sec?: number, ms?: number): number;
735    /**
736      * Sets the minutes value in the Date object using Universal Coordinated Time (UTC).
737      * @param min A numeric value equal to the minutes value.
738      * @param sec A numeric value equal to the seconds value.
739      * @param ms A numeric value equal to the milliseconds value.
740      */
741    setUTCMinutes(min: number, sec?: number, ms?: number): number;
742    /**
743      * Sets the hour value in the Date object using local time.
744      * @param hours A numeric value equal to the hours value.
745      * @param min A numeric value equal to the minutes value.
746      * @param sec A numeric value equal to the seconds value.
747      * @param ms A numeric value equal to the milliseconds value.
748      */
749    setHours(hours: number, min?: number, sec?: number, ms?: number): number;
750    /**
751      * Sets the hours value in the Date object using Universal Coordinated Time (UTC).
752      * @param hours A numeric value equal to the hours value.
753      * @param min A numeric value equal to the minutes value.
754      * @param sec A numeric value equal to the seconds value.
755      * @param ms A numeric value equal to the milliseconds value.
756      */
757    setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number;
758    /**
759      * Sets the numeric day-of-the-month value of the Date object using local time.
760      * @param date A numeric value equal to the day of the month.
761      */
762    setDate(date: number): number;
763    /**
764      * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC).
765      * @param date A numeric value equal to the day of the month.
766      */
767    setUTCDate(date: number): number;
768    /**
769      * Sets the month value in the Date object using local time.
770      * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively.
771      * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used.
772      */
773    setMonth(month: number, date?: number): number;
774    /**
775      * Sets the month value in the Date object using Universal Coordinated Time (UTC).
776      * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively.
777      * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used.
778      */
779    setUTCMonth(month: number, date?: number): number;
780    /**
781      * Sets the year of the Date object using local time.
782      * @param year A numeric value for the year.
783      * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified.
784      * @param date A numeric value equal for the day of the month.
785      */
786    setFullYear(year: number, month?: number, date?: number): number;
787    /**
788      * Sets the year value in the Date object using Universal Coordinated Time (UTC).
789      * @param year A numeric value equal to the year.
790      * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. Must be supplied if numDate is supplied.
791      * @param date A numeric value equal to the day of the month.
792      */
793    setUTCFullYear(year: number, month?: number, date?: number): number;
794    /** Returns a date converted to a string using Universal Coordinated Time (UTC). */
795    toUTCString(): string;
796    /** Returns a date as a string value in ISO format. */
797    toISOString(): string;
798    /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */
799    toJSON(key?: any): string;
800}
801
802interface DateConstructor {
803    new (): Date;
804    new (value: number): Date;
805    new (value: string): Date;
806    new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;
807    (): string;
808    prototype: Date;
809    /**
810      * Parses a string containing a date, and returns the number of milliseconds between that date and midnight, January 1, 1970.
811      * @param s A date string
812      */
813    parse(s: string): number;
814    /**
815      * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date.
816      * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year.
817      * @param month The month as an number between 0 and 11 (January to December).
818      * @param date The date as an number between 1 and 31.
819      * @param hours Must be supplied if minutes is supplied. An number from 0 to 23 (midnight to 11pm) that specifies the hour.
820      * @param minutes Must be supplied if seconds is supplied. An number from 0 to 59 that specifies the minutes.
821      * @param seconds Must be supplied if milliseconds is supplied. An number from 0 to 59 that specifies the seconds.
822      * @param ms An number from 0 to 999 that specifies the milliseconds.
823      */
824    UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number;
825    now(): number;
826}
827
828declare var Date: DateConstructor;
829
830interface RegExpMatchArray extends Array<string> {
831    index?: number;
832    input?: string;
833}
834
835interface RegExpExecArray extends Array<string> {
836    index: number;
837    input: string;
838}
839
840interface RegExp {
841    /**
842      * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search.
843      * @param string The String object or string literal on which to perform the search.
844      */
845    exec(string: string): RegExpExecArray;
846
847    /**
848      * Returns a Boolean value that indicates whether or not a pattern exists in a searched string.
849      * @param string String on which to perform the search.
850      */
851    test(string: string): boolean;
852
853    /** Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. */
854    source: string;
855
856    /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */
857    global: boolean;
858
859    /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */
860    ignoreCase: boolean;
861
862    /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */
863    multiline: boolean;
864
865    lastIndex: number;
866
867    // Non-standard extensions
868    compile(): RegExp;
869}
870
871interface RegExpConstructor {
872    new (pattern: string, flags?: string): RegExp;
873    (pattern: string, flags?: string): RegExp;
874    prototype: RegExp;
875
876    // Non-standard extensions
877    $1: string;
878    $2: string;
879    $3: string;
880    $4: string;
881    $5: string;
882    $6: string;
883    $7: string;
884    $8: string;
885    $9: string;
886    lastMatch: string;
887}
888
889declare var RegExp: RegExpConstructor;
890
891interface Error {
892    name: string;
893    message: string;
894}
895
896interface ErrorConstructor {
897    new (message?: string): Error;
898    (message?: string): Error;
899    prototype: Error;
900}
901
902declare var Error: ErrorConstructor;
903
904interface EvalError extends Error {
905}
906
907interface EvalErrorConstructor {
908    new (message?: string): EvalError;
909    (message?: string): EvalError;
910    prototype: EvalError;
911}
912
913declare var EvalError: EvalErrorConstructor;
914
915interface RangeError extends Error {
916}
917
918interface RangeErrorConstructor {
919    new (message?: string): RangeError;
920    (message?: string): RangeError;
921    prototype: RangeError;
922}
923
924declare var RangeError: RangeErrorConstructor;
925
926interface ReferenceError extends Error {
927}
928
929interface ReferenceErrorConstructor {
930    new (message?: string): ReferenceError;
931    (message?: string): ReferenceError;
932    prototype: ReferenceError;
933}
934
935declare var ReferenceError: ReferenceErrorConstructor;
936
937interface SyntaxError extends Error {
938}
939
940interface SyntaxErrorConstructor {
941    new (message?: string): SyntaxError;
942    (message?: string): SyntaxError;
943    prototype: SyntaxError;
944}
945
946declare var SyntaxError: SyntaxErrorConstructor;
947
948interface TypeError extends Error {
949}
950
951interface TypeErrorConstructor {
952    new (message?: string): TypeError;
953    (message?: string): TypeError;
954    prototype: TypeError;
955}
956
957declare var TypeError: TypeErrorConstructor;
958
959interface URIError extends Error {
960}
961
962interface URIErrorConstructor {
963    new (message?: string): URIError;
964    (message?: string): URIError;
965    prototype: URIError;
966}
967
968declare var URIError: URIErrorConstructor;
969
970interface JSON {
971    /**
972      * Converts a JavaScript Object Notation (JSON) string into an object.
973      * @param text A valid JSON string.
974      * @param reviver A function that transforms the results. This function is called for each member of the object.
975      * If a member contains nested objects, the nested objects are transformed before the parent object is.
976      */
977    parse(text: string, reviver?: (key: any, value: any) => any): any;
978    /**
979      * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
980      * @param value A JavaScript value, usually an object or array, to be converted.
981      */
982    stringify(value: any): string;
983    /**
984      * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
985      * @param value A JavaScript value, usually an object or array, to be converted.
986      * @param replacer A function that transforms the results.
987      */
988    stringify(value: any, replacer: (key: string, value: any) => any): string;
989    /**
990      * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
991      * @param value A JavaScript value, usually an object or array, to be converted.
992      * @param replacer Array that transforms the results.
993      */
994    stringify(value: any, replacer: any[]): string;
995    /**
996      * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
997      * @param value A JavaScript value, usually an object or array, to be converted.
998      * @param replacer A function that transforms the results.
999      * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
1000      */
1001    stringify(value: any, replacer: (key: string, value: any) => any, space: string | number): string;
1002    /**
1003      * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
1004      * @param value A JavaScript value, usually an object or array, to be converted.
1005      * @param replacer Array that transforms the results.
1006      * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
1007      */
1008    stringify(value: any, replacer: any[], space: string | number): string;
1009}
1010/**
1011  * An intrinsic object that provides functions to convert JavaScript values to and from the JavaScript Object Notation (JSON) format.
1012  */
1013declare var JSON: JSON;
1014
1015
1016/////////////////////////////
1017/// ECMAScript Array API (specially handled by compiler)
1018/////////////////////////////
1019
1020interface Array<T> {
1021    /**
1022      * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array.
1023      */
1024    length: number;
1025    /**
1026      * Returns a string representation of an array.
1027      */
1028    toString(): string;
1029    toLocaleString(): string;
1030    /**
1031      * Appends new elements to an array, and returns the new length of the array.
1032      * @param items New elements of the Array.
1033      */
1034    push(...items: T[]): number;
1035    /**
1036      * Removes the last element from an array and returns it.
1037      */
1038    pop(): T;
1039    /**
1040      * Combines two or more arrays.
1041      * @param items Additional items to add to the end of array1.
1042      */
1043    concat<U extends T[]>(...items: U[]): T[];
1044    /**
1045      * Combines two or more arrays.
1046      * @param items Additional items to add to the end of array1.
1047      */
1048    concat(...items: T[]): T[];
1049    /**
1050      * Adds all the elements of an array separated by the specified separator string.
1051      * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma.
1052      */
1053    join(separator?: string): string;
1054    /**
1055      * Reverses the elements in an Array.
1056      */
1057    reverse(): T[];
1058    /**
1059      * Removes the first element from an array and returns it.
1060      */
1061    shift(): T;
1062    /**
1063      * Returns a section of an array.
1064      * @param start The beginning of the specified portion of the array.
1065      * @param end The end of the specified portion of the array.
1066      */
1067    slice(start?: number, end?: number): T[];
1068
1069    /**
1070      * Sorts an array.
1071      * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.
1072      */
1073    sort(compareFn?: (a: T, b: T) => number): T[];
1074
1075    /**
1076      * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.
1077      * @param start The zero-based location in the array from which to start removing elements.
1078      */
1079    splice(start: number): T[];
1080
1081    /**
1082      * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.
1083      * @param start The zero-based location in the array from which to start removing elements.
1084      * @param deleteCount The number of elements to remove.
1085      * @param items Elements to insert into the array in place of the deleted elements.
1086      */
1087    splice(start: number, deleteCount: number, ...items: T[]): T[];
1088
1089    /**
1090      * Inserts new elements at the start of an array.
1091      * @param items  Elements to insert at the start of the Array.
1092      */
1093    unshift(...items: T[]): number;
1094
1095    /**
1096      * Returns the index of the first occurrence of a value in an array.
1097      * @param searchElement The value to locate in the array.
1098      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
1099      */
1100    indexOf(searchElement: T, fromIndex?: number): number;
1101
1102    /**
1103      * Returns the index of the last occurrence of a specified value in an array.
1104      * @param searchElement The value to locate in the array.
1105      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array.
1106      */
1107    lastIndexOf(searchElement: T, fromIndex?: number): number;
1108
1109    /**
1110      * Determines whether all the members of an array satisfy the specified test.
1111      * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array.
1112      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
1113      */
1114    every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
1115
1116    /**
1117      * Determines whether the specified callback function returns true for any element of an array.
1118      * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array.
1119      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
1120      */
1121    some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
1122
1123    /**
1124      * Performs the specified action for each element in an array.
1125      * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.
1126      * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
1127      */
1128    forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
1129
1130    /**
1131      * Calls a defined callback function on each element of an array, and returns an array that contains the results.
1132      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
1133      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
1134      */
1135    map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
1136
1137    /**
1138      * Returns the elements of an array that meet the condition specified in a callback function.
1139      * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array.
1140      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
1141      */
1142    filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[];
1143
1144    /**
1145      * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.
1146      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.
1147      * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.
1148      */
1149    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T;
1150    /**
1151      * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.
1152      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.
1153      * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.
1154      */
1155    reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;
1156
1157    /**
1158      * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.
1159      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.
1160      * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.
1161      */
1162    reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T;
1163    /**
1164      * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.
1165      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.
1166      * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.
1167      */
1168    reduceRight<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;
1169
1170    [n: number]: T;
1171}
1172
1173interface ArrayConstructor {
1174    new (arrayLength?: number): any[];
1175    new <T>(arrayLength: number): T[];
1176    new <T>(...items: T[]): T[];
1177    (arrayLength?: number): any[];
1178    <T>(arrayLength: number): T[];
1179    <T>(...items: T[]): T[];
1180    isArray(arg: any): arg is Array<any>;
1181    prototype: Array<any>;
1182}
1183
1184declare var Array: ArrayConstructor;
1185
1186interface TypedPropertyDescriptor<T> {
1187    enumerable?: boolean;
1188    configurable?: boolean;
1189    writable?: boolean;
1190    value?: T;
1191    get?: () => T;
1192    set?: (value: T) => void;
1193}
1194
1195declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;
1196declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;
1197declare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
1198declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
1199
1200declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void) => PromiseLike<T>;
1201
1202interface PromiseLike<T> {
1203    /**
1204    * Attaches callbacks for the resolution and/or rejection of the Promise.
1205    * @param onfulfilled The callback to execute when the Promise is resolved.
1206    * @param onrejected The callback to execute when the Promise is rejected.
1207    * @returns A Promise for the completion of which ever callback is executed.
1208    */
1209    then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
1210    then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>;
1211}
1212
1213interface ArrayLike<T> {
1214    length: number;
1215    [n: number]: T;
1216}
1217
1218
1219/**
1220  * Represents a raw buffer of binary data, which is used to store data for the
1221  * different typed arrays. ArrayBuffers cannot be read from or written to directly,
1222  * but can be passed to a typed array or DataView Object to interpret the raw
1223  * buffer as needed.
1224  */
1225interface ArrayBuffer {
1226    /**
1227      * Read-only. The length of the ArrayBuffer (in bytes).
1228      */
1229    byteLength: number;
1230
1231    /**
1232      * Returns a section of an ArrayBuffer.
1233      */
1234    slice(begin:number, end?:number): ArrayBuffer;
1235}
1236
1237interface ArrayBufferConstructor {
1238    prototype: ArrayBuffer;
1239    new (byteLength: number): ArrayBuffer;
1240    isView(arg: any): arg is ArrayBufferView;
1241}
1242declare var ArrayBuffer: ArrayBufferConstructor;
1243
1244interface ArrayBufferView {
1245    /**
1246      * The ArrayBuffer instance referenced by the array.
1247      */
1248    buffer: ArrayBuffer;
1249
1250    /**
1251      * The length in bytes of the array.
1252      */
1253    byteLength: number;
1254
1255    /**
1256      * The offset in bytes of the array.
1257      */
1258    byteOffset: number;
1259}
1260
1261interface DataView {
1262    buffer: ArrayBuffer;
1263    byteLength: number;
1264    byteOffset: number;
1265    /**
1266      * Gets the Float32 value at the specified byte offset from the start of the view. There is
1267      * no alignment constraint; multi-byte values may be fetched from any offset.
1268      * @param byteOffset The place in the buffer at which the value should be retrieved.
1269      */
1270    getFloat32(byteOffset: number, littleEndian?: boolean): number;
1271
1272    /**
1273      * Gets the Float64 value at the specified byte offset from the start of the view. There is
1274      * no alignment constraint; multi-byte values may be fetched from any offset.
1275      * @param byteOffset The place in the buffer at which the value should be retrieved.
1276      */
1277    getFloat64(byteOffset: number, littleEndian?: boolean): number;
1278
1279    /**
1280      * Gets the Int8 value at the specified byte offset from the start of the view. There is
1281      * no alignment constraint; multi-byte values may be fetched from any offset.
1282      * @param byteOffset The place in the buffer at which the value should be retrieved.
1283      */
1284    getInt8(byteOffset: number): number;
1285
1286    /**
1287      * Gets the Int16 value at the specified byte offset from the start of the view. There is
1288      * no alignment constraint; multi-byte values may be fetched from any offset.
1289      * @param byteOffset The place in the buffer at which the value should be retrieved.
1290      */
1291    getInt16(byteOffset: number, littleEndian?: boolean): number;
1292    /**
1293      * Gets the Int32 value at the specified byte offset from the start of the view. There is
1294      * no alignment constraint; multi-byte values may be fetched from any offset.
1295      * @param byteOffset The place in the buffer at which the value should be retrieved.
1296      */
1297    getInt32(byteOffset: number, littleEndian?: boolean): number;
1298
1299    /**
1300      * Gets the Uint8 value at the specified byte offset from the start of the view. There is
1301      * no alignment constraint; multi-byte values may be fetched from any offset.
1302      * @param byteOffset The place in the buffer at which the value should be retrieved.
1303      */
1304    getUint8(byteOffset: number): number;
1305
1306    /**
1307      * Gets the Uint16 value at the specified byte offset from the start of the view. There is
1308      * no alignment constraint; multi-byte values may be fetched from any offset.
1309      * @param byteOffset The place in the buffer at which the value should be retrieved.
1310      */
1311    getUint16(byteOffset: number, littleEndian?: boolean): number;
1312
1313    /**
1314      * Gets the Uint32 value at the specified byte offset from the start of the view. There is
1315      * no alignment constraint; multi-byte values may be fetched from any offset.
1316      * @param byteOffset The place in the buffer at which the value should be retrieved.
1317      */
1318    getUint32(byteOffset: number, littleEndian?: boolean): number;
1319
1320    /**
1321      * Stores an Float32 value at the specified byte offset from the start of the view.
1322      * @param byteOffset The place in the buffer at which the value should be set.
1323      * @param value The value to set.
1324      * @param littleEndian If false or undefined, a big-endian value should be written,
1325      * otherwise a little-endian value should be written.
1326      */
1327    setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void;
1328
1329    /**
1330      * Stores an Float64 value at the specified byte offset from the start of the view.
1331      * @param byteOffset The place in the buffer at which the value should be set.
1332      * @param value The value to set.
1333      * @param littleEndian If false or undefined, a big-endian value should be written,
1334      * otherwise a little-endian value should be written.
1335      */
1336    setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void;
1337
1338    /**
1339      * Stores an Int8 value at the specified byte offset from the start of the view.
1340      * @param byteOffset The place in the buffer at which the value should be set.
1341      * @param value The value to set.
1342      */
1343    setInt8(byteOffset: number, value: number): void;
1344
1345    /**
1346      * Stores an Int16 value at the specified byte offset from the start of the view.
1347      * @param byteOffset The place in the buffer at which the value should be set.
1348      * @param value The value to set.
1349      * @param littleEndian If false or undefined, a big-endian value should be written,
1350      * otherwise a little-endian value should be written.
1351      */
1352    setInt16(byteOffset: number, value: number, littleEndian?: boolean): void;
1353
1354    /**
1355      * Stores an Int32 value at the specified byte offset from the start of the view.
1356      * @param byteOffset The place in the buffer at which the value should be set.
1357      * @param value The value to set.
1358      * @param littleEndian If false or undefined, a big-endian value should be written,
1359      * otherwise a little-endian value should be written.
1360      */
1361    setInt32(byteOffset: number, value: number, littleEndian?: boolean): void;
1362
1363    /**
1364      * Stores an Uint8 value at the specified byte offset from the start of the view.
1365      * @param byteOffset The place in the buffer at which the value should be set.
1366      * @param value The value to set.
1367      */
1368    setUint8(byteOffset: number, value: number): void;
1369
1370    /**
1371      * Stores an Uint16 value at the specified byte offset from the start of the view.
1372      * @param byteOffset The place in the buffer at which the value should be set.
1373      * @param value The value to set.
1374      * @param littleEndian If false or undefined, a big-endian value should be written,
1375      * otherwise a little-endian value should be written.
1376      */
1377    setUint16(byteOffset: number, value: number, littleEndian?: boolean): void;
1378
1379    /**
1380      * Stores an Uint32 value at the specified byte offset from the start of the view.
1381      * @param byteOffset The place in the buffer at which the value should be set.
1382      * @param value The value to set.
1383      * @param littleEndian If false or undefined, a big-endian value should be written,
1384      * otherwise a little-endian value should be written.
1385      */
1386    setUint32(byteOffset: number, value: number, littleEndian?: boolean): void;
1387}
1388
1389interface DataViewConstructor {
1390    new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView;
1391}
1392declare var DataView: DataViewConstructor;
1393
1394/**
1395  * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested
1396  * number of bytes could not be allocated an exception is raised.
1397  */
1398interface Int8Array {
1399    /**
1400      * The size in bytes of each element in the array.
1401      */
1402    BYTES_PER_ELEMENT: number;
1403
1404    /**
1405      * The ArrayBuffer instance referenced by the array.
1406      */
1407    buffer: ArrayBuffer;
1408
1409    /**
1410      * The length in bytes of the array.
1411      */
1412    byteLength: number;
1413
1414    /**
1415      * The offset in bytes of the array.
1416      */
1417    byteOffset: number;
1418
1419    /**
1420      * Returns the this object after copying a section of the array identified by start and end
1421      * to the same array starting at position target
1422      * @param target If target is negative, it is treated as length+target where length is the
1423      * length of the array.
1424      * @param start If start is negative, it is treated as length+start. If end is negative, it
1425      * is treated as length+end.
1426      * @param end If not specified, length of the this object is used as its default value.
1427      */
1428    copyWithin(target: number, start: number, end?: number): Int8Array;
1429
1430    /**
1431      * Determines whether all the members of an array satisfy the specified test.
1432      * @param callbackfn A function that accepts up to three arguments. The every method calls
1433      * the callbackfn function for each element in array1 until the callbackfn returns false,
1434      * or until the end of the array.
1435      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1436      * If thisArg is omitted, undefined is used as the this value.
1437      */
1438    every(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean;
1439
1440    /**
1441        * Returns the this object after filling the section identified by start and end with value
1442        * @param value value to fill array section with
1443        * @param start index to start filling the array at. If start is negative, it is treated as
1444        * length+start where length is the length of the array.
1445        * @param end index to stop filling the array at. If end is negative, it is treated as
1446        * length+end.
1447        */
1448    fill(value: number, start?: number, end?: number): Int8Array;
1449
1450    /**
1451      * Returns the elements of an array that meet the condition specified in a callback function.
1452      * @param callbackfn A function that accepts up to three arguments. The filter method calls
1453      * the callbackfn function one time for each element in the array.
1454      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1455      * If thisArg is omitted, undefined is used as the this value.
1456      */
1457    filter(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): Int8Array;
1458
1459    /**
1460      * Returns the value of the first element in the array where predicate is true, and undefined
1461      * otherwise.
1462      * @param predicate find calls predicate once for each element of the array, in ascending
1463      * order, until it finds one where predicate returns true. If such an element is found, find
1464      * immediately returns that element value. Otherwise, find returns undefined.
1465      * @param thisArg If provided, it will be used as the this value for each invocation of
1466      * predicate. If it is not provided, undefined is used instead.
1467      */
1468    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
1469
1470    /**
1471      * Returns the index of the first element in the array where predicate is true, and undefined
1472      * otherwise.
1473      * @param predicate find calls predicate once for each element of the array, in ascending
1474      * order, until it finds one where predicate returns true. If such an element is found, find
1475      * immediately returns that element value. Otherwise, find returns undefined.
1476      * @param thisArg If provided, it will be used as the this value for each invocation of
1477      * predicate. If it is not provided, undefined is used instead.
1478      */
1479    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
1480
1481    /**
1482      * Performs the specified action for each element in an array.
1483      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
1484      * callbackfn function one time for each element in the array.
1485      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
1486      * If thisArg is omitted, undefined is used as the this value.
1487      */
1488    forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void;
1489
1490    /**
1491      * Returns the index of the first occurrence of a value in an array.
1492      * @param searchElement The value to locate in the array.
1493      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
1494      *  search starts at index 0.
1495      */
1496    indexOf(searchElement: number, fromIndex?: number): number;
1497
1498    /**
1499      * Adds all the elements of an array separated by the specified separator string.
1500      * @param separator A string used to separate one element of an array from the next in the
1501      * resulting String. If omitted, the array elements are separated with a comma.
1502      */
1503    join(separator?: string): string;
1504
1505    /**
1506      * Returns the index of the last occurrence of a value in an array.
1507      * @param searchElement The value to locate in the array.
1508      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
1509      * search starts at index 0.
1510      */
1511    lastIndexOf(searchElement: number, fromIndex?: number): number;
1512
1513    /**
1514      * The length of the array.
1515      */
1516    length: number;
1517
1518    /**
1519      * Calls a defined callback function on each element of an array, and returns an array that
1520      * contains the results.
1521      * @param callbackfn A function that accepts up to three arguments. The map method calls the
1522      * callbackfn function one time for each element in the array.
1523      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1524      * If thisArg is omitted, undefined is used as the this value.
1525      */
1526    map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array;
1527
1528    /**
1529      * Calls the specified callback function for all the elements in an array. The return value of
1530      * the callback function is the accumulated result, and is provided as an argument in the next
1531      * call to the callback function.
1532      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
1533      * callbackfn function one time for each element in the array.
1534      * @param initialValue If initialValue is specified, it is used as the initial value to start
1535      * the accumulation. The first call to the callbackfn function provides this value as an argument
1536      * instead of an array value.
1537      */
1538    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number;
1539
1540    /**
1541      * Calls the specified callback function for all the elements in an array. The return value of
1542      * the callback function is the accumulated result, and is provided as an argument in the next
1543      * call to the callback function.
1544      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
1545      * callbackfn function one time for each element in the array.
1546      * @param initialValue If initialValue is specified, it is used as the initial value to start
1547      * the accumulation. The first call to the callbackfn function provides this value as an argument
1548      * instead of an array value.
1549      */
1550    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U;
1551
1552    /**
1553      * Calls the specified callback function for all the elements in an array, in descending order.
1554      * The return value of the callback function is the accumulated result, and is provided as an
1555      * argument in the next call to the callback function.
1556      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
1557      * the callbackfn function one time for each element in the array.
1558      * @param initialValue If initialValue is specified, it is used as the initial value to start
1559      * the accumulation. The first call to the callbackfn function provides this value as an
1560      * argument instead of an array value.
1561      */
1562    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number;
1563
1564    /**
1565      * Calls the specified callback function for all the elements in an array, in descending order.
1566      * The return value of the callback function is the accumulated result, and is provided as an
1567      * argument in the next call to the callback function.
1568      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
1569      * the callbackfn function one time for each element in the array.
1570      * @param initialValue If initialValue is specified, it is used as the initial value to start
1571      * the accumulation. The first call to the callbackfn function provides this value as an argument
1572      * instead of an array value.
1573      */
1574    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U;
1575
1576    /**
1577      * Reverses the elements in an Array.
1578      */
1579    reverse(): Int8Array;
1580
1581    /**
1582      * Sets a value or an array of values.
1583      * @param index The index of the location to set.
1584      * @param value The value to set.
1585      */
1586    set(index: number, value: number): void;
1587
1588    /**
1589      * Sets a value or an array of values.
1590      * @param array A typed or untyped array of values to set.
1591      * @param offset The index in the current array at which the values are to be written.
1592      */
1593    set(array: ArrayLike<number>, offset?: number): void;
1594
1595    /**
1596      * Returns a section of an array.
1597      * @param start The beginning of the specified portion of the array.
1598      * @param end The end of the specified portion of the array.
1599      */
1600    slice(start?: number, end?: number): Int8Array;
1601
1602    /**
1603      * Determines whether the specified callback function returns true for any element of an array.
1604      * @param callbackfn A function that accepts up to three arguments. The some method calls the
1605      * callbackfn function for each element in array1 until the callbackfn returns true, or until
1606      * the end of the array.
1607      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1608      * If thisArg is omitted, undefined is used as the this value.
1609      */
1610    some(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean;
1611
1612    /**
1613      * Sorts an array.
1614      * @param compareFn The name of the function used to determine the order of the elements. If
1615      * omitted, the elements are sorted in ascending, ASCII character order.
1616      */
1617    sort(compareFn?: (a: number, b: number) => number): Int8Array;
1618
1619    /**
1620      * Gets a new Int8Array view of the ArrayBuffer store for this array, referencing the elements
1621      * at begin, inclusive, up to end, exclusive.
1622      * @param begin The index of the beginning of the array.
1623      * @param end The index of the end of the array.
1624      */
1625    subarray(begin?: number, end?: number): Int8Array;
1626
1627    /**
1628      * Converts a number to a string by using the current locale.
1629      */
1630    toLocaleString(): string;
1631
1632    /**
1633      * Returns a string representation of an array.
1634      */
1635    toString(): string;
1636
1637    [index: number]: number;
1638}
1639interface Int8ArrayConstructor {
1640    prototype: Int8Array;
1641    new (length: number): Int8Array;
1642    new (array: ArrayLike<number>): Int8Array;
1643    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int8Array;
1644
1645    /**
1646      * The size in bytes of each element in the array.
1647      */
1648    BYTES_PER_ELEMENT: number;
1649
1650    /**
1651      * Returns a new array from a set of elements.
1652      * @param items A set of elements to include in the new array object.
1653      */
1654    of(...items: number[]): Int8Array;
1655
1656    /**
1657      * Creates an array from an array-like or iterable object.
1658      * @param arrayLike An array-like or iterable object to convert to an array.
1659      * @param mapfn A mapping function to call on every element of the array.
1660      * @param thisArg Value of 'this' used to invoke the mapfn.
1661      */
1662    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;
1663
1664}
1665declare var Int8Array: Int8ArrayConstructor;
1666
1667/**
1668  * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the
1669  * requested number of bytes could not be allocated an exception is raised.
1670  */
1671interface Uint8Array {
1672    /**
1673      * The size in bytes of each element in the array.
1674      */
1675    BYTES_PER_ELEMENT: number;
1676
1677    /**
1678      * The ArrayBuffer instance referenced by the array.
1679      */
1680    buffer: ArrayBuffer;
1681
1682    /**
1683      * The length in bytes of the array.
1684      */
1685    byteLength: number;
1686
1687    /**
1688      * The offset in bytes of the array.
1689      */
1690    byteOffset: number;
1691
1692    /**
1693      * Returns the this object after copying a section of the array identified by start and end
1694      * to the same array starting at position target
1695      * @param target If target is negative, it is treated as length+target where length is the
1696      * length of the array.
1697      * @param start If start is negative, it is treated as length+start. If end is negative, it
1698      * is treated as length+end.
1699      * @param end If not specified, length of the this object is used as its default value.
1700      */
1701    copyWithin(target: number, start: number, end?: number): Uint8Array;
1702
1703    /**
1704      * Determines whether all the members of an array satisfy the specified test.
1705      * @param callbackfn A function that accepts up to three arguments. The every method calls
1706      * the callbackfn function for each element in array1 until the callbackfn returns false,
1707      * or until the end of the array.
1708      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1709      * If thisArg is omitted, undefined is used as the this value.
1710      */
1711    every(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean;
1712
1713    /**
1714        * Returns the this object after filling the section identified by start and end with value
1715        * @param value value to fill array section with
1716        * @param start index to start filling the array at. If start is negative, it is treated as
1717        * length+start where length is the length of the array.
1718        * @param end index to stop filling the array at. If end is negative, it is treated as
1719        * length+end.
1720        */
1721    fill(value: number, start?: number, end?: number): Uint8Array;
1722
1723    /**
1724      * Returns the elements of an array that meet the condition specified in a callback function.
1725      * @param callbackfn A function that accepts up to three arguments. The filter method calls
1726      * the callbackfn function one time for each element in the array.
1727      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1728      * If thisArg is omitted, undefined is used as the this value.
1729      */
1730    filter(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): Uint8Array;
1731
1732    /**
1733      * Returns the value of the first element in the array where predicate is true, and undefined
1734      * otherwise.
1735      * @param predicate find calls predicate once for each element of the array, in ascending
1736      * order, until it finds one where predicate returns true. If such an element is found, find
1737      * immediately returns that element value. Otherwise, find returns undefined.
1738      * @param thisArg If provided, it will be used as the this value for each invocation of
1739      * predicate. If it is not provided, undefined is used instead.
1740      */
1741    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
1742
1743    /**
1744      * Returns the index of the first element in the array where predicate is true, and undefined
1745      * otherwise.
1746      * @param predicate find calls predicate once for each element of the array, in ascending
1747      * order, until it finds one where predicate returns true. If such an element is found, find
1748      * immediately returns that element value. Otherwise, find returns undefined.
1749      * @param thisArg If provided, it will be used as the this value for each invocation of
1750      * predicate. If it is not provided, undefined is used instead.
1751      */
1752    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
1753
1754    /**
1755      * Performs the specified action for each element in an array.
1756      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
1757      * callbackfn function one time for each element in the array.
1758      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
1759      * If thisArg is omitted, undefined is used as the this value.
1760      */
1761    forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void;
1762
1763    /**
1764      * Returns the index of the first occurrence of a value in an array.
1765      * @param searchElement The value to locate in the array.
1766      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
1767      *  search starts at index 0.
1768      */
1769    indexOf(searchElement: number, fromIndex?: number): number;
1770
1771    /**
1772      * Adds all the elements of an array separated by the specified separator string.
1773      * @param separator A string used to separate one element of an array from the next in the
1774      * resulting String. If omitted, the array elements are separated with a comma.
1775      */
1776    join(separator?: string): string;
1777
1778    /**
1779      * Returns the index of the last occurrence of a value in an array.
1780      * @param searchElement The value to locate in the array.
1781      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
1782      * search starts at index 0.
1783      */
1784    lastIndexOf(searchElement: number, fromIndex?: number): number;
1785
1786    /**
1787      * The length of the array.
1788      */
1789    length: number;
1790
1791    /**
1792      * Calls a defined callback function on each element of an array, and returns an array that
1793      * contains the results.
1794      * @param callbackfn A function that accepts up to three arguments. The map method calls the
1795      * callbackfn function one time for each element in the array.
1796      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1797      * If thisArg is omitted, undefined is used as the this value.
1798      */
1799    map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array;
1800
1801    /**
1802      * Calls the specified callback function for all the elements in an array. The return value of
1803      * the callback function is the accumulated result, and is provided as an argument in the next
1804      * call to the callback function.
1805      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
1806      * callbackfn function one time for each element in the array.
1807      * @param initialValue If initialValue is specified, it is used as the initial value to start
1808      * the accumulation. The first call to the callbackfn function provides this value as an argument
1809      * instead of an array value.
1810      */
1811    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number;
1812
1813    /**
1814      * Calls the specified callback function for all the elements in an array. The return value of
1815      * the callback function is the accumulated result, and is provided as an argument in the next
1816      * call to the callback function.
1817      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
1818      * callbackfn function one time for each element in the array.
1819      * @param initialValue If initialValue is specified, it is used as the initial value to start
1820      * the accumulation. The first call to the callbackfn function provides this value as an argument
1821      * instead of an array value.
1822      */
1823    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U;
1824
1825    /**
1826      * Calls the specified callback function for all the elements in an array, in descending order.
1827      * The return value of the callback function is the accumulated result, and is provided as an
1828      * argument in the next call to the callback function.
1829      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
1830      * the callbackfn function one time for each element in the array.
1831      * @param initialValue If initialValue is specified, it is used as the initial value to start
1832      * the accumulation. The first call to the callbackfn function provides this value as an
1833      * argument instead of an array value.
1834      */
1835    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number;
1836
1837    /**
1838      * Calls the specified callback function for all the elements in an array, in descending order.
1839      * The return value of the callback function is the accumulated result, and is provided as an
1840      * argument in the next call to the callback function.
1841      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
1842      * the callbackfn function one time for each element in the array.
1843      * @param initialValue If initialValue is specified, it is used as the initial value to start
1844      * the accumulation. The first call to the callbackfn function provides this value as an argument
1845      * instead of an array value.
1846      */
1847    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U;
1848
1849    /**
1850      * Reverses the elements in an Array.
1851      */
1852    reverse(): Uint8Array;
1853
1854    /**
1855      * Sets a value or an array of values.
1856      * @param index The index of the location to set.
1857      * @param value The value to set.
1858      */
1859    set(index: number, value: number): void;
1860
1861    /**
1862      * Sets a value or an array of values.
1863      * @param array A typed or untyped array of values to set.
1864      * @param offset The index in the current array at which the values are to be written.
1865      */
1866    set(array: ArrayLike<number>, offset?: number): void;
1867
1868    /**
1869      * Returns a section of an array.
1870      * @param start The beginning of the specified portion of the array.
1871      * @param end The end of the specified portion of the array.
1872      */
1873    slice(start?: number, end?: number): Uint8Array;
1874
1875    /**
1876      * Determines whether the specified callback function returns true for any element of an array.
1877      * @param callbackfn A function that accepts up to three arguments. The some method calls the
1878      * callbackfn function for each element in array1 until the callbackfn returns true, or until
1879      * the end of the array.
1880      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1881      * If thisArg is omitted, undefined is used as the this value.
1882      */
1883    some(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean;
1884
1885    /**
1886      * Sorts an array.
1887      * @param compareFn The name of the function used to determine the order of the elements. If
1888      * omitted, the elements are sorted in ascending, ASCII character order.
1889      */
1890    sort(compareFn?: (a: number, b: number) => number): Uint8Array;
1891
1892    /**
1893      * Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements
1894      * at begin, inclusive, up to end, exclusive.
1895      * @param begin The index of the beginning of the array.
1896      * @param end The index of the end of the array.
1897      */
1898    subarray(begin?: number, end?: number): Uint8Array;
1899
1900    /**
1901      * Converts a number to a string by using the current locale.
1902      */
1903    toLocaleString(): string;
1904
1905    /**
1906      * Returns a string representation of an array.
1907      */
1908    toString(): string;
1909
1910    [index: number]: number;
1911}
1912
1913interface Uint8ArrayConstructor {
1914    prototype: Uint8Array;
1915    new (length: number): Uint8Array;
1916    new (array: ArrayLike<number>): Uint8Array;
1917    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8Array;
1918
1919    /**
1920      * The size in bytes of each element in the array.
1921      */
1922    BYTES_PER_ELEMENT: number;
1923
1924    /**
1925      * Returns a new array from a set of elements.
1926      * @param items A set of elements to include in the new array object.
1927      */
1928    of(...items: number[]): Uint8Array;
1929
1930    /**
1931      * Creates an array from an array-like or iterable object.
1932      * @param arrayLike An array-like or iterable object to convert to an array.
1933      * @param mapfn A mapping function to call on every element of the array.
1934      * @param thisArg Value of 'this' used to invoke the mapfn.
1935      */
1936    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
1937
1938}
1939declare var Uint8Array: Uint8ArrayConstructor;
1940
1941/**
1942  * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0.
1943  * If the requested number of bytes could not be allocated an exception is raised.
1944  */
1945interface Uint8ClampedArray {
1946    /**
1947      * The size in bytes of each element in the array.
1948      */
1949    BYTES_PER_ELEMENT: number;
1950
1951    /**
1952      * The ArrayBuffer instance referenced by the array.
1953      */
1954    buffer: ArrayBuffer;
1955
1956    /**
1957      * The length in bytes of the array.
1958      */
1959    byteLength: number;
1960
1961    /**
1962      * The offset in bytes of the array.
1963      */
1964    byteOffset: number;
1965
1966    /**
1967      * Returns the this object after copying a section of the array identified by start and end
1968      * to the same array starting at position target
1969      * @param target If target is negative, it is treated as length+target where length is the
1970      * length of the array.
1971      * @param start If start is negative, it is treated as length+start. If end is negative, it
1972      * is treated as length+end.
1973      * @param end If not specified, length of the this object is used as its default value.
1974      */
1975    copyWithin(target: number, start: number, end?: number): Uint8ClampedArray;
1976
1977    /**
1978      * Determines whether all the members of an array satisfy the specified test.
1979      * @param callbackfn A function that accepts up to three arguments. The every method calls
1980      * the callbackfn function for each element in array1 until the callbackfn returns false,
1981      * or until the end of the array.
1982      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
1983      * If thisArg is omitted, undefined is used as the this value.
1984      */
1985    every(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean;
1986
1987    /**
1988        * Returns the this object after filling the section identified by start and end with value
1989        * @param value value to fill array section with
1990        * @param start index to start filling the array at. If start is negative, it is treated as
1991        * length+start where length is the length of the array.
1992        * @param end index to stop filling the array at. If end is negative, it is treated as
1993        * length+end.
1994        */
1995    fill(value: number, start?: number, end?: number): Uint8ClampedArray;
1996
1997    /**
1998      * Returns the elements of an array that meet the condition specified in a callback function.
1999      * @param callbackfn A function that accepts up to three arguments. The filter method calls
2000      * the callbackfn function one time for each element in the array.
2001      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2002      * If thisArg is omitted, undefined is used as the this value.
2003      */
2004    filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): Uint8ClampedArray;
2005
2006    /**
2007      * Returns the value of the first element in the array where predicate is true, and undefined
2008      * otherwise.
2009      * @param predicate find calls predicate once for each element of the array, in ascending
2010      * order, until it finds one where predicate returns true. If such an element is found, find
2011      * immediately returns that element value. Otherwise, find returns undefined.
2012      * @param thisArg If provided, it will be used as the this value for each invocation of
2013      * predicate. If it is not provided, undefined is used instead.
2014      */
2015    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
2016
2017    /**
2018      * Returns the index of the first element in the array where predicate is true, and undefined
2019      * otherwise.
2020      * @param predicate find calls predicate once for each element of the array, in ascending
2021      * order, until it finds one where predicate returns true. If such an element is found, find
2022      * immediately returns that element value. Otherwise, find returns undefined.
2023      * @param thisArg If provided, it will be used as the this value for each invocation of
2024      * predicate. If it is not provided, undefined is used instead.
2025      */
2026    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
2027
2028    /**
2029      * Performs the specified action for each element in an array.
2030      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
2031      * callbackfn function one time for each element in the array.
2032      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
2033      * If thisArg is omitted, undefined is used as the this value.
2034      */
2035    forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void;
2036
2037    /**
2038      * Returns the index of the first occurrence of a value in an array.
2039      * @param searchElement The value to locate in the array.
2040      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2041      *  search starts at index 0.
2042      */
2043    indexOf(searchElement: number, fromIndex?: number): number;
2044
2045    /**
2046      * Adds all the elements of an array separated by the specified separator string.
2047      * @param separator A string used to separate one element of an array from the next in the
2048      * resulting String. If omitted, the array elements are separated with a comma.
2049      */
2050    join(separator?: string): string;
2051
2052    /**
2053      * Returns the index of the last occurrence of a value in an array.
2054      * @param searchElement The value to locate in the array.
2055      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2056      * search starts at index 0.
2057      */
2058    lastIndexOf(searchElement: number, fromIndex?: number): number;
2059
2060    /**
2061      * The length of the array.
2062      */
2063    length: number;
2064
2065    /**
2066      * Calls a defined callback function on each element of an array, and returns an array that
2067      * contains the results.
2068      * @param callbackfn A function that accepts up to three arguments. The map method calls the
2069      * callbackfn function one time for each element in the array.
2070      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2071      * If thisArg is omitted, undefined is used as the this value.
2072      */
2073    map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray;
2074
2075    /**
2076      * Calls the specified callback function for all the elements in an array. The return value of
2077      * the callback function is the accumulated result, and is provided as an argument in the next
2078      * call to the callback function.
2079      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2080      * callbackfn function one time for each element in the array.
2081      * @param initialValue If initialValue is specified, it is used as the initial value to start
2082      * the accumulation. The first call to the callbackfn function provides this value as an argument
2083      * instead of an array value.
2084      */
2085    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number;
2086
2087    /**
2088      * Calls the specified callback function for all the elements in an array. The return value of
2089      * the callback function is the accumulated result, and is provided as an argument in the next
2090      * call to the callback function.
2091      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2092      * callbackfn function one time for each element in the array.
2093      * @param initialValue If initialValue is specified, it is used as the initial value to start
2094      * the accumulation. The first call to the callbackfn function provides this value as an argument
2095      * instead of an array value.
2096      */
2097    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U;
2098
2099    /**
2100      * Calls the specified callback function for all the elements in an array, in descending order.
2101      * The return value of the callback function is the accumulated result, and is provided as an
2102      * argument in the next call to the callback function.
2103      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2104      * the callbackfn function one time for each element in the array.
2105      * @param initialValue If initialValue is specified, it is used as the initial value to start
2106      * the accumulation. The first call to the callbackfn function provides this value as an
2107      * argument instead of an array value.
2108      */
2109    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number;
2110
2111    /**
2112      * Calls the specified callback function for all the elements in an array, in descending order.
2113      * The return value of the callback function is the accumulated result, and is provided as an
2114      * argument in the next call to the callback function.
2115      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2116      * the callbackfn function one time for each element in the array.
2117      * @param initialValue If initialValue is specified, it is used as the initial value to start
2118      * the accumulation. The first call to the callbackfn function provides this value as an argument
2119      * instead of an array value.
2120      */
2121    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U;
2122
2123    /**
2124      * Reverses the elements in an Array.
2125      */
2126    reverse(): Uint8ClampedArray;
2127
2128    /**
2129      * Sets a value or an array of values.
2130      * @param index The index of the location to set.
2131      * @param value The value to set.
2132      */
2133    set(index: number, value: number): void;
2134
2135    /**
2136      * Sets a value or an array of values.
2137      * @param array A typed or untyped array of values to set.
2138      * @param offset The index in the current array at which the values are to be written.
2139      */
2140    set(array: Uint8ClampedArray, offset?: number): void;
2141
2142    /**
2143      * Returns a section of an array.
2144      * @param start The beginning of the specified portion of the array.
2145      * @param end The end of the specified portion of the array.
2146      */
2147    slice(start?: number, end?: number): Uint8ClampedArray;
2148
2149    /**
2150      * Determines whether the specified callback function returns true for any element of an array.
2151      * @param callbackfn A function that accepts up to three arguments. The some method calls the
2152      * callbackfn function for each element in array1 until the callbackfn returns true, or until
2153      * the end of the array.
2154      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2155      * If thisArg is omitted, undefined is used as the this value.
2156      */
2157    some(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean;
2158
2159    /**
2160      * Sorts an array.
2161      * @param compareFn The name of the function used to determine the order of the elements. If
2162      * omitted, the elements are sorted in ascending, ASCII character order.
2163      */
2164    sort(compareFn?: (a: number, b: number) => number): Uint8ClampedArray;
2165
2166    /**
2167      * Gets a new Uint8ClampedArray view of the ArrayBuffer store for this array, referencing the elements
2168      * at begin, inclusive, up to end, exclusive.
2169      * @param begin The index of the beginning of the array.
2170      * @param end The index of the end of the array.
2171      */
2172    subarray(begin?: number, end?: number): Uint8ClampedArray;
2173
2174    /**
2175      * Converts a number to a string by using the current locale.
2176      */
2177    toLocaleString(): string;
2178
2179    /**
2180      * Returns a string representation of an array.
2181      */
2182    toString(): string;
2183
2184    [index: number]: number;
2185}
2186
2187interface Uint8ClampedArrayConstructor {
2188    prototype: Uint8ClampedArray;
2189    new (length: number): Uint8ClampedArray;
2190    new (array: ArrayLike<number>): Uint8ClampedArray;
2191    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8ClampedArray;
2192
2193    /**
2194      * The size in bytes of each element in the array.
2195      */
2196    BYTES_PER_ELEMENT: number;
2197
2198    /**
2199      * Returns a new array from a set of elements.
2200      * @param items A set of elements to include in the new array object.
2201      */
2202    of(...items: number[]): Uint8ClampedArray;
2203
2204    /**
2205      * Creates an array from an array-like or iterable object.
2206      * @param arrayLike An array-like or iterable object to convert to an array.
2207      * @param mapfn A mapping function to call on every element of the array.
2208      * @param thisArg Value of 'this' used to invoke the mapfn.
2209      */
2210    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;
2211}
2212declare var Uint8ClampedArray: Uint8ClampedArrayConstructor;
2213
2214/**
2215  * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the
2216  * requested number of bytes could not be allocated an exception is raised.
2217  */
2218interface Int16Array {
2219    /**
2220      * The size in bytes of each element in the array.
2221      */
2222    BYTES_PER_ELEMENT: number;
2223
2224    /**
2225      * The ArrayBuffer instance referenced by the array.
2226      */
2227    buffer: ArrayBuffer;
2228
2229    /**
2230      * The length in bytes of the array.
2231      */
2232    byteLength: number;
2233
2234    /**
2235      * The offset in bytes of the array.
2236      */
2237    byteOffset: number;
2238
2239    /**
2240      * Returns the this object after copying a section of the array identified by start and end
2241      * to the same array starting at position target
2242      * @param target If target is negative, it is treated as length+target where length is the
2243      * length of the array.
2244      * @param start If start is negative, it is treated as length+start. If end is negative, it
2245      * is treated as length+end.
2246      * @param end If not specified, length of the this object is used as its default value.
2247      */
2248    copyWithin(target: number, start: number, end?: number): Int16Array;
2249
2250    /**
2251      * Determines whether all the members of an array satisfy the specified test.
2252      * @param callbackfn A function that accepts up to three arguments. The every method calls
2253      * the callbackfn function for each element in array1 until the callbackfn returns false,
2254      * or until the end of the array.
2255      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2256      * If thisArg is omitted, undefined is used as the this value.
2257      */
2258    every(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean;
2259
2260    /**
2261        * Returns the this object after filling the section identified by start and end with value
2262        * @param value value to fill array section with
2263        * @param start index to start filling the array at. If start is negative, it is treated as
2264        * length+start where length is the length of the array.
2265        * @param end index to stop filling the array at. If end is negative, it is treated as
2266        * length+end.
2267        */
2268    fill(value: number, start?: number, end?: number): Int16Array;
2269
2270    /**
2271      * Returns the elements of an array that meet the condition specified in a callback function.
2272      * @param callbackfn A function that accepts up to three arguments. The filter method calls
2273      * the callbackfn function one time for each element in the array.
2274      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2275      * If thisArg is omitted, undefined is used as the this value.
2276      */
2277    filter(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): Int16Array;
2278
2279    /**
2280      * Returns the value of the first element in the array where predicate is true, and undefined
2281      * otherwise.
2282      * @param predicate find calls predicate once for each element of the array, in ascending
2283      * order, until it finds one where predicate returns true. If such an element is found, find
2284      * immediately returns that element value. Otherwise, find returns undefined.
2285      * @param thisArg If provided, it will be used as the this value for each invocation of
2286      * predicate. If it is not provided, undefined is used instead.
2287      */
2288    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
2289
2290    /**
2291      * Returns the index of the first element in the array where predicate is true, and undefined
2292      * otherwise.
2293      * @param predicate find calls predicate once for each element of the array, in ascending
2294      * order, until it finds one where predicate returns true. If such an element is found, find
2295      * immediately returns that element value. Otherwise, find returns undefined.
2296      * @param thisArg If provided, it will be used as the this value for each invocation of
2297      * predicate. If it is not provided, undefined is used instead.
2298      */
2299    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
2300
2301    /**
2302      * Performs the specified action for each element in an array.
2303      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
2304      * callbackfn function one time for each element in the array.
2305      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
2306      * If thisArg is omitted, undefined is used as the this value.
2307      */
2308    forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void;
2309
2310    /**
2311      * Returns the index of the first occurrence of a value in an array.
2312      * @param searchElement The value to locate in the array.
2313      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2314      *  search starts at index 0.
2315      */
2316    indexOf(searchElement: number, fromIndex?: number): number;
2317
2318    /**
2319      * Adds all the elements of an array separated by the specified separator string.
2320      * @param separator A string used to separate one element of an array from the next in the
2321      * resulting String. If omitted, the array elements are separated with a comma.
2322      */
2323    join(separator?: string): string;
2324
2325    /**
2326      * Returns the index of the last occurrence of a value in an array.
2327      * @param searchElement The value to locate in the array.
2328      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2329      * search starts at index 0.
2330      */
2331    lastIndexOf(searchElement: number, fromIndex?: number): number;
2332
2333    /**
2334      * The length of the array.
2335      */
2336    length: number;
2337
2338    /**
2339      * Calls a defined callback function on each element of an array, and returns an array that
2340      * contains the results.
2341      * @param callbackfn A function that accepts up to three arguments. The map method calls the
2342      * callbackfn function one time for each element in the array.
2343      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2344      * If thisArg is omitted, undefined is used as the this value.
2345      */
2346    map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array;
2347
2348    /**
2349      * Calls the specified callback function for all the elements in an array. The return value of
2350      * the callback function is the accumulated result, and is provided as an argument in the next
2351      * call to the callback function.
2352      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2353      * callbackfn function one time for each element in the array.
2354      * @param initialValue If initialValue is specified, it is used as the initial value to start
2355      * the accumulation. The first call to the callbackfn function provides this value as an argument
2356      * instead of an array value.
2357      */
2358    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number;
2359
2360    /**
2361      * Calls the specified callback function for all the elements in an array. The return value of
2362      * the callback function is the accumulated result, and is provided as an argument in the next
2363      * call to the callback function.
2364      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2365      * callbackfn function one time for each element in the array.
2366      * @param initialValue If initialValue is specified, it is used as the initial value to start
2367      * the accumulation. The first call to the callbackfn function provides this value as an argument
2368      * instead of an array value.
2369      */
2370    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U;
2371
2372    /**
2373      * Calls the specified callback function for all the elements in an array, in descending order.
2374      * The return value of the callback function is the accumulated result, and is provided as an
2375      * argument in the next call to the callback function.
2376      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2377      * the callbackfn function one time for each element in the array.
2378      * @param initialValue If initialValue is specified, it is used as the initial value to start
2379      * the accumulation. The first call to the callbackfn function provides this value as an
2380      * argument instead of an array value.
2381      */
2382    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number;
2383
2384    /**
2385      * Calls the specified callback function for all the elements in an array, in descending order.
2386      * The return value of the callback function is the accumulated result, and is provided as an
2387      * argument in the next call to the callback function.
2388      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2389      * the callbackfn function one time for each element in the array.
2390      * @param initialValue If initialValue is specified, it is used as the initial value to start
2391      * the accumulation. The first call to the callbackfn function provides this value as an argument
2392      * instead of an array value.
2393      */
2394    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U;
2395
2396    /**
2397      * Reverses the elements in an Array.
2398      */
2399    reverse(): Int16Array;
2400
2401    /**
2402      * Sets a value or an array of values.
2403      * @param index The index of the location to set.
2404      * @param value The value to set.
2405      */
2406    set(index: number, value: number): void;
2407
2408    /**
2409      * Sets a value or an array of values.
2410      * @param array A typed or untyped array of values to set.
2411      * @param offset The index in the current array at which the values are to be written.
2412      */
2413    set(array: ArrayLike<number>, offset?: number): void;
2414
2415    /**
2416      * Returns a section of an array.
2417      * @param start The beginning of the specified portion of the array.
2418      * @param end The end of the specified portion of the array.
2419      */
2420    slice(start?: number, end?: number): Int16Array;
2421
2422    /**
2423      * Determines whether the specified callback function returns true for any element of an array.
2424      * @param callbackfn A function that accepts up to three arguments. The some method calls the
2425      * callbackfn function for each element in array1 until the callbackfn returns true, or until
2426      * the end of the array.
2427      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2428      * If thisArg is omitted, undefined is used as the this value.
2429      */
2430    some(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean;
2431
2432    /**
2433      * Sorts an array.
2434      * @param compareFn The name of the function used to determine the order of the elements. If
2435      * omitted, the elements are sorted in ascending, ASCII character order.
2436      */
2437    sort(compareFn?: (a: number, b: number) => number): Int16Array;
2438
2439    /**
2440      * Gets a new Int16Array view of the ArrayBuffer store for this array, referencing the elements
2441      * at begin, inclusive, up to end, exclusive.
2442      * @param begin The index of the beginning of the array.
2443      * @param end The index of the end of the array.
2444      */
2445    subarray(begin?: number, end?: number): Int16Array;
2446
2447    /**
2448      * Converts a number to a string by using the current locale.
2449      */
2450    toLocaleString(): string;
2451
2452    /**
2453      * Returns a string representation of an array.
2454      */
2455    toString(): string;
2456
2457    [index: number]: number;
2458}
2459
2460interface Int16ArrayConstructor {
2461    prototype: Int16Array;
2462    new (length: number): Int16Array;
2463    new (array: ArrayLike<number>): Int16Array;
2464    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int16Array;
2465
2466    /**
2467      * The size in bytes of each element in the array.
2468      */
2469    BYTES_PER_ELEMENT: number;
2470
2471    /**
2472      * Returns a new array from a set of elements.
2473      * @param items A set of elements to include in the new array object.
2474      */
2475    of(...items: number[]): Int16Array;
2476
2477    /**
2478      * Creates an array from an array-like or iterable object.
2479      * @param arrayLike An array-like or iterable object to convert to an array.
2480      * @param mapfn A mapping function to call on every element of the array.
2481      * @param thisArg Value of 'this' used to invoke the mapfn.
2482      */
2483    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;
2484
2485}
2486declare var Int16Array: Int16ArrayConstructor;
2487
2488/**
2489  * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the
2490  * requested number of bytes could not be allocated an exception is raised.
2491  */
2492interface Uint16Array {
2493    /**
2494      * The size in bytes of each element in the array.
2495      */
2496    BYTES_PER_ELEMENT: number;
2497
2498    /**
2499      * The ArrayBuffer instance referenced by the array.
2500      */
2501    buffer: ArrayBuffer;
2502
2503    /**
2504      * The length in bytes of the array.
2505      */
2506    byteLength: number;
2507
2508    /**
2509      * The offset in bytes of the array.
2510      */
2511    byteOffset: number;
2512
2513    /**
2514      * Returns the this object after copying a section of the array identified by start and end
2515      * to the same array starting at position target
2516      * @param target If target is negative, it is treated as length+target where length is the
2517      * length of the array.
2518      * @param start If start is negative, it is treated as length+start. If end is negative, it
2519      * is treated as length+end.
2520      * @param end If not specified, length of the this object is used as its default value.
2521      */
2522    copyWithin(target: number, start: number, end?: number): Uint16Array;
2523
2524    /**
2525      * Determines whether all the members of an array satisfy the specified test.
2526      * @param callbackfn A function that accepts up to three arguments. The every method calls
2527      * the callbackfn function for each element in array1 until the callbackfn returns false,
2528      * or until the end of the array.
2529      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2530      * If thisArg is omitted, undefined is used as the this value.
2531      */
2532    every(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean;
2533
2534    /**
2535        * Returns the this object after filling the section identified by start and end with value
2536        * @param value value to fill array section with
2537        * @param start index to start filling the array at. If start is negative, it is treated as
2538        * length+start where length is the length of the array.
2539        * @param end index to stop filling the array at. If end is negative, it is treated as
2540        * length+end.
2541        */
2542    fill(value: number, start?: number, end?: number): Uint16Array;
2543
2544    /**
2545      * Returns the elements of an array that meet the condition specified in a callback function.
2546      * @param callbackfn A function that accepts up to three arguments. The filter method calls
2547      * the callbackfn function one time for each element in the array.
2548      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2549      * If thisArg is omitted, undefined is used as the this value.
2550      */
2551    filter(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): Uint16Array;
2552
2553    /**
2554      * Returns the value of the first element in the array where predicate is true, and undefined
2555      * otherwise.
2556      * @param predicate find calls predicate once for each element of the array, in ascending
2557      * order, until it finds one where predicate returns true. If such an element is found, find
2558      * immediately returns that element value. Otherwise, find returns undefined.
2559      * @param thisArg If provided, it will be used as the this value for each invocation of
2560      * predicate. If it is not provided, undefined is used instead.
2561      */
2562    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
2563
2564    /**
2565      * Returns the index of the first element in the array where predicate is true, and undefined
2566      * otherwise.
2567      * @param predicate find calls predicate once for each element of the array, in ascending
2568      * order, until it finds one where predicate returns true. If such an element is found, find
2569      * immediately returns that element value. Otherwise, find returns undefined.
2570      * @param thisArg If provided, it will be used as the this value for each invocation of
2571      * predicate. If it is not provided, undefined is used instead.
2572      */
2573    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
2574
2575    /**
2576      * Performs the specified action for each element in an array.
2577      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
2578      * callbackfn function one time for each element in the array.
2579      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
2580      * If thisArg is omitted, undefined is used as the this value.
2581      */
2582    forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void;
2583
2584    /**
2585      * Returns the index of the first occurrence of a value in an array.
2586      * @param searchElement The value to locate in the array.
2587      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2588      *  search starts at index 0.
2589      */
2590    indexOf(searchElement: number, fromIndex?: number): number;
2591
2592    /**
2593      * Adds all the elements of an array separated by the specified separator string.
2594      * @param separator A string used to separate one element of an array from the next in the
2595      * resulting String. If omitted, the array elements are separated with a comma.
2596      */
2597    join(separator?: string): string;
2598
2599    /**
2600      * Returns the index of the last occurrence of a value in an array.
2601      * @param searchElement The value to locate in the array.
2602      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2603      * search starts at index 0.
2604      */
2605    lastIndexOf(searchElement: number, fromIndex?: number): number;
2606
2607    /**
2608      * The length of the array.
2609      */
2610    length: number;
2611
2612    /**
2613      * Calls a defined callback function on each element of an array, and returns an array that
2614      * contains the results.
2615      * @param callbackfn A function that accepts up to three arguments. The map method calls the
2616      * callbackfn function one time for each element in the array.
2617      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2618      * If thisArg is omitted, undefined is used as the this value.
2619      */
2620    map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array;
2621
2622    /**
2623      * Calls the specified callback function for all the elements in an array. The return value of
2624      * the callback function is the accumulated result, and is provided as an argument in the next
2625      * call to the callback function.
2626      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2627      * callbackfn function one time for each element in the array.
2628      * @param initialValue If initialValue is specified, it is used as the initial value to start
2629      * the accumulation. The first call to the callbackfn function provides this value as an argument
2630      * instead of an array value.
2631      */
2632    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number;
2633
2634    /**
2635      * Calls the specified callback function for all the elements in an array. The return value of
2636      * the callback function is the accumulated result, and is provided as an argument in the next
2637      * call to the callback function.
2638      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2639      * callbackfn function one time for each element in the array.
2640      * @param initialValue If initialValue is specified, it is used as the initial value to start
2641      * the accumulation. The first call to the callbackfn function provides this value as an argument
2642      * instead of an array value.
2643      */
2644    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U;
2645
2646    /**
2647      * Calls the specified callback function for all the elements in an array, in descending order.
2648      * The return value of the callback function is the accumulated result, and is provided as an
2649      * argument in the next call to the callback function.
2650      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2651      * the callbackfn function one time for each element in the array.
2652      * @param initialValue If initialValue is specified, it is used as the initial value to start
2653      * the accumulation. The first call to the callbackfn function provides this value as an
2654      * argument instead of an array value.
2655      */
2656    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number;
2657
2658    /**
2659      * Calls the specified callback function for all the elements in an array, in descending order.
2660      * The return value of the callback function is the accumulated result, and is provided as an
2661      * argument in the next call to the callback function.
2662      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2663      * the callbackfn function one time for each element in the array.
2664      * @param initialValue If initialValue is specified, it is used as the initial value to start
2665      * the accumulation. The first call to the callbackfn function provides this value as an argument
2666      * instead of an array value.
2667      */
2668    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U;
2669
2670    /**
2671      * Reverses the elements in an Array.
2672      */
2673    reverse(): Uint16Array;
2674
2675    /**
2676      * Sets a value or an array of values.
2677      * @param index The index of the location to set.
2678      * @param value The value to set.
2679      */
2680    set(index: number, value: number): void;
2681
2682    /**
2683      * Sets a value or an array of values.
2684      * @param array A typed or untyped array of values to set.
2685      * @param offset The index in the current array at which the values are to be written.
2686      */
2687    set(array: ArrayLike<number>, offset?: number): void;
2688
2689    /**
2690      * Returns a section of an array.
2691      * @param start The beginning of the specified portion of the array.
2692      * @param end The end of the specified portion of the array.
2693      */
2694    slice(start?: number, end?: number): Uint16Array;
2695
2696    /**
2697      * Determines whether the specified callback function returns true for any element of an array.
2698      * @param callbackfn A function that accepts up to three arguments. The some method calls the
2699      * callbackfn function for each element in array1 until the callbackfn returns true, or until
2700      * the end of the array.
2701      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2702      * If thisArg is omitted, undefined is used as the this value.
2703      */
2704    some(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean;
2705
2706    /**
2707      * Sorts an array.
2708      * @param compareFn The name of the function used to determine the order of the elements. If
2709      * omitted, the elements are sorted in ascending, ASCII character order.
2710      */
2711    sort(compareFn?: (a: number, b: number) => number): Uint16Array;
2712
2713    /**
2714      * Gets a new Uint16Array view of the ArrayBuffer store for this array, referencing the elements
2715      * at begin, inclusive, up to end, exclusive.
2716      * @param begin The index of the beginning of the array.
2717      * @param end The index of the end of the array.
2718      */
2719    subarray(begin?: number, end?: number): Uint16Array;
2720
2721    /**
2722      * Converts a number to a string by using the current locale.
2723      */
2724    toLocaleString(): string;
2725
2726    /**
2727      * Returns a string representation of an array.
2728      */
2729    toString(): string;
2730
2731    [index: number]: number;
2732}
2733
2734interface Uint16ArrayConstructor {
2735    prototype: Uint16Array;
2736    new (length: number): Uint16Array;
2737    new (array: ArrayLike<number>): Uint16Array;
2738    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint16Array;
2739
2740    /**
2741      * The size in bytes of each element in the array.
2742      */
2743    BYTES_PER_ELEMENT: number;
2744
2745    /**
2746      * Returns a new array from a set of elements.
2747      * @param items A set of elements to include in the new array object.
2748      */
2749    of(...items: number[]): Uint16Array;
2750
2751    /**
2752      * Creates an array from an array-like or iterable object.
2753      * @param arrayLike An array-like or iterable object to convert to an array.
2754      * @param mapfn A mapping function to call on every element of the array.
2755      * @param thisArg Value of 'this' used to invoke the mapfn.
2756      */
2757    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;
2758
2759}
2760declare var Uint16Array: Uint16ArrayConstructor;
2761/**
2762  * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the
2763  * requested number of bytes could not be allocated an exception is raised.
2764  */
2765interface Int32Array {
2766    /**
2767      * The size in bytes of each element in the array.
2768      */
2769    BYTES_PER_ELEMENT: number;
2770
2771    /**
2772      * The ArrayBuffer instance referenced by the array.
2773      */
2774    buffer: ArrayBuffer;
2775
2776    /**
2777      * The length in bytes of the array.
2778      */
2779    byteLength: number;
2780
2781    /**
2782      * The offset in bytes of the array.
2783      */
2784    byteOffset: number;
2785
2786    /**
2787      * Returns the this object after copying a section of the array identified by start and end
2788      * to the same array starting at position target
2789      * @param target If target is negative, it is treated as length+target where length is the
2790      * length of the array.
2791      * @param start If start is negative, it is treated as length+start. If end is negative, it
2792      * is treated as length+end.
2793      * @param end If not specified, length of the this object is used as its default value.
2794      */
2795    copyWithin(target: number, start: number, end?: number): Int32Array;
2796
2797    /**
2798      * Determines whether all the members of an array satisfy the specified test.
2799      * @param callbackfn A function that accepts up to three arguments. The every method calls
2800      * the callbackfn function for each element in array1 until the callbackfn returns false,
2801      * or until the end of the array.
2802      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2803      * If thisArg is omitted, undefined is used as the this value.
2804      */
2805    every(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean;
2806
2807    /**
2808        * Returns the this object after filling the section identified by start and end with value
2809        * @param value value to fill array section with
2810        * @param start index to start filling the array at. If start is negative, it is treated as
2811        * length+start where length is the length of the array.
2812        * @param end index to stop filling the array at. If end is negative, it is treated as
2813        * length+end.
2814        */
2815    fill(value: number, start?: number, end?: number): Int32Array;
2816
2817    /**
2818      * Returns the elements of an array that meet the condition specified in a callback function.
2819      * @param callbackfn A function that accepts up to three arguments. The filter method calls
2820      * the callbackfn function one time for each element in the array.
2821      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2822      * If thisArg is omitted, undefined is used as the this value.
2823      */
2824    filter(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): Int32Array;
2825
2826    /**
2827      * Returns the value of the first element in the array where predicate is true, and undefined
2828      * otherwise.
2829      * @param predicate find calls predicate once for each element of the array, in ascending
2830      * order, until it finds one where predicate returns true. If such an element is found, find
2831      * immediately returns that element value. Otherwise, find returns undefined.
2832      * @param thisArg If provided, it will be used as the this value for each invocation of
2833      * predicate. If it is not provided, undefined is used instead.
2834      */
2835    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
2836
2837    /**
2838      * Returns the index of the first element in the array where predicate is true, and undefined
2839      * otherwise.
2840      * @param predicate find calls predicate once for each element of the array, in ascending
2841      * order, until it finds one where predicate returns true. If such an element is found, find
2842      * immediately returns that element value. Otherwise, find returns undefined.
2843      * @param thisArg If provided, it will be used as the this value for each invocation of
2844      * predicate. If it is not provided, undefined is used instead.
2845      */
2846    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
2847
2848    /**
2849      * Performs the specified action for each element in an array.
2850      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
2851      * callbackfn function one time for each element in the array.
2852      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
2853      * If thisArg is omitted, undefined is used as the this value.
2854      */
2855    forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void;
2856
2857    /**
2858      * Returns the index of the first occurrence of a value in an array.
2859      * @param searchElement The value to locate in the array.
2860      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2861      *  search starts at index 0.
2862      */
2863    indexOf(searchElement: number, fromIndex?: number): number;
2864
2865    /**
2866      * Adds all the elements of an array separated by the specified separator string.
2867      * @param separator A string used to separate one element of an array from the next in the
2868      * resulting String. If omitted, the array elements are separated with a comma.
2869      */
2870    join(separator?: string): string;
2871
2872    /**
2873      * Returns the index of the last occurrence of a value in an array.
2874      * @param searchElement The value to locate in the array.
2875      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
2876      * search starts at index 0.
2877      */
2878    lastIndexOf(searchElement: number, fromIndex?: number): number;
2879
2880    /**
2881      * The length of the array.
2882      */
2883    length: number;
2884
2885    /**
2886      * Calls a defined callback function on each element of an array, and returns an array that
2887      * contains the results.
2888      * @param callbackfn A function that accepts up to three arguments. The map method calls the
2889      * callbackfn function one time for each element in the array.
2890      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2891      * If thisArg is omitted, undefined is used as the this value.
2892      */
2893    map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array;
2894
2895    /**
2896      * Calls the specified callback function for all the elements in an array. The return value of
2897      * the callback function is the accumulated result, and is provided as an argument in the next
2898      * call to the callback function.
2899      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2900      * callbackfn function one time for each element in the array.
2901      * @param initialValue If initialValue is specified, it is used as the initial value to start
2902      * the accumulation. The first call to the callbackfn function provides this value as an argument
2903      * instead of an array value.
2904      */
2905    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number;
2906
2907    /**
2908      * Calls the specified callback function for all the elements in an array. The return value of
2909      * the callback function is the accumulated result, and is provided as an argument in the next
2910      * call to the callback function.
2911      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
2912      * callbackfn function one time for each element in the array.
2913      * @param initialValue If initialValue is specified, it is used as the initial value to start
2914      * the accumulation. The first call to the callbackfn function provides this value as an argument
2915      * instead of an array value.
2916      */
2917    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U;
2918
2919    /**
2920      * Calls the specified callback function for all the elements in an array, in descending order.
2921      * The return value of the callback function is the accumulated result, and is provided as an
2922      * argument in the next call to the callback function.
2923      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2924      * the callbackfn function one time for each element in the array.
2925      * @param initialValue If initialValue is specified, it is used as the initial value to start
2926      * the accumulation. The first call to the callbackfn function provides this value as an
2927      * argument instead of an array value.
2928      */
2929    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number;
2930
2931    /**
2932      * Calls the specified callback function for all the elements in an array, in descending order.
2933      * The return value of the callback function is the accumulated result, and is provided as an
2934      * argument in the next call to the callback function.
2935      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
2936      * the callbackfn function one time for each element in the array.
2937      * @param initialValue If initialValue is specified, it is used as the initial value to start
2938      * the accumulation. The first call to the callbackfn function provides this value as an argument
2939      * instead of an array value.
2940      */
2941    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U;
2942
2943    /**
2944      * Reverses the elements in an Array.
2945      */
2946    reverse(): Int32Array;
2947
2948    /**
2949      * Sets a value or an array of values.
2950      * @param index The index of the location to set.
2951      * @param value The value to set.
2952      */
2953    set(index: number, value: number): void;
2954
2955    /**
2956      * Sets a value or an array of values.
2957      * @param array A typed or untyped array of values to set.
2958      * @param offset The index in the current array at which the values are to be written.
2959      */
2960    set(array: ArrayLike<number>, offset?: number): void;
2961
2962    /**
2963      * Returns a section of an array.
2964      * @param start The beginning of the specified portion of the array.
2965      * @param end The end of the specified portion of the array.
2966      */
2967    slice(start?: number, end?: number): Int32Array;
2968
2969    /**
2970      * Determines whether the specified callback function returns true for any element of an array.
2971      * @param callbackfn A function that accepts up to three arguments. The some method calls the
2972      * callbackfn function for each element in array1 until the callbackfn returns true, or until
2973      * the end of the array.
2974      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
2975      * If thisArg is omitted, undefined is used as the this value.
2976      */
2977    some(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean;
2978
2979    /**
2980      * Sorts an array.
2981      * @param compareFn The name of the function used to determine the order of the elements. If
2982      * omitted, the elements are sorted in ascending, ASCII character order.
2983      */
2984    sort(compareFn?: (a: number, b: number) => number): Int32Array;
2985
2986    /**
2987      * Gets a new Int32Array view of the ArrayBuffer store for this array, referencing the elements
2988      * at begin, inclusive, up to end, exclusive.
2989      * @param begin The index of the beginning of the array.
2990      * @param end The index of the end of the array.
2991      */
2992    subarray(begin?: number, end?: number): Int32Array;
2993
2994    /**
2995      * Converts a number to a string by using the current locale.
2996      */
2997    toLocaleString(): string;
2998
2999    /**
3000      * Returns a string representation of an array.
3001      */
3002    toString(): string;
3003
3004    [index: number]: number;
3005}
3006
3007interface Int32ArrayConstructor {
3008    prototype: Int32Array;
3009    new (length: number): Int32Array;
3010    new (array: ArrayLike<number>): Int32Array;
3011    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int32Array;
3012
3013    /**
3014      * The size in bytes of each element in the array.
3015      */
3016    BYTES_PER_ELEMENT: number;
3017
3018    /**
3019      * Returns a new array from a set of elements.
3020      * @param items A set of elements to include in the new array object.
3021      */
3022    of(...items: number[]): Int32Array;
3023
3024    /**
3025      * Creates an array from an array-like or iterable object.
3026      * @param arrayLike An array-like or iterable object to convert to an array.
3027      * @param mapfn A mapping function to call on every element of the array.
3028      * @param thisArg Value of 'this' used to invoke the mapfn.
3029      */
3030    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;
3031}
3032declare var Int32Array: Int32ArrayConstructor;
3033
3034/**
3035  * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the
3036  * requested number of bytes could not be allocated an exception is raised.
3037  */
3038interface Uint32Array {
3039    /**
3040      * The size in bytes of each element in the array.
3041      */
3042    BYTES_PER_ELEMENT: number;
3043
3044    /**
3045      * The ArrayBuffer instance referenced by the array.
3046      */
3047    buffer: ArrayBuffer;
3048
3049    /**
3050      * The length in bytes of the array.
3051      */
3052    byteLength: number;
3053
3054    /**
3055      * The offset in bytes of the array.
3056      */
3057    byteOffset: number;
3058
3059    /**
3060      * Returns the this object after copying a section of the array identified by start and end
3061      * to the same array starting at position target
3062      * @param target If target is negative, it is treated as length+target where length is the
3063      * length of the array.
3064      * @param start If start is negative, it is treated as length+start. If end is negative, it
3065      * is treated as length+end.
3066      * @param end If not specified, length of the this object is used as its default value.
3067      */
3068    copyWithin(target: number, start: number, end?: number): Uint32Array;
3069
3070    /**
3071      * Determines whether all the members of an array satisfy the specified test.
3072      * @param callbackfn A function that accepts up to three arguments. The every method calls
3073      * the callbackfn function for each element in array1 until the callbackfn returns false,
3074      * or until the end of the array.
3075      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3076      * If thisArg is omitted, undefined is used as the this value.
3077      */
3078    every(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean;
3079
3080    /**
3081        * Returns the this object after filling the section identified by start and end with value
3082        * @param value value to fill array section with
3083        * @param start index to start filling the array at. If start is negative, it is treated as
3084        * length+start where length is the length of the array.
3085        * @param end index to stop filling the array at. If end is negative, it is treated as
3086        * length+end.
3087        */
3088    fill(value: number, start?: number, end?: number): Uint32Array;
3089
3090    /**
3091      * Returns the elements of an array that meet the condition specified in a callback function.
3092      * @param callbackfn A function that accepts up to three arguments. The filter method calls
3093      * the callbackfn function one time for each element in the array.
3094      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3095      * If thisArg is omitted, undefined is used as the this value.
3096      */
3097    filter(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): Uint32Array;
3098
3099    /**
3100      * Returns the value of the first element in the array where predicate is true, and undefined
3101      * otherwise.
3102      * @param predicate find calls predicate once for each element of the array, in ascending
3103      * order, until it finds one where predicate returns true. If such an element is found, find
3104      * immediately returns that element value. Otherwise, find returns undefined.
3105      * @param thisArg If provided, it will be used as the this value for each invocation of
3106      * predicate. If it is not provided, undefined is used instead.
3107      */
3108    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
3109
3110    /**
3111      * Returns the index of the first element in the array where predicate is true, and undefined
3112      * otherwise.
3113      * @param predicate find calls predicate once for each element of the array, in ascending
3114      * order, until it finds one where predicate returns true. If such an element is found, find
3115      * immediately returns that element value. Otherwise, find returns undefined.
3116      * @param thisArg If provided, it will be used as the this value for each invocation of
3117      * predicate. If it is not provided, undefined is used instead.
3118      */
3119    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
3120
3121    /**
3122      * Performs the specified action for each element in an array.
3123      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
3124      * callbackfn function one time for each element in the array.
3125      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
3126      * If thisArg is omitted, undefined is used as the this value.
3127      */
3128    forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void;
3129
3130    /**
3131      * Returns the index of the first occurrence of a value in an array.
3132      * @param searchElement The value to locate in the array.
3133      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
3134      *  search starts at index 0.
3135      */
3136    indexOf(searchElement: number, fromIndex?: number): number;
3137
3138    /**
3139      * Adds all the elements of an array separated by the specified separator string.
3140      * @param separator A string used to separate one element of an array from the next in the
3141      * resulting String. If omitted, the array elements are separated with a comma.
3142      */
3143    join(separator?: string): string;
3144
3145    /**
3146      * Returns the index of the last occurrence of a value in an array.
3147      * @param searchElement The value to locate in the array.
3148      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
3149      * search starts at index 0.
3150      */
3151    lastIndexOf(searchElement: number, fromIndex?: number): number;
3152
3153    /**
3154      * The length of the array.
3155      */
3156    length: number;
3157
3158    /**
3159      * Calls a defined callback function on each element of an array, and returns an array that
3160      * contains the results.
3161      * @param callbackfn A function that accepts up to three arguments. The map method calls the
3162      * callbackfn function one time for each element in the array.
3163      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3164      * If thisArg is omitted, undefined is used as the this value.
3165      */
3166    map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array;
3167
3168    /**
3169      * Calls the specified callback function for all the elements in an array. The return value of
3170      * the callback function is the accumulated result, and is provided as an argument in the next
3171      * call to the callback function.
3172      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
3173      * callbackfn function one time for each element in the array.
3174      * @param initialValue If initialValue is specified, it is used as the initial value to start
3175      * the accumulation. The first call to the callbackfn function provides this value as an argument
3176      * instead of an array value.
3177      */
3178    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number;
3179
3180    /**
3181      * Calls the specified callback function for all the elements in an array. The return value of
3182      * the callback function is the accumulated result, and is provided as an argument in the next
3183      * call to the callback function.
3184      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
3185      * callbackfn function one time for each element in the array.
3186      * @param initialValue If initialValue is specified, it is used as the initial value to start
3187      * the accumulation. The first call to the callbackfn function provides this value as an argument
3188      * instead of an array value.
3189      */
3190    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U;
3191
3192    /**
3193      * Calls the specified callback function for all the elements in an array, in descending order.
3194      * The return value of the callback function is the accumulated result, and is provided as an
3195      * argument in the next call to the callback function.
3196      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
3197      * the callbackfn function one time for each element in the array.
3198      * @param initialValue If initialValue is specified, it is used as the initial value to start
3199      * the accumulation. The first call to the callbackfn function provides this value as an
3200      * argument instead of an array value.
3201      */
3202    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number;
3203
3204    /**
3205      * Calls the specified callback function for all the elements in an array, in descending order.
3206      * The return value of the callback function is the accumulated result, and is provided as an
3207      * argument in the next call to the callback function.
3208      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
3209      * the callbackfn function one time for each element in the array.
3210      * @param initialValue If initialValue is specified, it is used as the initial value to start
3211      * the accumulation. The first call to the callbackfn function provides this value as an argument
3212      * instead of an array value.
3213      */
3214    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U;
3215
3216    /**
3217      * Reverses the elements in an Array.
3218      */
3219    reverse(): Uint32Array;
3220
3221    /**
3222      * Sets a value or an array of values.
3223      * @param index The index of the location to set.
3224      * @param value The value to set.
3225      */
3226    set(index: number, value: number): void;
3227
3228    /**
3229      * Sets a value or an array of values.
3230      * @param array A typed or untyped array of values to set.
3231      * @param offset The index in the current array at which the values are to be written.
3232      */
3233    set(array: ArrayLike<number>, offset?: number): void;
3234
3235    /**
3236      * Returns a section of an array.
3237      * @param start The beginning of the specified portion of the array.
3238      * @param end The end of the specified portion of the array.
3239      */
3240    slice(start?: number, end?: number): Uint32Array;
3241
3242    /**
3243      * Determines whether the specified callback function returns true for any element of an array.
3244      * @param callbackfn A function that accepts up to three arguments. The some method calls the
3245      * callbackfn function for each element in array1 until the callbackfn returns true, or until
3246      * the end of the array.
3247      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3248      * If thisArg is omitted, undefined is used as the this value.
3249      */
3250    some(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean;
3251
3252    /**
3253      * Sorts an array.
3254      * @param compareFn The name of the function used to determine the order of the elements. If
3255      * omitted, the elements are sorted in ascending, ASCII character order.
3256      */
3257    sort(compareFn?: (a: number, b: number) => number): Uint32Array;
3258
3259    /**
3260      * Gets a new Uint32Array view of the ArrayBuffer store for this array, referencing the elements
3261      * at begin, inclusive, up to end, exclusive.
3262      * @param begin The index of the beginning of the array.
3263      * @param end The index of the end of the array.
3264      */
3265    subarray(begin?: number, end?: number): Uint32Array;
3266
3267    /**
3268      * Converts a number to a string by using the current locale.
3269      */
3270    toLocaleString(): string;
3271
3272    /**
3273      * Returns a string representation of an array.
3274      */
3275    toString(): string;
3276
3277    [index: number]: number;
3278}
3279
3280interface Uint32ArrayConstructor {
3281    prototype: Uint32Array;
3282    new (length: number): Uint32Array;
3283    new (array: ArrayLike<number>): Uint32Array;
3284    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint32Array;
3285
3286    /**
3287      * The size in bytes of each element in the array.
3288      */
3289    BYTES_PER_ELEMENT: number;
3290
3291    /**
3292      * Returns a new array from a set of elements.
3293      * @param items A set of elements to include in the new array object.
3294      */
3295    of(...items: number[]): Uint32Array;
3296
3297    /**
3298      * Creates an array from an array-like or iterable object.
3299      * @param arrayLike An array-like or iterable object to convert to an array.
3300      * @param mapfn A mapping function to call on every element of the array.
3301      * @param thisArg Value of 'this' used to invoke the mapfn.
3302      */
3303    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;
3304}
3305declare var Uint32Array: Uint32ArrayConstructor;
3306
3307/**
3308  * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number
3309  * of bytes could not be allocated an exception is raised.
3310  */
3311interface Float32Array {
3312    /**
3313      * The size in bytes of each element in the array.
3314      */
3315    BYTES_PER_ELEMENT: number;
3316
3317    /**
3318      * The ArrayBuffer instance referenced by the array.
3319      */
3320    buffer: ArrayBuffer;
3321
3322    /**
3323      * The length in bytes of the array.
3324      */
3325    byteLength: number;
3326
3327    /**
3328      * The offset in bytes of the array.
3329      */
3330    byteOffset: number;
3331
3332    /**
3333      * Returns the this object after copying a section of the array identified by start and end
3334      * to the same array starting at position target
3335      * @param target If target is negative, it is treated as length+target where length is the
3336      * length of the array.
3337      * @param start If start is negative, it is treated as length+start. If end is negative, it
3338      * is treated as length+end.
3339      * @param end If not specified, length of the this object is used as its default value.
3340      */
3341    copyWithin(target: number, start: number, end?: number): Float32Array;
3342
3343    /**
3344      * Determines whether all the members of an array satisfy the specified test.
3345      * @param callbackfn A function that accepts up to three arguments. The every method calls
3346      * the callbackfn function for each element in array1 until the callbackfn returns false,
3347      * or until the end of the array.
3348      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3349      * If thisArg is omitted, undefined is used as the this value.
3350      */
3351    every(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean;
3352
3353    /**
3354        * Returns the this object after filling the section identified by start and end with value
3355        * @param value value to fill array section with
3356        * @param start index to start filling the array at. If start is negative, it is treated as
3357        * length+start where length is the length of the array.
3358        * @param end index to stop filling the array at. If end is negative, it is treated as
3359        * length+end.
3360        */
3361    fill(value: number, start?: number, end?: number): Float32Array;
3362
3363    /**
3364      * Returns the elements of an array that meet the condition specified in a callback function.
3365      * @param callbackfn A function that accepts up to three arguments. The filter method calls
3366      * the callbackfn function one time for each element in the array.
3367      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3368      * If thisArg is omitted, undefined is used as the this value.
3369      */
3370    filter(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): Float32Array;
3371
3372    /**
3373      * Returns the value of the first element in the array where predicate is true, and undefined
3374      * otherwise.
3375      * @param predicate find calls predicate once for each element of the array, in ascending
3376      * order, until it finds one where predicate returns true. If such an element is found, find
3377      * immediately returns that element value. Otherwise, find returns undefined.
3378      * @param thisArg If provided, it will be used as the this value for each invocation of
3379      * predicate. If it is not provided, undefined is used instead.
3380      */
3381    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
3382
3383    /**
3384      * Returns the index of the first element in the array where predicate is true, and undefined
3385      * otherwise.
3386      * @param predicate find calls predicate once for each element of the array, in ascending
3387      * order, until it finds one where predicate returns true. If such an element is found, find
3388      * immediately returns that element value. Otherwise, find returns undefined.
3389      * @param thisArg If provided, it will be used as the this value for each invocation of
3390      * predicate. If it is not provided, undefined is used instead.
3391      */
3392    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
3393
3394    /**
3395      * Performs the specified action for each element in an array.
3396      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
3397      * callbackfn function one time for each element in the array.
3398      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
3399      * If thisArg is omitted, undefined is used as the this value.
3400      */
3401    forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void;
3402
3403    /**
3404      * Returns the index of the first occurrence of a value in an array.
3405      * @param searchElement The value to locate in the array.
3406      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
3407      *  search starts at index 0.
3408      */
3409    indexOf(searchElement: number, fromIndex?: number): number;
3410
3411    /**
3412      * Adds all the elements of an array separated by the specified separator string.
3413      * @param separator A string used to separate one element of an array from the next in the
3414      * resulting String. If omitted, the array elements are separated with a comma.
3415      */
3416    join(separator?: string): string;
3417
3418    /**
3419      * Returns the index of the last occurrence of a value in an array.
3420      * @param searchElement The value to locate in the array.
3421      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
3422      * search starts at index 0.
3423      */
3424    lastIndexOf(searchElement: number, fromIndex?: number): number;
3425
3426    /**
3427      * The length of the array.
3428      */
3429    length: number;
3430
3431    /**
3432      * Calls a defined callback function on each element of an array, and returns an array that
3433      * contains the results.
3434      * @param callbackfn A function that accepts up to three arguments. The map method calls the
3435      * callbackfn function one time for each element in the array.
3436      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3437      * If thisArg is omitted, undefined is used as the this value.
3438      */
3439    map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array;
3440
3441    /**
3442      * Calls the specified callback function for all the elements in an array. The return value of
3443      * the callback function is the accumulated result, and is provided as an argument in the next
3444      * call to the callback function.
3445      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
3446      * callbackfn function one time for each element in the array.
3447      * @param initialValue If initialValue is specified, it is used as the initial value to start
3448      * the accumulation. The first call to the callbackfn function provides this value as an argument
3449      * instead of an array value.
3450      */
3451    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number;
3452
3453    /**
3454      * Calls the specified callback function for all the elements in an array. The return value of
3455      * the callback function is the accumulated result, and is provided as an argument in the next
3456      * call to the callback function.
3457      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
3458      * callbackfn function one time for each element in the array.
3459      * @param initialValue If initialValue is specified, it is used as the initial value to start
3460      * the accumulation. The first call to the callbackfn function provides this value as an argument
3461      * instead of an array value.
3462      */
3463    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U;
3464
3465    /**
3466      * Calls the specified callback function for all the elements in an array, in descending order.
3467      * The return value of the callback function is the accumulated result, and is provided as an
3468      * argument in the next call to the callback function.
3469      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
3470      * the callbackfn function one time for each element in the array.
3471      * @param initialValue If initialValue is specified, it is used as the initial value to start
3472      * the accumulation. The first call to the callbackfn function provides this value as an
3473      * argument instead of an array value.
3474      */
3475    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number;
3476
3477    /**
3478      * Calls the specified callback function for all the elements in an array, in descending order.
3479      * The return value of the callback function is the accumulated result, and is provided as an
3480      * argument in the next call to the callback function.
3481      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
3482      * the callbackfn function one time for each element in the array.
3483      * @param initialValue If initialValue is specified, it is used as the initial value to start
3484      * the accumulation. The first call to the callbackfn function provides this value as an argument
3485      * instead of an array value.
3486      */
3487    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U;
3488
3489    /**
3490      * Reverses the elements in an Array.
3491      */
3492    reverse(): Float32Array;
3493
3494    /**
3495      * Sets a value or an array of values.
3496      * @param index The index of the location to set.
3497      * @param value The value to set.
3498      */
3499    set(index: number, value: number): void;
3500
3501    /**
3502      * Sets a value or an array of values.
3503      * @param array A typed or untyped array of values to set.
3504      * @param offset The index in the current array at which the values are to be written.
3505      */
3506    set(array: ArrayLike<number>, offset?: number): void;
3507
3508    /**
3509      * Returns a section of an array.
3510      * @param start The beginning of the specified portion of the array.
3511      * @param end The end of the specified portion of the array.
3512      */
3513    slice(start?: number, end?: number): Float32Array;
3514
3515    /**
3516      * Determines whether the specified callback function returns true for any element of an array.
3517      * @param callbackfn A function that accepts up to three arguments. The some method calls the
3518      * callbackfn function for each element in array1 until the callbackfn returns true, or until
3519      * the end of the array.
3520      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3521      * If thisArg is omitted, undefined is used as the this value.
3522      */
3523    some(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean;
3524
3525    /**
3526      * Sorts an array.
3527      * @param compareFn The name of the function used to determine the order of the elements. If
3528      * omitted, the elements are sorted in ascending, ASCII character order.
3529      */
3530    sort(compareFn?: (a: number, b: number) => number): Float32Array;
3531
3532    /**
3533      * Gets a new Float32Array view of the ArrayBuffer store for this array, referencing the elements
3534      * at begin, inclusive, up to end, exclusive.
3535      * @param begin The index of the beginning of the array.
3536      * @param end The index of the end of the array.
3537      */
3538    subarray(begin?: number, end?: number): Float32Array;
3539
3540    /**
3541      * Converts a number to a string by using the current locale.
3542      */
3543    toLocaleString(): string;
3544
3545    /**
3546      * Returns a string representation of an array.
3547      */
3548    toString(): string;
3549
3550    [index: number]: number;
3551}
3552
3553interface Float32ArrayConstructor {
3554    prototype: Float32Array;
3555    new (length: number): Float32Array;
3556    new (array: ArrayLike<number>): Float32Array;
3557    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float32Array;
3558
3559    /**
3560      * The size in bytes of each element in the array.
3561      */
3562    BYTES_PER_ELEMENT: number;
3563
3564    /**
3565      * Returns a new array from a set of elements.
3566      * @param items A set of elements to include in the new array object.
3567      */
3568    of(...items: number[]): Float32Array;
3569
3570    /**
3571      * Creates an array from an array-like or iterable object.
3572      * @param arrayLike An array-like or iterable object to convert to an array.
3573      * @param mapfn A mapping function to call on every element of the array.
3574      * @param thisArg Value of 'this' used to invoke the mapfn.
3575      */
3576    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;
3577
3578}
3579declare var Float32Array: Float32ArrayConstructor;
3580
3581/**
3582  * A typed array of 64-bit float values. The contents are initialized to 0. If the requested
3583  * number of bytes could not be allocated an exception is raised.
3584  */
3585interface Float64Array {
3586    /**
3587      * The size in bytes of each element in the array.
3588      */
3589    BYTES_PER_ELEMENT: number;
3590
3591    /**
3592      * The ArrayBuffer instance referenced by the array.
3593      */
3594    buffer: ArrayBuffer;
3595
3596    /**
3597      * The length in bytes of the array.
3598      */
3599    byteLength: number;
3600
3601    /**
3602      * The offset in bytes of the array.
3603      */
3604    byteOffset: number;
3605
3606    /**
3607      * Returns the this object after copying a section of the array identified by start and end
3608      * to the same array starting at position target
3609      * @param target If target is negative, it is treated as length+target where length is the
3610      * length of the array.
3611      * @param start If start is negative, it is treated as length+start. If end is negative, it
3612      * is treated as length+end.
3613      * @param end If not specified, length of the this object is used as its default value.
3614      */
3615    copyWithin(target: number, start: number, end?: number): Float64Array;
3616
3617    /**
3618      * Determines whether all the members of an array satisfy the specified test.
3619      * @param callbackfn A function that accepts up to three arguments. The every method calls
3620      * the callbackfn function for each element in array1 until the callbackfn returns false,
3621      * or until the end of the array.
3622      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3623      * If thisArg is omitted, undefined is used as the this value.
3624      */
3625    every(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean;
3626
3627    /**
3628        * Returns the this object after filling the section identified by start and end with value
3629        * @param value value to fill array section with
3630        * @param start index to start filling the array at. If start is negative, it is treated as
3631        * length+start where length is the length of the array.
3632        * @param end index to stop filling the array at. If end is negative, it is treated as
3633        * length+end.
3634        */
3635    fill(value: number, start?: number, end?: number): Float64Array;
3636
3637    /**
3638      * Returns the elements of an array that meet the condition specified in a callback function.
3639      * @param callbackfn A function that accepts up to three arguments. The filter method calls
3640      * the callbackfn function one time for each element in the array.
3641      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3642      * If thisArg is omitted, undefined is used as the this value.
3643      */
3644    filter(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): Float64Array;
3645
3646    /**
3647      * Returns the value of the first element in the array where predicate is true, and undefined
3648      * otherwise.
3649      * @param predicate find calls predicate once for each element of the array, in ascending
3650      * order, until it finds one where predicate returns true. If such an element is found, find
3651      * immediately returns that element value. Otherwise, find returns undefined.
3652      * @param thisArg If provided, it will be used as the this value for each invocation of
3653      * predicate. If it is not provided, undefined is used instead.
3654      */
3655    find(predicate: (value: number, index: number, obj: Array<number>) => boolean, thisArg?: any): number;
3656
3657    /**
3658      * Returns the index of the first element in the array where predicate is true, and undefined
3659      * otherwise.
3660      * @param predicate find calls predicate once for each element of the array, in ascending
3661      * order, until it finds one where predicate returns true. If such an element is found, find
3662      * immediately returns that element value. Otherwise, find returns undefined.
3663      * @param thisArg If provided, it will be used as the this value for each invocation of
3664      * predicate. If it is not provided, undefined is used instead.
3665      */
3666    findIndex(predicate: (value: number) => boolean, thisArg?: any): number;
3667
3668    /**
3669      * Performs the specified action for each element in an array.
3670      * @param callbackfn  A function that accepts up to three arguments. forEach calls the
3671      * callbackfn function one time for each element in the array.
3672      * @param thisArg  An object to which the this keyword can refer in the callbackfn function.
3673      * If thisArg is omitted, undefined is used as the this value.
3674      */
3675    forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void;
3676
3677    /**
3678      * Returns the index of the first occurrence of a value in an array.
3679      * @param searchElement The value to locate in the array.
3680      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
3681      *  search starts at index 0.
3682      */
3683    indexOf(searchElement: number, fromIndex?: number): number;
3684
3685    /**
3686      * Adds all the elements of an array separated by the specified separator string.
3687      * @param separator A string used to separate one element of an array from the next in the
3688      * resulting String. If omitted, the array elements are separated with a comma.
3689      */
3690    join(separator?: string): string;
3691
3692    /**
3693      * Returns the index of the last occurrence of a value in an array.
3694      * @param searchElement The value to locate in the array.
3695      * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
3696      * search starts at index 0.
3697      */
3698    lastIndexOf(searchElement: number, fromIndex?: number): number;
3699
3700    /**
3701      * The length of the array.
3702      */
3703    length: number;
3704
3705    /**
3706      * Calls a defined callback function on each element of an array, and returns an array that
3707      * contains the results.
3708      * @param callbackfn A function that accepts up to three arguments. The map method calls the
3709      * callbackfn function one time for each element in the array.
3710      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3711      * If thisArg is omitted, undefined is used as the this value.
3712      */
3713    map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array;
3714
3715    /**
3716      * Calls the specified callback function for all the elements in an array. The return value of
3717      * the callback function is the accumulated result, and is provided as an argument in the next
3718      * call to the callback function.
3719      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
3720      * callbackfn function one time for each element in the array.
3721      * @param initialValue If initialValue is specified, it is used as the initial value to start
3722      * the accumulation. The first call to the callbackfn function provides this value as an argument
3723      * instead of an array value.
3724      */
3725    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number;
3726
3727    /**
3728      * Calls the specified callback function for all the elements in an array. The return value of
3729      * the callback function is the accumulated result, and is provided as an argument in the next
3730      * call to the callback function.
3731      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
3732      * callbackfn function one time for each element in the array.
3733      * @param initialValue If initialValue is specified, it is used as the initial value to start
3734      * the accumulation. The first call to the callbackfn function provides this value as an argument
3735      * instead of an array value.
3736      */
3737    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U;
3738
3739    /**
3740      * Calls the specified callback function for all the elements in an array, in descending order.
3741      * The return value of the callback function is the accumulated result, and is provided as an
3742      * argument in the next call to the callback function.
3743      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
3744      * the callbackfn function one time for each element in the array.
3745      * @param initialValue If initialValue is specified, it is used as the initial value to start
3746      * the accumulation. The first call to the callbackfn function provides this value as an
3747      * argument instead of an array value.
3748      */
3749    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number;
3750
3751    /**
3752      * Calls the specified callback function for all the elements in an array, in descending order.
3753      * The return value of the callback function is the accumulated result, and is provided as an
3754      * argument in the next call to the callback function.
3755      * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
3756      * the callbackfn function one time for each element in the array.
3757      * @param initialValue If initialValue is specified, it is used as the initial value to start
3758      * the accumulation. The first call to the callbackfn function provides this value as an argument
3759      * instead of an array value.
3760      */
3761    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U;
3762
3763    /**
3764      * Reverses the elements in an Array.
3765      */
3766    reverse(): Float64Array;
3767
3768    /**
3769      * Sets a value or an array of values.
3770      * @param index The index of the location to set.
3771      * @param value The value to set.
3772      */
3773    set(index: number, value: number): void;
3774
3775    /**
3776      * Sets a value or an array of values.
3777      * @param array A typed or untyped array of values to set.
3778      * @param offset The index in the current array at which the values are to be written.
3779      */
3780    set(array: ArrayLike<number>, offset?: number): void;
3781
3782    /**
3783      * Returns a section of an array.
3784      * @param start The beginning of the specified portion of the array.
3785      * @param end The end of the specified portion of the array.
3786      */
3787    slice(start?: number, end?: number): Float64Array;
3788
3789    /**
3790      * Determines whether the specified callback function returns true for any element of an array.
3791      * @param callbackfn A function that accepts up to three arguments. The some method calls the
3792      * callbackfn function for each element in array1 until the callbackfn returns true, or until
3793      * the end of the array.
3794      * @param thisArg An object to which the this keyword can refer in the callbackfn function.
3795      * If thisArg is omitted, undefined is used as the this value.
3796      */
3797    some(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean;
3798
3799    /**
3800      * Sorts an array.
3801      * @param compareFn The name of the function used to determine the order of the elements. If
3802      * omitted, the elements are sorted in ascending, ASCII character order.
3803      */
3804    sort(compareFn?: (a: number, b: number) => number): Float64Array;
3805
3806    /**
3807      * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements
3808      * at begin, inclusive, up to end, exclusive.
3809      * @param begin The index of the beginning of the array.
3810      * @param end The index of the end of the array.
3811      */
3812    subarray(begin?: number, end?: number): Float64Array;
3813
3814    /**
3815      * Converts a number to a string by using the current locale.
3816      */
3817    toLocaleString(): string;
3818
3819    /**
3820      * Returns a string representation of an array.
3821      */
3822    toString(): string;
3823
3824    [index: number]: number;
3825}
3826
3827interface Float64ArrayConstructor {
3828    prototype: Float64Array;
3829    new (length: number): Float64Array;
3830    new (array: ArrayLike<number>): Float64Array;
3831    new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float64Array;
3832
3833    /**
3834      * The size in bytes of each element in the array.
3835      */
3836    BYTES_PER_ELEMENT: number;
3837
3838    /**
3839      * Returns a new array from a set of elements.
3840      * @param items A set of elements to include in the new array object.
3841      */
3842    of(...items: number[]): Float64Array;
3843
3844    /**
3845      * Creates an array from an array-like or iterable object.
3846      * @param arrayLike An array-like or iterable object to convert to an array.
3847      * @param mapfn A mapping function to call on every element of the array.
3848      * @param thisArg Value of 'this' used to invoke the mapfn.
3849      */
3850    from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;
3851}
3852declare var Float64Array: Float64ArrayConstructor;
3853/////////////////////////////
3854/// ECMAScript Internationalization API
3855/////////////////////////////
3856
3857declare module Intl {
3858    interface CollatorOptions {
3859        usage?: string;
3860        localeMatcher?: string;
3861        numeric?: boolean;
3862        caseFirst?: string;
3863        sensitivity?: string;
3864        ignorePunctuation?: boolean;
3865    }
3866
3867    interface ResolvedCollatorOptions {
3868        locale: string;
3869        usage: string;
3870        sensitivity: string;
3871        ignorePunctuation: boolean;
3872        collation: string;
3873        caseFirst: string;
3874        numeric: boolean;
3875    }
3876
3877    interface Collator {
3878        compare(x: string, y: string): number;
3879        resolvedOptions(): ResolvedCollatorOptions;
3880    }
3881    var Collator: {
3882        new (locales?: string[], options?: CollatorOptions): Collator;
3883        new (locale?: string, options?: CollatorOptions): Collator;
3884        (locales?: string[], options?: CollatorOptions): Collator;
3885        (locale?: string, options?: CollatorOptions): Collator;
3886        supportedLocalesOf(locales: string[], options?: CollatorOptions): string[];
3887        supportedLocalesOf(locale: string, options?: CollatorOptions): string[];
3888    }
3889
3890    interface NumberFormatOptions {
3891        localeMatcher?: string;
3892        style?: string;
3893        compactDisplay?: string;
3894        currency?: string;
3895        currencyDisplay?: string;
3896        unit?: string;
3897        unitDisplay?: string;
3898        useGrouping?: boolean;
3899        minimumIntegerDigits?: number;
3900        minimumFractionDigits?: number;
3901        maximumFractionDigits?: number;
3902        minimumSignificantDigits?: number;
3903        maximumSignificantDigits?: number;
3904        notation?: string;
3905        signDisplay?: string;
3906    }
3907
3908    interface ResolvedNumberFormatOptions {
3909        locale: string;
3910        numberingSystem: string;
3911        style: string;
3912        compactDisplay?: string;
3913        currency?: string;
3914        currencyDisplay?: string;
3915        unit?: string;
3916        unitDisplay?: string;
3917        minimumIntegerDigits: number;
3918        minimumFractionDigits: number;
3919        maximumFractionDigits: number;
3920        minimumSignificantDigits?: number;
3921        maximumSignificantDigits?: number;
3922        useGrouping: boolean;
3923        notation?: string;
3924        signDisplay?: string;
3925    }
3926
3927    interface NumberFormat {
3928        format(value: number): string;
3929        resolvedOptions(): ResolvedNumberFormatOptions;
3930    }
3931    var NumberFormat: {
3932        new (locales?: string[], options?: NumberFormatOptions): NumberFormat;
3933        new (locale?: string, options?: NumberFormatOptions): NumberFormat;
3934        (locales?: string[], options?: NumberFormatOptions): NumberFormat;
3935        (locale?: string, options?: NumberFormatOptions): NumberFormat;
3936        supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[];
3937        supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[];
3938    }
3939
3940    interface DateTimeFormatOptions {
3941        dateStyle?: "full" | "long" | "medium" | "short";
3942        timeStyle?: "full" | "long" | "medium" | "short";
3943        calendar?: "buddhist" | "chinese" | " coptic" | "ethiopia" | "ethiopic" | "gregory" | " hebrew" | "indian" | "islamic" | "iso8601" | " japanese" | "persian" | "roc";
3944        dayPeriod?: "narrow" | "short" | " long";
3945        numberingSystem?: "arab" | "arabext" | " bali" | "beng" | "deva" | "fullwide" | " gujr" | "guru" | "hanidec" | "khmr" | " knda" | "laoo" | "latn" | "limb" | "mlym" | " mong" | "mymr" | "orya" | "tamldec" | " telu" | "thai" | "tibt";
3946        localeMatcher?: "best fit" | "lookup";
3947        timeZone?: string;
3948        hour12?: boolean;
3949        hourCycle?: "h11" | "h12" | "h23" | "h24";
3950        formatMatcher?: "best fit" | "basic";
3951        weekday?: "long" | "short" | "narrow";
3952        era?: "long" | "short" | "narrow";
3953        year?: "numeric" | "2-digit";
3954        month?: "numeric" | "2-digit" |"long" | "short" | "narrow";
3955        day?: "numeric" | "2-digit";
3956        hour?: "numeric" | "2-digit";
3957        minute?: "numeric" | "2-digit";
3958        second?: "numeric" | "2-digit";
3959        fractionalSecondDigits?: 0 | 1 | 2 | 3;
3960        timeZoneName?: "long" | "short";
3961    }
3962
3963    interface ResolvedDateTimeFormatOptions {
3964        locale: string;
3965        calendar: string;
3966        numberingSystem: string;
3967        timeZone: string;
3968        hour12?: boolean;
3969        weekday?: string;
3970        era?: string;
3971        year?: string;
3972        month?: string;
3973        day?: string;
3974        hour?: string;
3975        minute?: string;
3976        second?: string;
3977        timeZoneName?: string;
3978    }
3979
3980    interface DateTimeFormat {
3981        format(date?: Date | number): string;
3982        resolvedOptions(): ResolvedDateTimeFormatOptions;
3983    }
3984    var DateTimeFormat: {
3985        new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat;
3986        new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat;
3987        (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat;
3988        (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat;
3989        supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[];
3990        supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[];
3991    }
3992}
3993
3994interface String {
3995    /**
3996      * Determines whether two strings are equivalent in the current locale.
3997      * @param that String to compare to target string
3998      * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details.
3999      * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details.
4000      */
4001    localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number;
4002
4003    /**
4004      * Determines whether two strings are equivalent in the current locale.
4005      * @param that String to compare to target string
4006      * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details.
4007      * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details.
4008      */
4009    localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number;
4010}
4011
4012interface Number {
4013    /**
4014      * Converts a number to a string by using the current or specified locale.
4015      * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.
4016      * @param options An object that contains one or more properties that specify comparison options.
4017      */
4018    toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string;
4019
4020    /**
4021      * Converts a number to a string by using the current or specified locale.
4022      * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used.
4023      * @param options An object that contains one or more properties that specify comparison options.
4024      */
4025    toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string;
4026}
4027
4028interface Date {
4029    /**
4030      * Converts a date and time to a string by using the current or specified locale.
4031      * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.
4032      * @param options An object that contains one or more properties that specify comparison options.
4033      */
4034    toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string;
4035    /**
4036      * Converts a date to a string by using the current or specified locale.
4037      * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.
4038      * @param options An object that contains one or more properties that specify comparison options.
4039      */
4040    toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string;
4041
4042    /**
4043      * Converts a time to a string by using the current or specified locale.
4044      * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used.
4045      * @param options An object that contains one or more properties that specify comparison options.
4046      */
4047    toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string;
4048
4049    /**
4050      * Converts a date and time to a string by using the current or specified locale.
4051      * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used.
4052      * @param options An object that contains one or more properties that specify comparison options.
4053      */
4054    toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string;
4055
4056    /**
4057      * Converts a date to a string by using the current or specified locale.
4058      * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used.
4059      * @param options An object that contains one or more properties that specify comparison options.
4060      */
4061    toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string;
4062
4063    /**
4064      * Converts a time to a string by using the current or specified locale.
4065      * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used.
4066      * @param options An object that contains one or more properties that specify comparison options.
4067      */
4068    toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string;
4069}
4070
4071
4072/////////////////////////////
4073/// IE DOM APIs
4074/////////////////////////////
4075
4076interface Algorithm {
4077    name?: string;
4078}
4079
4080interface AriaRequestEventInit extends EventInit {
4081    attributeName?: string;
4082    attributeValue?: string;
4083}
4084
4085interface ClipboardEventInit extends EventInit {
4086    data?: string;
4087    dataType?: string;
4088}
4089
4090interface CommandEventInit extends EventInit {
4091    commandName?: string;
4092    detail?: string;
4093}
4094
4095interface CompositionEventInit extends UIEventInit {
4096    data?: string;
4097}
4098
4099interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation {
4100    arrayOfDomainStrings?: string[];
4101}
4102
4103interface CustomEventInit extends EventInit {
4104    detail?: any;
4105}
4106
4107interface DeviceAccelerationDict {
4108    x?: number;
4109    y?: number;
4110    z?: number;
4111}
4112
4113interface DeviceRotationRateDict {
4114    alpha?: number;
4115    beta?: number;
4116    gamma?: number;
4117}
4118
4119interface EventInit {
4120    bubbles?: boolean;
4121    cancelable?: boolean;
4122}
4123
4124interface ExceptionInformation {
4125    domain?: string;
4126}
4127
4128interface FocusEventInit extends UIEventInit {
4129    relatedTarget?: EventTarget;
4130}
4131
4132interface HashChangeEventInit extends EventInit {
4133    newURL?: string;
4134    oldURL?: string;
4135}
4136
4137interface KeyAlgorithm {
4138    name?: string;
4139}
4140
4141interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit {
4142    key?: string;
4143    location?: number;
4144    repeat?: boolean;
4145}
4146
4147interface MouseEventInit extends SharedKeyboardAndMouseEventInit {
4148    screenX?: number;
4149    screenY?: number;
4150    clientX?: number;
4151    clientY?: number;
4152    button?: number;
4153    buttons?: number;
4154    relatedTarget?: EventTarget;
4155}
4156
4157interface MsZoomToOptions {
4158    contentX?: number;
4159    contentY?: number;
4160    viewportX?: string;
4161    viewportY?: string;
4162    scaleFactor?: number;
4163    animate?: string;
4164}
4165
4166interface MutationObserverInit {
4167    childList?: boolean;
4168    attributes?: boolean;
4169    characterData?: boolean;
4170    subtree?: boolean;
4171    attributeOldValue?: boolean;
4172    characterDataOldValue?: boolean;
4173    attributeFilter?: string[];
4174}
4175
4176interface ObjectURLOptions {
4177    oneTimeOnly?: boolean;
4178}
4179
4180interface PointerEventInit extends MouseEventInit {
4181    pointerId?: number;
4182    width?: number;
4183    height?: number;
4184    pressure?: number;
4185    tiltX?: number;
4186    tiltY?: number;
4187    pointerType?: string;
4188    isPrimary?: boolean;
4189}
4190
4191interface PositionOptions {
4192    enableHighAccuracy?: boolean;
4193    timeout?: number;
4194    maximumAge?: number;
4195}
4196
4197interface SharedKeyboardAndMouseEventInit extends UIEventInit {
4198    ctrlKey?: boolean;
4199    shiftKey?: boolean;
4200    altKey?: boolean;
4201    metaKey?: boolean;
4202    keyModifierStateAltGraph?: boolean;
4203    keyModifierStateCapsLock?: boolean;
4204    keyModifierStateFn?: boolean;
4205    keyModifierStateFnLock?: boolean;
4206    keyModifierStateHyper?: boolean;
4207    keyModifierStateNumLock?: boolean;
4208    keyModifierStateOS?: boolean;
4209    keyModifierStateScrollLock?: boolean;
4210    keyModifierStateSuper?: boolean;
4211    keyModifierStateSymbol?: boolean;
4212    keyModifierStateSymbolLock?: boolean;
4213}
4214
4215interface StoreExceptionsInformation extends ExceptionInformation {
4216    siteName?: string;
4217    explanationString?: string;
4218    detailURI?: string;
4219}
4220
4221interface StoreSiteSpecificExceptionsInformation extends StoreExceptionsInformation {
4222    arrayOfDomainStrings?: string[];
4223}
4224
4225interface UIEventInit extends EventInit {
4226    view?: Window;
4227    detail?: number;
4228}
4229
4230interface WebGLContextAttributes {
4231    alpha?: boolean;
4232    depth?: boolean;
4233    stencil?: boolean;
4234    antialias?: boolean;
4235    premultipliedAlpha?: boolean;
4236    preserveDrawingBuffer?: boolean;
4237}
4238
4239interface WebGLContextEventInit extends EventInit {
4240    statusMessage?: string;
4241}
4242
4243interface WheelEventInit extends MouseEventInit {
4244    deltaX?: number;
4245    deltaY?: number;
4246    deltaZ?: number;
4247    deltaMode?: number;
4248}
4249
4250interface EventListener {
4251    (evt: Event): void;
4252}
4253
4254interface ANGLE_instanced_arrays {
4255    drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void;
4256    drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void;
4257    vertexAttribDivisorANGLE(index: number, divisor: number): void;
4258    VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number;
4259}
4260
4261declare var ANGLE_instanced_arrays: {
4262    prototype: ANGLE_instanced_arrays;
4263    new(): ANGLE_instanced_arrays;
4264    VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number;
4265}
4266
4267interface AnalyserNode extends AudioNode {
4268    fftSize: number;
4269    frequencyBinCount: number;
4270    maxDecibels: number;
4271    minDecibels: number;
4272    smoothingTimeConstant: number;
4273    getByteFrequencyData(array: Uint8Array): void;
4274    getByteTimeDomainData(array: Uint8Array): void;
4275    getFloatFrequencyData(array: Float32Array): void;
4276    getFloatTimeDomainData(array: Float32Array): void;
4277}
4278
4279declare var AnalyserNode: {
4280    prototype: AnalyserNode;
4281    new(): AnalyserNode;
4282}
4283
4284interface AnimationEvent extends Event {
4285    animationName: string;
4286    elapsedTime: number;
4287    initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void;
4288}
4289
4290declare var AnimationEvent: {
4291    prototype: AnimationEvent;
4292    new(): AnimationEvent;
4293}
4294
4295interface ApplicationCache extends EventTarget {
4296    oncached: (ev: Event) => any;
4297    onchecking: (ev: Event) => any;
4298    ondownloading: (ev: Event) => any;
4299    onerror: (ev: Event) => any;
4300    onnoupdate: (ev: Event) => any;
4301    onobsolete: (ev: Event) => any;
4302    onprogress: (ev: ProgressEvent) => any;
4303    onupdateready: (ev: Event) => any;
4304    status: number;
4305    abort(): void;
4306    swapCache(): void;
4307    update(): void;
4308    CHECKING: number;
4309    DOWNLOADING: number;
4310    IDLE: number;
4311    OBSOLETE: number;
4312    UNCACHED: number;
4313    UPDATEREADY: number;
4314    addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void;
4315    addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void;
4316    addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void;
4317    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
4318    addEventListener(type: "noupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
4319    addEventListener(type: "obsolete", listener: (ev: Event) => any, useCapture?: boolean): void;
4320    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
4321    addEventListener(type: "updateready", listener: (ev: Event) => any, useCapture?: boolean): void;
4322    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
4323}
4324
4325declare var ApplicationCache: {
4326    prototype: ApplicationCache;
4327    new(): ApplicationCache;
4328    CHECKING: number;
4329    DOWNLOADING: number;
4330    IDLE: number;
4331    OBSOLETE: number;
4332    UNCACHED: number;
4333    UPDATEREADY: number;
4334}
4335
4336interface AriaRequestEvent extends Event {
4337    attributeName: string;
4338    attributeValue: string;
4339}
4340
4341declare var AriaRequestEvent: {
4342    prototype: AriaRequestEvent;
4343    new(type: string, eventInitDict?: AriaRequestEventInit): AriaRequestEvent;
4344}
4345
4346interface Attr extends Node {
4347    name: string;
4348    ownerElement: Element;
4349    specified: boolean;
4350    value: string;
4351}
4352
4353declare var Attr: {
4354    prototype: Attr;
4355    new(): Attr;
4356}
4357
4358interface AudioBuffer {
4359    duration: number;
4360    length: number;
4361    numberOfChannels: number;
4362    sampleRate: number;
4363    getChannelData(channel: number): Float32Array;
4364}
4365
4366declare var AudioBuffer: {
4367    prototype: AudioBuffer;
4368    new(): AudioBuffer;
4369}
4370
4371interface AudioBufferSourceNode extends AudioNode {
4372    buffer: AudioBuffer;
4373    loop: boolean;
4374    loopEnd: number;
4375    loopStart: number;
4376    onended: (ev: Event) => any;
4377    playbackRate: AudioParam;
4378    start(when?: number, offset?: number, duration?: number): void;
4379    stop(when?: number): void;
4380    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
4381    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
4382}
4383
4384declare var AudioBufferSourceNode: {
4385    prototype: AudioBufferSourceNode;
4386    new(): AudioBufferSourceNode;
4387}
4388
4389interface AudioContext extends EventTarget {
4390    currentTime: number;
4391    destination: AudioDestinationNode;
4392    listener: AudioListener;
4393    sampleRate: number;
4394    createAnalyser(): AnalyserNode;
4395    createBiquadFilter(): BiquadFilterNode;
4396    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;
4397    createBufferSource(): AudioBufferSourceNode;
4398    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;
4399    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;
4400    createConvolver(): ConvolverNode;
4401    createDelay(maxDelayTime?: number): DelayNode;
4402    createDynamicsCompressor(): DynamicsCompressorNode;
4403    createGain(): GainNode;
4404    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;
4405    createOscillator(): OscillatorNode;
4406    createPanner(): PannerNode;
4407    createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave;
4408    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;
4409    createStereoPanner(): StereoPannerNode;
4410    createWaveShaper(): WaveShaperNode;
4411    decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void;
4412}
4413
4414declare var AudioContext: {
4415    prototype: AudioContext;
4416    new(): AudioContext;
4417}
4418
4419interface AudioDestinationNode extends AudioNode {
4420    maxChannelCount: number;
4421}
4422
4423declare var AudioDestinationNode: {
4424    prototype: AudioDestinationNode;
4425    new(): AudioDestinationNode;
4426}
4427
4428interface AudioListener {
4429    dopplerFactor: number;
4430    speedOfSound: number;
4431    setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;
4432    setPosition(x: number, y: number, z: number): void;
4433    setVelocity(x: number, y: number, z: number): void;
4434}
4435
4436declare var AudioListener: {
4437    prototype: AudioListener;
4438    new(): AudioListener;
4439}
4440
4441interface AudioNode extends EventTarget {
4442    channelCount: number;
4443    channelCountMode: string;
4444    channelInterpretation: string;
4445    context: AudioContext;
4446    numberOfInputs: number;
4447    numberOfOutputs: number;
4448    connect(destination: AudioNode, output?: number, input?: number): void;
4449    disconnect(output?: number): void;
4450}
4451
4452declare var AudioNode: {
4453    prototype: AudioNode;
4454    new(): AudioNode;
4455}
4456
4457interface AudioParam {
4458    defaultValue: number;
4459    value: number;
4460    cancelScheduledValues(startTime: number): void;
4461    exponentialRampToValueAtTime(value: number, endTime: number): void;
4462    linearRampToValueAtTime(value: number, endTime: number): void;
4463    setTargetAtTime(target: number, startTime: number, timeConstant: number): void;
4464    setValueAtTime(value: number, startTime: number): void;
4465    setValueCurveAtTime(values: Float32Array, startTime: number, duration: number): void;
4466}
4467
4468declare var AudioParam: {
4469    prototype: AudioParam;
4470    new(): AudioParam;
4471}
4472
4473interface AudioProcessingEvent extends Event {
4474    inputBuffer: AudioBuffer;
4475    outputBuffer: AudioBuffer;
4476    playbackTime: number;
4477}
4478
4479declare var AudioProcessingEvent: {
4480    prototype: AudioProcessingEvent;
4481    new(): AudioProcessingEvent;
4482}
4483
4484interface AudioTrack {
4485    enabled: boolean;
4486    id: string;
4487    kind: string;
4488    label: string;
4489    language: string;
4490    sourceBuffer: SourceBuffer;
4491}
4492
4493declare var AudioTrack: {
4494    prototype: AudioTrack;
4495    new(): AudioTrack;
4496}
4497
4498interface AudioTrackList extends EventTarget {
4499    length: number;
4500    onaddtrack: (ev: TrackEvent) => any;
4501    onchange: (ev: Event) => any;
4502    onremovetrack: (ev: TrackEvent) => any;
4503    getTrackById(id: string): AudioTrack;
4504    item(index: number): AudioTrack;
4505    addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void;
4506    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
4507    addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void;
4508    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
4509    [index: number]: AudioTrack;
4510}
4511
4512declare var AudioTrackList: {
4513    prototype: AudioTrackList;
4514    new(): AudioTrackList;
4515}
4516
4517interface BarProp {
4518    visible: boolean;
4519}
4520
4521declare var BarProp: {
4522    prototype: BarProp;
4523    new(): BarProp;
4524}
4525
4526interface BeforeUnloadEvent extends Event {
4527    returnValue: any;
4528}
4529
4530declare var BeforeUnloadEvent: {
4531    prototype: BeforeUnloadEvent;
4532    new(): BeforeUnloadEvent;
4533}
4534
4535interface BiquadFilterNode extends AudioNode {
4536    Q: AudioParam;
4537    detune: AudioParam;
4538    frequency: AudioParam;
4539    gain: AudioParam;
4540    type: string;
4541    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;
4542}
4543
4544declare var BiquadFilterNode: {
4545    prototype: BiquadFilterNode;
4546    new(): BiquadFilterNode;
4547}
4548
4549interface Blob {
4550    size: number;
4551    type: string;
4552    msClose(): void;
4553    msDetachStream(): any;
4554    slice(start?: number, end?: number, contentType?: string): Blob;
4555}
4556
4557declare var Blob: {
4558    prototype: Blob;
4559    new (blobParts?: any[], options?: BlobPropertyBag): Blob;
4560}
4561
4562interface CDATASection extends Text {
4563}
4564
4565declare var CDATASection: {
4566    prototype: CDATASection;
4567    new(): CDATASection;
4568}
4569
4570interface CSS {
4571    supports(property: string, value?: string): boolean;
4572}
4573declare var CSS: CSS;
4574
4575interface CSSConditionRule extends CSSGroupingRule {
4576    conditionText: string;
4577}
4578
4579declare var CSSConditionRule: {
4580    prototype: CSSConditionRule;
4581    new(): CSSConditionRule;
4582}
4583
4584interface CSSFontFaceRule extends CSSRule {
4585    style: CSSStyleDeclaration;
4586}
4587
4588declare var CSSFontFaceRule: {
4589    prototype: CSSFontFaceRule;
4590    new(): CSSFontFaceRule;
4591}
4592
4593interface CSSGroupingRule extends CSSRule {
4594    cssRules: CSSRuleList;
4595    deleteRule(index?: number): void;
4596    insertRule(rule: string, index?: number): number;
4597}
4598
4599declare var CSSGroupingRule: {
4600    prototype: CSSGroupingRule;
4601    new(): CSSGroupingRule;
4602}
4603
4604interface CSSImportRule extends CSSRule {
4605    href: string;
4606    media: MediaList;
4607    styleSheet: CSSStyleSheet;
4608}
4609
4610declare var CSSImportRule: {
4611    prototype: CSSImportRule;
4612    new(): CSSImportRule;
4613}
4614
4615interface CSSKeyframeRule extends CSSRule {
4616    keyText: string;
4617    style: CSSStyleDeclaration;
4618}
4619
4620declare var CSSKeyframeRule: {
4621    prototype: CSSKeyframeRule;
4622    new(): CSSKeyframeRule;
4623}
4624
4625interface CSSKeyframesRule extends CSSRule {
4626    cssRules: CSSRuleList;
4627    name: string;
4628    appendRule(rule: string): void;
4629    deleteRule(rule: string): void;
4630    findRule(rule: string): CSSKeyframeRule;
4631}
4632
4633declare var CSSKeyframesRule: {
4634    prototype: CSSKeyframesRule;
4635    new(): CSSKeyframesRule;
4636}
4637
4638interface CSSMediaRule extends CSSConditionRule {
4639    media: MediaList;
4640}
4641
4642declare var CSSMediaRule: {
4643    prototype: CSSMediaRule;
4644    new(): CSSMediaRule;
4645}
4646
4647interface CSSNamespaceRule extends CSSRule {
4648    namespaceURI: string;
4649    prefix: string;
4650}
4651
4652declare var CSSNamespaceRule: {
4653    prototype: CSSNamespaceRule;
4654    new(): CSSNamespaceRule;
4655}
4656
4657interface CSSPageRule extends CSSRule {
4658    pseudoClass: string;
4659    selector: string;
4660    selectorText: string;
4661    style: CSSStyleDeclaration;
4662}
4663
4664declare var CSSPageRule: {
4665    prototype: CSSPageRule;
4666    new(): CSSPageRule;
4667}
4668
4669interface CSSRule {
4670    cssText: string;
4671    parentRule: CSSRule;
4672    parentStyleSheet: CSSStyleSheet;
4673    type: number;
4674    CHARSET_RULE: number;
4675    FONT_FACE_RULE: number;
4676    IMPORT_RULE: number;
4677    KEYFRAMES_RULE: number;
4678    KEYFRAME_RULE: number;
4679    MEDIA_RULE: number;
4680    NAMESPACE_RULE: number;
4681    PAGE_RULE: number;
4682    STYLE_RULE: number;
4683    SUPPORTS_RULE: number;
4684    UNKNOWN_RULE: number;
4685    VIEWPORT_RULE: number;
4686}
4687
4688declare var CSSRule: {
4689    prototype: CSSRule;
4690    new(): CSSRule;
4691    CHARSET_RULE: number;
4692    FONT_FACE_RULE: number;
4693    IMPORT_RULE: number;
4694    KEYFRAMES_RULE: number;
4695    KEYFRAME_RULE: number;
4696    MEDIA_RULE: number;
4697    NAMESPACE_RULE: number;
4698    PAGE_RULE: number;
4699    STYLE_RULE: number;
4700    SUPPORTS_RULE: number;
4701    UNKNOWN_RULE: number;
4702    VIEWPORT_RULE: number;
4703}
4704
4705interface CSSRuleList {
4706    length: number;
4707    item(index: number): CSSRule;
4708    [index: number]: CSSRule;
4709}
4710
4711declare var CSSRuleList: {
4712    prototype: CSSRuleList;
4713    new(): CSSRuleList;
4714}
4715
4716interface CSSStyleDeclaration {
4717    alignContent: string;
4718    alignItems: string;
4719    alignSelf: string;
4720    alignmentBaseline: string;
4721    animation: string;
4722    animationDelay: string;
4723    animationDirection: string;
4724    animationDuration: string;
4725    animationFillMode: string;
4726    animationIterationCount: string;
4727    animationName: string;
4728    animationPlayState: string;
4729    animationTimingFunction: string;
4730    backfaceVisibility: string;
4731    background: string;
4732    backgroundAttachment: string;
4733    backgroundClip: string;
4734    backgroundColor: string;
4735    backgroundImage: string;
4736    backgroundOrigin: string;
4737    backgroundPosition: string;
4738    backgroundPositionX: string;
4739    backgroundPositionY: string;
4740    backgroundRepeat: string;
4741    backgroundSize: string;
4742    baselineShift: string;
4743    border: string;
4744    borderBottom: string;
4745    borderBottomColor: string;
4746    borderBottomLeftRadius: string;
4747    borderBottomRightRadius: string;
4748    borderBottomStyle: string;
4749    borderBottomWidth: string;
4750    borderCollapse: string;
4751    borderColor: string;
4752    borderImage: string;
4753    borderImageOutset: string;
4754    borderImageRepeat: string;
4755    borderImageSlice: string;
4756    borderImageSource: string;
4757    borderImageWidth: string;
4758    borderLeft: string;
4759    borderLeftColor: string;
4760    borderLeftStyle: string;
4761    borderLeftWidth: string;
4762    borderRadius: string;
4763    borderRight: string;
4764    borderRightColor: string;
4765    borderRightStyle: string;
4766    borderRightWidth: string;
4767    borderSpacing: string;
4768    borderStyle: string;
4769    borderTop: string;
4770    borderTopColor: string;
4771    borderTopLeftRadius: string;
4772    borderTopRightRadius: string;
4773    borderTopStyle: string;
4774    borderTopWidth: string;
4775    borderWidth: string;
4776    bottom: string;
4777    boxShadow: string;
4778    boxSizing: string;
4779    breakAfter: string;
4780    breakBefore: string;
4781    breakInside: string;
4782    captionSide: string;
4783    clear: string;
4784    clip: string;
4785    clipPath: string;
4786    clipRule: string;
4787    color: string;
4788    colorInterpolationFilters: string;
4789    columnCount: any;
4790    columnFill: string;
4791    columnGap: any;
4792    columnRule: string;
4793    columnRuleColor: any;
4794    columnRuleStyle: string;
4795    columnRuleWidth: any;
4796    columnSpan: string;
4797    columnWidth: any;
4798    columns: string;
4799    content: string;
4800    counterIncrement: string;
4801    counterReset: string;
4802    cssFloat: string;
4803    cssText: string;
4804    cursor: string;
4805    direction: string;
4806    display: string;
4807    dominantBaseline: string;
4808    emptyCells: string;
4809    enableBackground: string;
4810    fill: string;
4811    fillOpacity: string;
4812    fillRule: string;
4813    filter: string;
4814    flex: string;
4815    flexBasis: string;
4816    flexDirection: string;
4817    flexFlow: string;
4818    flexGrow: string;
4819    flexShrink: string;
4820    flexWrap: string;
4821    floodColor: string;
4822    floodOpacity: string;
4823    font: string;
4824    fontFamily: string;
4825    fontFeatureSettings: string;
4826    fontSize: string;
4827    fontSizeAdjust: string;
4828    fontStretch: string;
4829    fontStyle: string;
4830    fontVariant: string;
4831    fontWeight: string;
4832    glyphOrientationHorizontal: string;
4833    glyphOrientationVertical: string;
4834    height: string;
4835    imeMode: string;
4836    justifyContent: string;
4837    kerning: string;
4838    left: string;
4839    length: number;
4840    letterSpacing: string;
4841    lightingColor: string;
4842    lineHeight: string;
4843    listStyle: string;
4844    listStyleImage: string;
4845    listStylePosition: string;
4846    listStyleType: string;
4847    margin: string;
4848    marginBottom: string;
4849    marginLeft: string;
4850    marginRight: string;
4851    marginTop: string;
4852    marker: string;
4853    markerEnd: string;
4854    markerMid: string;
4855    markerStart: string;
4856    mask: string;
4857    maxHeight: string;
4858    maxWidth: string;
4859    minHeight: string;
4860    minWidth: string;
4861    msContentZoomChaining: string;
4862    msContentZoomLimit: string;
4863    msContentZoomLimitMax: any;
4864    msContentZoomLimitMin: any;
4865    msContentZoomSnap: string;
4866    msContentZoomSnapPoints: string;
4867    msContentZoomSnapType: string;
4868    msContentZooming: string;
4869    msFlowFrom: string;
4870    msFlowInto: string;
4871    msFontFeatureSettings: string;
4872    msGridColumn: any;
4873    msGridColumnAlign: string;
4874    msGridColumnSpan: any;
4875    msGridColumns: string;
4876    msGridRow: any;
4877    msGridRowAlign: string;
4878    msGridRowSpan: any;
4879    msGridRows: string;
4880    msHighContrastAdjust: string;
4881    msHyphenateLimitChars: string;
4882    msHyphenateLimitLines: any;
4883    msHyphenateLimitZone: any;
4884    msHyphens: string;
4885    msImeAlign: string;
4886    msOverflowStyle: string;
4887    msScrollChaining: string;
4888    msScrollLimit: string;
4889    msScrollLimitXMax: any;
4890    msScrollLimitXMin: any;
4891    msScrollLimitYMax: any;
4892    msScrollLimitYMin: any;
4893    msScrollRails: string;
4894    msScrollSnapPointsX: string;
4895    msScrollSnapPointsY: string;
4896    msScrollSnapType: string;
4897    msScrollSnapX: string;
4898    msScrollSnapY: string;
4899    msScrollTranslation: string;
4900    msTextCombineHorizontal: string;
4901    msTextSizeAdjust: any;
4902    msTouchAction: string;
4903    msTouchSelect: string;
4904    msUserSelect: string;
4905    msWrapFlow: string;
4906    msWrapMargin: any;
4907    msWrapThrough: string;
4908    opacity: string;
4909    order: string;
4910    orphans: string;
4911    outline: string;
4912    outlineColor: string;
4913    outlineStyle: string;
4914    outlineWidth: string;
4915    overflow: string;
4916    overflowX: string;
4917    overflowY: string;
4918    padding: string;
4919    paddingBottom: string;
4920    paddingLeft: string;
4921    paddingRight: string;
4922    paddingTop: string;
4923    pageBreakAfter: string;
4924    pageBreakBefore: string;
4925    pageBreakInside: string;
4926    parentRule: CSSRule;
4927    perspective: string;
4928    perspectiveOrigin: string;
4929    pointerEvents: string;
4930    position: string;
4931    quotes: string;
4932    right: string;
4933    rubyAlign: string;
4934    rubyOverhang: string;
4935    rubyPosition: string;
4936    stopColor: string;
4937    stopOpacity: string;
4938    stroke: string;
4939    strokeDasharray: string;
4940    strokeDashoffset: string;
4941    strokeLinecap: string;
4942    strokeLinejoin: string;
4943    strokeMiterlimit: string;
4944    strokeOpacity: string;
4945    strokeWidth: string;
4946    tableLayout: string;
4947    textAlign: string;
4948    textAlignLast: string;
4949    textAnchor: string;
4950    textDecoration: string;
4951    textFillColor: string;
4952    textIndent: string;
4953    textJustify: string;
4954    textKashida: string;
4955    textKashidaSpace: string;
4956    textOverflow: string;
4957    textShadow: string;
4958    textTransform: string;
4959    textUnderlinePosition: string;
4960    top: string;
4961    touchAction: string;
4962    transform: string;
4963    transformOrigin: string;
4964    transformStyle: string;
4965    transition: string;
4966    transitionDelay: string;
4967    transitionDuration: string;
4968    transitionProperty: string;
4969    transitionTimingFunction: string;
4970    unicodeBidi: string;
4971    verticalAlign: string;
4972    visibility: string;
4973    webkitAlignContent: string;
4974    webkitAlignItems: string;
4975    webkitAlignSelf: string;
4976    webkitAnimation: string;
4977    webkitAnimationDelay: string;
4978    webkitAnimationDirection: string;
4979    webkitAnimationDuration: string;
4980    webkitAnimationFillMode: string;
4981    webkitAnimationIterationCount: string;
4982    webkitAnimationName: string;
4983    webkitAnimationPlayState: string;
4984    webkitAnimationTimingFunction: string;
4985    webkitAppearance: string;
4986    webkitBackfaceVisibility: string;
4987    webkitBackground: string;
4988    webkitBackgroundAttachment: string;
4989    webkitBackgroundClip: string;
4990    webkitBackgroundColor: string;
4991    webkitBackgroundImage: string;
4992    webkitBackgroundOrigin: string;
4993    webkitBackgroundPosition: string;
4994    webkitBackgroundPositionX: string;
4995    webkitBackgroundPositionY: string;
4996    webkitBackgroundRepeat: string;
4997    webkitBackgroundSize: string;
4998    webkitBorderBottomLeftRadius: string;
4999    webkitBorderBottomRightRadius: string;
5000    webkitBorderImage: string;
5001    webkitBorderImageOutset: string;
5002    webkitBorderImageRepeat: string;
5003    webkitBorderImageSlice: string;
5004    webkitBorderImageSource: string;
5005    webkitBorderImageWidth: string;
5006    webkitBorderRadius: string;
5007    webkitBorderTopLeftRadius: string;
5008    webkitBorderTopRightRadius: string;
5009    webkitBoxAlign: string;
5010    webkitBoxDirection: string;
5011    webkitBoxFlex: string;
5012    webkitBoxOrdinalGroup: string;
5013    webkitBoxOrient: string;
5014    webkitBoxPack: string;
5015    webkitBoxSizing: string;
5016    webkitColumnBreakAfter: string;
5017    webkitColumnBreakBefore: string;
5018    webkitColumnBreakInside: string;
5019    webkitColumnCount: any;
5020    webkitColumnGap: any;
5021    webkitColumnRule: string;
5022    webkitColumnRuleColor: any;
5023    webkitColumnRuleStyle: string;
5024    webkitColumnRuleWidth: any;
5025    webkitColumnSpan: string;
5026    webkitColumnWidth: any;
5027    webkitColumns: string;
5028    webkitFilter: string;
5029    webkitFlex: string;
5030    webkitFlexBasis: string;
5031    webkitFlexDirection: string;
5032    webkitFlexFlow: string;
5033    webkitFlexGrow: string;
5034    webkitFlexShrink: string;
5035    webkitFlexWrap: string;
5036    webkitJustifyContent: string;
5037    webkitOrder: string;
5038    webkitPerspective: string;
5039    webkitPerspectiveOrigin: string;
5040    webkitTapHighlightColor: string;
5041    webkitTextFillColor: string;
5042    webkitTextSizeAdjust: any;
5043    webkitTransform: string;
5044    webkitTransformOrigin: string;
5045    webkitTransformStyle: string;
5046    webkitTransition: string;
5047    webkitTransitionDelay: string;
5048    webkitTransitionDuration: string;
5049    webkitTransitionProperty: string;
5050    webkitTransitionTimingFunction: string;
5051    webkitUserSelect: string;
5052    webkitWritingMode: string;
5053    whiteSpace: string;
5054    widows: string;
5055    width: string;
5056    wordBreak: string;
5057    wordSpacing: string;
5058    wordWrap: string;
5059    writingMode: string;
5060    zIndex: string;
5061    zoom: string;
5062    getPropertyPriority(propertyName: string): string;
5063    getPropertyValue(propertyName: string): string;
5064    item(index: number): string;
5065    removeProperty(propertyName: string): string;
5066    setProperty(propertyName: string, value: string, priority?: string): void;
5067    [index: number]: string;
5068}
5069
5070declare var CSSStyleDeclaration: {
5071    prototype: CSSStyleDeclaration;
5072    new(): CSSStyleDeclaration;
5073}
5074
5075interface CSSStyleRule extends CSSRule {
5076    readOnly: boolean;
5077    selectorText: string;
5078    style: CSSStyleDeclaration;
5079}
5080
5081declare var CSSStyleRule: {
5082    prototype: CSSStyleRule;
5083    new(): CSSStyleRule;
5084}
5085
5086interface CSSStyleSheet extends StyleSheet {
5087    cssRules: CSSRuleList;
5088    cssText: string;
5089    href: string;
5090    id: string;
5091    imports: StyleSheetList;
5092    isAlternate: boolean;
5093    isPrefAlternate: boolean;
5094    ownerRule: CSSRule;
5095    owningElement: Element;
5096    pages: StyleSheetPageList;
5097    readOnly: boolean;
5098    rules: CSSRuleList;
5099    addImport(bstrURL: string, lIndex?: number): number;
5100    addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number;
5101    addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number;
5102    deleteRule(index?: number): void;
5103    insertRule(rule: string, index?: number): number;
5104    removeImport(lIndex: number): void;
5105    removeRule(lIndex: number): void;
5106}
5107
5108declare var CSSStyleSheet: {
5109    prototype: CSSStyleSheet;
5110    new(): CSSStyleSheet;
5111}
5112
5113interface CSSSupportsRule extends CSSConditionRule {
5114}
5115
5116declare var CSSSupportsRule: {
5117    prototype: CSSSupportsRule;
5118    new(): CSSSupportsRule;
5119}
5120
5121interface CanvasGradient {
5122    addColorStop(offset: number, color: string): void;
5123}
5124
5125declare var CanvasGradient: {
5126    prototype: CanvasGradient;
5127    new(): CanvasGradient;
5128}
5129
5130interface CanvasPattern {
5131}
5132
5133declare var CanvasPattern: {
5134    prototype: CanvasPattern;
5135    new(): CanvasPattern;
5136}
5137
5138interface CanvasRenderingContext2D {
5139    canvas: HTMLCanvasElement;
5140    fillStyle: string | CanvasGradient | CanvasPattern;
5141    font: string;
5142    globalAlpha: number;
5143    globalCompositeOperation: string;
5144    lineCap: string;
5145    lineDashOffset: number;
5146    lineJoin: string;
5147    lineWidth: number;
5148    miterLimit: number;
5149    msFillRule: string;
5150    msImageSmoothingEnabled: boolean;
5151    shadowBlur: number;
5152    shadowColor: string;
5153    shadowOffsetX: number;
5154    shadowOffsetY: number;
5155    strokeStyle: string | CanvasGradient | CanvasPattern;
5156    textAlign: string;
5157    textBaseline: string;
5158    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
5159    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
5160    beginPath(): void;
5161    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
5162    clearRect(x: number, y: number, w: number, h: number): void;
5163    clip(fillRule?: string): void;
5164    closePath(): void;
5165    createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData;
5166    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
5167    createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern;
5168    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
5169    drawImage(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, offsetX: number, offsetY: number, width?: number, height?: number, canvasOffsetX?: number, canvasOffsetY?: number, canvasImageWidth?: number, canvasImageHeight?: number): void;
5170    fill(fillRule?: string): void;
5171    fillRect(x: number, y: number, w: number, h: number): void;
5172    fillText(text: string, x: number, y: number, maxWidth?: number): void;
5173    getImageData(sx: number, sy: number, sw: number, sh: number): ImageData;
5174    getLineDash(): number[];
5175    isPointInPath(x: number, y: number, fillRule?: string): boolean;
5176    lineTo(x: number, y: number): void;
5177    measureText(text: string): TextMetrics;
5178    moveTo(x: number, y: number): void;
5179    putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void;
5180    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
5181    rect(x: number, y: number, w: number, h: number): void;
5182    restore(): void;
5183    rotate(angle: number): void;
5184    save(): void;
5185    scale(x: number, y: number): void;
5186    setLineDash(segments: number[]): void;
5187    setTransform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;
5188    stroke(): void;
5189    strokeRect(x: number, y: number, w: number, h: number): void;
5190    strokeText(text: string, x: number, y: number, maxWidth?: number): void;
5191    transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;
5192    translate(x: number, y: number): void;
5193}
5194
5195declare var CanvasRenderingContext2D: {
5196    prototype: CanvasRenderingContext2D;
5197    new(): CanvasRenderingContext2D;
5198}
5199
5200interface ChannelMergerNode extends AudioNode {
5201}
5202
5203declare var ChannelMergerNode: {
5204    prototype: ChannelMergerNode;
5205    new(): ChannelMergerNode;
5206}
5207
5208interface ChannelSplitterNode extends AudioNode {
5209}
5210
5211declare var ChannelSplitterNode: {
5212    prototype: ChannelSplitterNode;
5213    new(): ChannelSplitterNode;
5214}
5215
5216interface CharacterData extends Node, ChildNode {
5217    data: string;
5218    length: number;
5219    appendData(arg: string): void;
5220    deleteData(offset: number, count: number): void;
5221    insertData(offset: number, arg: string): void;
5222    replaceData(offset: number, count: number, arg: string): void;
5223    substringData(offset: number, count: number): string;
5224    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
5225}
5226
5227declare var CharacterData: {
5228    prototype: CharacterData;
5229    new(): CharacterData;
5230}
5231
5232interface ClientRect {
5233    bottom: number;
5234    height: number;
5235    left: number;
5236    right: number;
5237    top: number;
5238    width: number;
5239}
5240
5241declare var ClientRect: {
5242    prototype: ClientRect;
5243    new(): ClientRect;
5244}
5245
5246interface ClientRectList {
5247    length: number;
5248    item(index: number): ClientRect;
5249    [index: number]: ClientRect;
5250}
5251
5252declare var ClientRectList: {
5253    prototype: ClientRectList;
5254    new(): ClientRectList;
5255}
5256
5257interface ClipboardEvent extends Event {
5258    clipboardData: DataTransfer;
5259}
5260
5261declare var ClipboardEvent: {
5262    prototype: ClipboardEvent;
5263    new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;
5264}
5265
5266interface CloseEvent extends Event {
5267    code: number;
5268    reason: string;
5269    wasClean: boolean;
5270    initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void;
5271}
5272
5273declare var CloseEvent: {
5274    prototype: CloseEvent;
5275    new(): CloseEvent;
5276}
5277
5278interface CommandEvent extends Event {
5279    commandName: string;
5280    detail: string;
5281}
5282
5283declare var CommandEvent: {
5284    prototype: CommandEvent;
5285    new(type: string, eventInitDict?: CommandEventInit): CommandEvent;
5286}
5287
5288interface Comment extends CharacterData {
5289    text: string;
5290}
5291
5292declare var Comment: {
5293    prototype: Comment;
5294    new(): Comment;
5295}
5296
5297interface CompositionEvent extends UIEvent {
5298    data: string;
5299    locale: string;
5300    initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void;
5301}
5302
5303declare var CompositionEvent: {
5304    prototype: CompositionEvent;
5305    new(typeArg: string, eventInitDict?: CompositionEventInit): CompositionEvent;
5306}
5307
5308interface Console {
5309    assert(test?: boolean, message?: string, ...optionalParams: any[]): void;
5310    clear(): void;
5311    count(countTitle?: string): void;
5312    debug(message?: string, ...optionalParams: any[]): void;
5313    dir(value?: any, ...optionalParams: any[]): void;
5314    dirxml(value: any): void;
5315    error(message?: any, ...optionalParams: any[]): void;
5316    group(groupTitle?: string): void;
5317    groupCollapsed(groupTitle?: string): void;
5318    groupEnd(): void;
5319    info(message?: any, ...optionalParams: any[]): void;
5320    log(message?: any, ...optionalParams: any[]): void;
5321    msIsIndependentlyComposed(element: Element): boolean;
5322    profile(reportName?: string): void;
5323    profileEnd(): void;
5324    select(element: Element): void;
5325    time(timerName?: string): void;
5326    timeEnd(timerName?: string): void;
5327    trace(): void;
5328    warn(message?: any, ...optionalParams: any[]): void;
5329}
5330
5331declare var Console: {
5332    prototype: Console;
5333    new(): Console;
5334}
5335
5336interface ConvolverNode extends AudioNode {
5337    buffer: AudioBuffer;
5338    normalize: boolean;
5339}
5340
5341declare var ConvolverNode: {
5342    prototype: ConvolverNode;
5343    new(): ConvolverNode;
5344}
5345
5346interface Coordinates {
5347    accuracy: number;
5348    altitude: number;
5349    altitudeAccuracy: number;
5350    heading: number;
5351    latitude: number;
5352    longitude: number;
5353    speed: number;
5354}
5355
5356declare var Coordinates: {
5357    prototype: Coordinates;
5358    new(): Coordinates;
5359}
5360
5361interface Crypto extends Object, RandomSource {
5362    subtle: SubtleCrypto;
5363}
5364
5365declare var Crypto: {
5366    prototype: Crypto;
5367    new(): Crypto;
5368}
5369
5370interface CryptoKey {
5371    algorithm: KeyAlgorithm;
5372    extractable: boolean;
5373    type: string;
5374    usages: string[];
5375}
5376
5377declare var CryptoKey: {
5378    prototype: CryptoKey;
5379    new(): CryptoKey;
5380}
5381
5382interface CryptoKeyPair {
5383    privateKey: CryptoKey;
5384    publicKey: CryptoKey;
5385}
5386
5387declare var CryptoKeyPair: {
5388    prototype: CryptoKeyPair;
5389    new(): CryptoKeyPair;
5390}
5391
5392interface CustomEvent extends Event {
5393    detail: any;
5394    initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void;
5395}
5396
5397declare var CustomEvent: {
5398    prototype: CustomEvent;
5399    new(typeArg: string, eventInitDict?: CustomEventInit): CustomEvent;
5400}
5401
5402interface DOMError {
5403    name: string;
5404    toString(): string;
5405}
5406
5407declare var DOMError: {
5408    prototype: DOMError;
5409    new(): DOMError;
5410}
5411
5412interface DOMException {
5413    code: number;
5414    message: string;
5415    name: string;
5416    toString(): string;
5417    ABORT_ERR: number;
5418    DATA_CLONE_ERR: number;
5419    DOMSTRING_SIZE_ERR: number;
5420    HIERARCHY_REQUEST_ERR: number;
5421    INDEX_SIZE_ERR: number;
5422    INUSE_ATTRIBUTE_ERR: number;
5423    INVALID_ACCESS_ERR: number;
5424    INVALID_CHARACTER_ERR: number;
5425    INVALID_MODIFICATION_ERR: number;
5426    INVALID_NODE_TYPE_ERR: number;
5427    INVALID_STATE_ERR: number;
5428    NAMESPACE_ERR: number;
5429    NETWORK_ERR: number;
5430    NOT_FOUND_ERR: number;
5431    NOT_SUPPORTED_ERR: number;
5432    NO_DATA_ALLOWED_ERR: number;
5433    NO_MODIFICATION_ALLOWED_ERR: number;
5434    PARSE_ERR: number;
5435    QUOTA_EXCEEDED_ERR: number;
5436    SECURITY_ERR: number;
5437    SERIALIZE_ERR: number;
5438    SYNTAX_ERR: number;
5439    TIMEOUT_ERR: number;
5440    TYPE_MISMATCH_ERR: number;
5441    URL_MISMATCH_ERR: number;
5442    VALIDATION_ERR: number;
5443    WRONG_DOCUMENT_ERR: number;
5444}
5445
5446declare var DOMException: {
5447    prototype: DOMException;
5448    new(): DOMException;
5449    ABORT_ERR: number;
5450    DATA_CLONE_ERR: number;
5451    DOMSTRING_SIZE_ERR: number;
5452    HIERARCHY_REQUEST_ERR: number;
5453    INDEX_SIZE_ERR: number;
5454    INUSE_ATTRIBUTE_ERR: number;
5455    INVALID_ACCESS_ERR: number;
5456    INVALID_CHARACTER_ERR: number;
5457    INVALID_MODIFICATION_ERR: number;
5458    INVALID_NODE_TYPE_ERR: number;
5459    INVALID_STATE_ERR: number;
5460    NAMESPACE_ERR: number;
5461    NETWORK_ERR: number;
5462    NOT_FOUND_ERR: number;
5463    NOT_SUPPORTED_ERR: number;
5464    NO_DATA_ALLOWED_ERR: number;
5465    NO_MODIFICATION_ALLOWED_ERR: number;
5466    PARSE_ERR: number;
5467    QUOTA_EXCEEDED_ERR: number;
5468    SECURITY_ERR: number;
5469    SERIALIZE_ERR: number;
5470    SYNTAX_ERR: number;
5471    TIMEOUT_ERR: number;
5472    TYPE_MISMATCH_ERR: number;
5473    URL_MISMATCH_ERR: number;
5474    VALIDATION_ERR: number;
5475    WRONG_DOCUMENT_ERR: number;
5476}
5477
5478interface DOMImplementation {
5479    createDocument(namespaceURI: string, qualifiedName: string, doctype: DocumentType): Document;
5480    createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;
5481    createHTMLDocument(title: string): Document;
5482    hasFeature(feature: string, version: string): boolean;
5483}
5484
5485declare var DOMImplementation: {
5486    prototype: DOMImplementation;
5487    new(): DOMImplementation;
5488}
5489
5490interface DOMParser {
5491    parseFromString(source: string, mimeType: string): Document;
5492}
5493
5494declare var DOMParser: {
5495    prototype: DOMParser;
5496    new(): DOMParser;
5497}
5498
5499interface DOMSettableTokenList extends DOMTokenList {
5500    value: string;
5501}
5502
5503declare var DOMSettableTokenList: {
5504    prototype: DOMSettableTokenList;
5505    new(): DOMSettableTokenList;
5506}
5507
5508interface DOMStringList {
5509    length: number;
5510    contains(str: string): boolean;
5511    item(index: number): string;
5512    [index: number]: string;
5513}
5514
5515declare var DOMStringList: {
5516    prototype: DOMStringList;
5517    new(): DOMStringList;
5518}
5519
5520interface DOMStringMap {
5521    [name: string]: string;
5522}
5523
5524declare var DOMStringMap: {
5525    prototype: DOMStringMap;
5526    new(): DOMStringMap;
5527}
5528
5529interface DOMTokenList {
5530    length: number;
5531    add(...token: string[]): void;
5532    contains(token: string): boolean;
5533    item(index: number): string;
5534    remove(...token: string[]): void;
5535    toString(): string;
5536    toggle(token: string, force?: boolean): boolean;
5537    [index: number]: string;
5538}
5539
5540declare var DOMTokenList: {
5541    prototype: DOMTokenList;
5542    new(): DOMTokenList;
5543}
5544
5545interface DataCue extends TextTrackCue {
5546    data: ArrayBuffer;
5547}
5548
5549declare var DataCue: {
5550    prototype: DataCue;
5551    new(): DataCue;
5552}
5553
5554interface DataTransfer {
5555    dropEffect: string;
5556    effectAllowed: string;
5557    files: FileList;
5558    items: DataTransferItemList;
5559    types: DOMStringList;
5560    clearData(format?: string): boolean;
5561    getData(format: string): string;
5562    setData(format: string, data: string): boolean;
5563}
5564
5565declare var DataTransfer: {
5566    prototype: DataTransfer;
5567    new(): DataTransfer;
5568}
5569
5570interface DataTransferItem {
5571    kind: string;
5572    type: string;
5573    getAsFile(): File;
5574    getAsString(_callback: FunctionStringCallback): void;
5575}
5576
5577declare var DataTransferItem: {
5578    prototype: DataTransferItem;
5579    new(): DataTransferItem;
5580}
5581
5582interface DataTransferItemList {
5583    length: number;
5584    add(data: File): DataTransferItem;
5585    clear(): void;
5586    item(index: number): File;
5587    remove(index: number): void;
5588    [index: number]: File;
5589}
5590
5591declare var DataTransferItemList: {
5592    prototype: DataTransferItemList;
5593    new(): DataTransferItemList;
5594}
5595
5596interface DeferredPermissionRequest {
5597    id: number;
5598    type: string;
5599    uri: string;
5600    allow(): void;
5601    deny(): void;
5602}
5603
5604declare var DeferredPermissionRequest: {
5605    prototype: DeferredPermissionRequest;
5606    new(): DeferredPermissionRequest;
5607}
5608
5609interface DelayNode extends AudioNode {
5610    delayTime: AudioParam;
5611}
5612
5613declare var DelayNode: {
5614    prototype: DelayNode;
5615    new(): DelayNode;
5616}
5617
5618interface DeviceAcceleration {
5619    x: number;
5620    y: number;
5621    z: number;
5622}
5623
5624declare var DeviceAcceleration: {
5625    prototype: DeviceAcceleration;
5626    new(): DeviceAcceleration;
5627}
5628
5629interface DeviceMotionEvent extends Event {
5630    acceleration: DeviceAcceleration;
5631    accelerationIncludingGravity: DeviceAcceleration;
5632    interval: number;
5633    rotationRate: DeviceRotationRate;
5634    initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void;
5635}
5636
5637declare var DeviceMotionEvent: {
5638    prototype: DeviceMotionEvent;
5639    new(): DeviceMotionEvent;
5640}
5641
5642interface DeviceOrientationEvent extends Event {
5643    absolute: boolean;
5644    alpha: number;
5645    beta: number;
5646    gamma: number;
5647    initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void;
5648}
5649
5650declare var DeviceOrientationEvent: {
5651    prototype: DeviceOrientationEvent;
5652    new(): DeviceOrientationEvent;
5653}
5654
5655interface DeviceRotationRate {
5656    alpha: number;
5657    beta: number;
5658    gamma: number;
5659}
5660
5661declare var DeviceRotationRate: {
5662    prototype: DeviceRotationRate;
5663    new(): DeviceRotationRate;
5664}
5665
5666interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEvent {
5667    /**
5668      * Sets or gets the URL for the current document.
5669      */
5670    URL: string;
5671    /**
5672      * Gets the URL for the document, stripped of any character encoding.
5673      */
5674    URLUnencoded: string;
5675    /**
5676      * Gets the object that has the focus when the parent document has focus.
5677      */
5678    activeElement: Element;
5679    /**
5680      * Sets or gets the color of all active links in the document.
5681      */
5682    alinkColor: string;
5683    /**
5684      * Returns a reference to the collection of elements contained by the object.
5685      */
5686    all: HTMLCollection;
5687    /**
5688      * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.
5689      */
5690    anchors: HTMLCollection;
5691    /**
5692      * Retrieves a collection of all applet objects in the document.
5693      */
5694    applets: HTMLCollection;
5695    /**
5696      * Deprecated. Sets or retrieves a value that indicates the background color behind the object.
5697      */
5698    bgColor: string;
5699    /**
5700      * Specifies the beginning and end of the document body.
5701      */
5702    body: HTMLElement;
5703    characterSet: string;
5704    /**
5705      * Gets or sets the character set used to encode the object.
5706      */
5707    charset: string;
5708    /**
5709      * Gets a value that indicates whether standards-compliant mode is switched on for the object.
5710      */
5711    compatMode: string;
5712    cookie: string;
5713    /**
5714      * Gets the default character set from the current regional language settings.
5715      */
5716    defaultCharset: string;
5717    defaultView: Window;
5718    /**
5719      * Sets or gets a value that indicates whether the document can be edited.
5720      */
5721    designMode: string;
5722    /**
5723      * Sets or retrieves a value that indicates the reading order of the object.
5724      */
5725    dir: string;
5726    /**
5727      * Gets an object representing the document type declaration associated with the current document.
5728      */
5729    doctype: DocumentType;
5730    /**
5731      * Gets a reference to the root node of the document.
5732      */
5733    documentElement: HTMLElement;
5734    /**
5735      * Sets or gets the security domain of the document.
5736      */
5737    domain: string;
5738    /**
5739      * Retrieves a collection of all embed objects in the document.
5740      */
5741    embeds: HTMLCollection;
5742    /**
5743      * Sets or gets the foreground (text) color of the document.
5744      */
5745    fgColor: string;
5746    /**
5747      * Retrieves a collection, in source order, of all form objects in the document.
5748      */
5749    forms: HTMLCollection;
5750    fullscreenElement: Element;
5751    fullscreenEnabled: boolean;
5752    head: HTMLHeadElement;
5753    hidden: boolean;
5754    /**
5755      * Retrieves a collection, in source order, of img objects in the document.
5756      */
5757    images: HTMLCollection;
5758    /**
5759      * Gets the implementation object of the current document.
5760      */
5761    implementation: DOMImplementation;
5762    /**
5763      * Returns the character encoding used to create the webpage that is loaded into the document object.
5764      */
5765    inputEncoding: string;
5766    /**
5767      * Gets the date that the page was last modified, if the page supplies one.
5768      */
5769    lastModified: string;
5770    /**
5771      * Sets or gets the color of the document links.
5772      */
5773    linkColor: string;
5774    /**
5775      * Retrieves a collection of all a objects that specify the href property and all area objects in the document.
5776      */
5777    links: HTMLCollection;
5778    /**
5779      * Contains information about the current URL.
5780      */
5781    location: Location;
5782    media: string;
5783    msCSSOMElementFloatMetrics: boolean;
5784    msCapsLockWarningOff: boolean;
5785    msHidden: boolean;
5786    msVisibilityState: string;
5787    /**
5788      * Fires when the user aborts the download.
5789      * @param ev The event.
5790      */
5791    onabort: (ev: Event) => any;
5792    /**
5793      * Fires when the object is set as the active element.
5794      * @param ev The event.
5795      */
5796    onactivate: (ev: UIEvent) => any;
5797    /**
5798      * Fires immediately before the object is set as the active element.
5799      * @param ev The event.
5800      */
5801    onbeforeactivate: (ev: UIEvent) => any;
5802    /**
5803      * Fires immediately before the activeElement is changed from the current object to another object in the parent document.
5804      * @param ev The event.
5805      */
5806    onbeforedeactivate: (ev: UIEvent) => any;
5807    /**
5808      * Fires when the object loses the input focus.
5809      * @param ev The focus event.
5810      */
5811    onblur: (ev: FocusEvent) => any;
5812    /**
5813      * Occurs when playback is possible, but would require further buffering.
5814      * @param ev The event.
5815      */
5816    oncanplay: (ev: Event) => any;
5817    oncanplaythrough: (ev: Event) => any;
5818    /**
5819      * Fires when the contents of the object or selection have changed.
5820      * @param ev The event.
5821      */
5822    onchange: (ev: Event) => any;
5823    /**
5824      * Fires when the user clicks the left mouse button on the object
5825      * @param ev The mouse event.
5826      */
5827    onclick: (ev: MouseEvent) => any;
5828    /**
5829      * Fires when the user clicks the right mouse button in the client area, opening the context menu.
5830      * @param ev The mouse event.
5831      */
5832    oncontextmenu: (ev: PointerEvent) => any;
5833    /**
5834      * Fires when the user double-clicks the object.
5835      * @param ev The mouse event.
5836      */
5837    ondblclick: (ev: MouseEvent) => any;
5838    /**
5839      * Fires when the activeElement is changed from the current object to another object in the parent document.
5840      * @param ev The UI Event
5841      */
5842    ondeactivate: (ev: UIEvent) => any;
5843    /**
5844      * Fires on the source object continuously during a drag operation.
5845      * @param ev The event.
5846      */
5847    ondrag: (ev: DragEvent) => any;
5848    /**
5849      * Fires on the source object when the user releases the mouse at the close of a drag operation.
5850      * @param ev The event.
5851      */
5852    ondragend: (ev: DragEvent) => any;
5853    /**
5854      * Fires on the target element when the user drags the object to a valid drop target.
5855      * @param ev The drag event.
5856      */
5857    ondragenter: (ev: DragEvent) => any;
5858    /**
5859      * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
5860      * @param ev The drag event.
5861      */
5862    ondragleave: (ev: DragEvent) => any;
5863    /**
5864      * Fires on the target element continuously while the user drags the object over a valid drop target.
5865      * @param ev The event.
5866      */
5867    ondragover: (ev: DragEvent) => any;
5868    /**
5869      * Fires on the source object when the user starts to drag a text selection or selected object.
5870      * @param ev The event.
5871      */
5872    ondragstart: (ev: DragEvent) => any;
5873    ondrop: (ev: DragEvent) => any;
5874    /**
5875      * Occurs when the duration attribute is updated.
5876      * @param ev The event.
5877      */
5878    ondurationchange: (ev: Event) => any;
5879    /**
5880      * Occurs when the media element is reset to its initial state.
5881      * @param ev The event.
5882      */
5883    onemptied: (ev: Event) => any;
5884    /**
5885      * Occurs when the end of playback is reached.
5886      * @param ev The event
5887      */
5888    onended: (ev: Event) => any;
5889    /**
5890      * Fires when an error occurs during object loading.
5891      * @param ev The event.
5892      */
5893    onerror: (ev: Event) => any;
5894    /**
5895      * Fires when the object receives focus.
5896      * @param ev The event.
5897      */
5898    onfocus: (ev: FocusEvent) => any;
5899    onfullscreenchange: (ev: Event) => any;
5900    onfullscreenerror: (ev: Event) => any;
5901    oninput: (ev: Event) => any;
5902    /**
5903      * Fires when the user presses a key.
5904      * @param ev The keyboard event
5905      */
5906    onkeydown: (ev: KeyboardEvent) => any;
5907    /**
5908      * Fires when the user presses an alphanumeric key.
5909      * @param ev The event.
5910      */
5911    onkeypress: (ev: KeyboardEvent) => any;
5912    /**
5913      * Fires when the user releases a key.
5914      * @param ev The keyboard event
5915      */
5916    onkeyup: (ev: KeyboardEvent) => any;
5917    /**
5918      * Fires immediately after the browser loads the object.
5919      * @param ev The event.
5920      */
5921    onload: (ev: Event) => any;
5922    /**
5923      * Occurs when media data is loaded at the current playback position.
5924      * @param ev The event.
5925      */
5926    onloadeddata: (ev: Event) => any;
5927    /**
5928      * Occurs when the duration and dimensions of the media have been determined.
5929      * @param ev The event.
5930      */
5931    onloadedmetadata: (ev: Event) => any;
5932    /**
5933      * Occurs when Internet Explorer begins looking for media data.
5934      * @param ev The event.
5935      */
5936    onloadstart: (ev: Event) => any;
5937    /**
5938      * Fires when the user clicks the object with either mouse button.
5939      * @param ev The mouse event.
5940      */
5941    onmousedown: (ev: MouseEvent) => any;
5942    /**
5943      * Fires when the user moves the mouse over the object.
5944      * @param ev The mouse event.
5945      */
5946    onmousemove: (ev: MouseEvent) => any;
5947    /**
5948      * Fires when the user moves the mouse pointer outside the boundaries of the object.
5949      * @param ev The mouse event.
5950      */
5951    onmouseout: (ev: MouseEvent) => any;
5952    /**
5953      * Fires when the user moves the mouse pointer into the object.
5954      * @param ev The mouse event.
5955      */
5956    onmouseover: (ev: MouseEvent) => any;
5957    /**
5958      * Fires when the user releases a mouse button while the mouse is over the object.
5959      * @param ev The mouse event.
5960      */
5961    onmouseup: (ev: MouseEvent) => any;
5962    /**
5963      * Fires when the wheel button is rotated.
5964      * @param ev The mouse event
5965      */
5966    onmousewheel: (ev: MouseWheelEvent) => any;
5967    onmscontentzoom: (ev: UIEvent) => any;
5968    onmsgesturechange: (ev: MSGestureEvent) => any;
5969    onmsgesturedoubletap: (ev: MSGestureEvent) => any;
5970    onmsgestureend: (ev: MSGestureEvent) => any;
5971    onmsgesturehold: (ev: MSGestureEvent) => any;
5972    onmsgesturestart: (ev: MSGestureEvent) => any;
5973    onmsgesturetap: (ev: MSGestureEvent) => any;
5974    onmsinertiastart: (ev: MSGestureEvent) => any;
5975    onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any;
5976    onmspointercancel: (ev: MSPointerEvent) => any;
5977    onmspointerdown: (ev: MSPointerEvent) => any;
5978    onmspointerenter: (ev: MSPointerEvent) => any;
5979    onmspointerleave: (ev: MSPointerEvent) => any;
5980    onmspointermove: (ev: MSPointerEvent) => any;
5981    onmspointerout: (ev: MSPointerEvent) => any;
5982    onmspointerover: (ev: MSPointerEvent) => any;
5983    onmspointerup: (ev: MSPointerEvent) => any;
5984    /**
5985      * Occurs when an item is removed from a Jump List of a webpage running in Site Mode.
5986      * @param ev The event.
5987      */
5988    onmssitemodejumplistitemremoved: (ev: MSSiteModeEvent) => any;
5989    /**
5990      * Occurs when a user clicks a button in a Thumbnail Toolbar of a webpage running in Site Mode.
5991      * @param ev The event.
5992      */
5993    onmsthumbnailclick: (ev: MSSiteModeEvent) => any;
5994    /**
5995      * Occurs when playback is paused.
5996      * @param ev The event.
5997      */
5998    onpause: (ev: Event) => any;
5999    /**
6000      * Occurs when the play method is requested.
6001      * @param ev The event.
6002      */
6003    onplay: (ev: Event) => any;
6004    /**
6005      * Occurs when the audio or video has started playing.
6006      * @param ev The event.
6007      */
6008    onplaying: (ev: Event) => any;
6009    onpointerlockchange: (ev: Event) => any;
6010    onpointerlockerror: (ev: Event) => any;
6011    /**
6012      * Occurs to indicate progress while downloading media data.
6013      * @param ev The event.
6014      */
6015    onprogress: (ev: ProgressEvent) => any;
6016    /**
6017      * Occurs when the playback rate is increased or decreased.
6018      * @param ev The event.
6019      */
6020    onratechange: (ev: Event) => any;
6021    /**
6022      * Fires when the state of the object has changed.
6023      * @param ev The event
6024      */
6025    onreadystatechange: (ev: ProgressEvent) => any;
6026    /**
6027      * Fires when the user resets a form.
6028      * @param ev The event.
6029      */
6030    onreset: (ev: Event) => any;
6031    /**
6032      * Fires when the user repositions the scroll box in the scroll bar on the object.
6033      * @param ev The event.
6034      */
6035    onscroll: (ev: UIEvent) => any;
6036    /**
6037      * Occurs when the seek operation ends.
6038      * @param ev The event.
6039      */
6040    onseeked: (ev: Event) => any;
6041    /**
6042      * Occurs when the current playback position is moved.
6043      * @param ev The event.
6044      */
6045    onseeking: (ev: Event) => any;
6046    /**
6047      * Fires when the current selection changes.
6048      * @param ev The event.
6049      */
6050    onselect: (ev: UIEvent) => any;
6051    onselectstart: (ev: Event) => any;
6052    /**
6053      * Occurs when the download has stopped.
6054      * @param ev The event.
6055      */
6056    onstalled: (ev: Event) => any;
6057    /**
6058      * Fires when the user clicks the Stop button or leaves the Web page.
6059      * @param ev The event.
6060      */
6061    onstop: (ev: Event) => any;
6062    onsubmit: (ev: Event) => any;
6063    /**
6064      * Occurs if the load operation has been intentionally halted.
6065      * @param ev The event.
6066      */
6067    onsuspend: (ev: Event) => any;
6068    /**
6069      * Occurs to indicate the current playback position.
6070      * @param ev The event.
6071      */
6072    ontimeupdate: (ev: Event) => any;
6073    ontouchcancel: (ev: TouchEvent) => any;
6074    ontouchend: (ev: TouchEvent) => any;
6075    ontouchmove: (ev: TouchEvent) => any;
6076    ontouchstart: (ev: TouchEvent) => any;
6077    /**
6078      * Occurs when the volume is changed, or playback is muted or unmuted.
6079      * @param ev The event.
6080      */
6081    onvolumechange: (ev: Event) => any;
6082    /**
6083      * Occurs when playback stops because the next frame of a video resource is not available.
6084      * @param ev The event.
6085      */
6086    onwaiting: (ev: Event) => any;
6087    onwebkitfullscreenchange: (ev: Event) => any;
6088    onwebkitfullscreenerror: (ev: Event) => any;
6089    plugins: HTMLCollection;
6090    pointerLockElement: Element;
6091    /**
6092      * Retrieves a value that indicates the current state of the object.
6093      */
6094    readyState: string;
6095    /**
6096      * Gets the URL of the location that referred the user to the current page.
6097      */
6098    referrer: string;
6099    /**
6100      * Gets the root svg element in the document hierarchy.
6101      */
6102    rootElement: SVGSVGElement;
6103    /**
6104      * Retrieves a collection of all script objects in the document.
6105      */
6106    scripts: HTMLCollection;
6107    security: string;
6108    /**
6109      * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document.
6110      */
6111    styleSheets: StyleSheetList;
6112    /**
6113      * Contains the title of the document.
6114      */
6115    title: string;
6116    visibilityState: string;
6117    /**
6118      * Sets or gets the color of the links that the user has visited.
6119      */
6120    vlinkColor: string;
6121    webkitCurrentFullScreenElement: Element;
6122    webkitFullscreenElement: Element;
6123    webkitFullscreenEnabled: boolean;
6124    webkitIsFullScreen: boolean;
6125    xmlEncoding: string;
6126    xmlStandalone: boolean;
6127    /**
6128      * Gets or sets the version attribute specified in the declaration of an XML document.
6129      */
6130    xmlVersion: string;
6131    adoptNode(source: Node): Node;
6132    captureEvents(): void;
6133    clear(): void;
6134    /**
6135      * Closes an output stream and forces the sent data to display.
6136      */
6137    close(): void;
6138    /**
6139      * Creates an attribute object with a specified name.
6140      * @param name String that sets the attribute object's name.
6141      */
6142    createAttribute(name: string): Attr;
6143    createAttributeNS(namespaceURI: string, qualifiedName: string): Attr;
6144    createCDATASection(data: string): CDATASection;
6145    /**
6146      * Creates a comment object with the specified data.
6147      * @param data Sets the comment object's data.
6148      */
6149    createComment(data: string): Comment;
6150    /**
6151      * Creates a new document.
6152      */
6153    createDocumentFragment(): DocumentFragment;
6154    /**
6155      * Creates an instance of the element for the specified tag.
6156      * @param tagName The name of an element.
6157      */
6158    createElement(tagName: "a"): HTMLAnchorElement;
6159    createElement(tagName: "abbr"): HTMLPhraseElement;
6160    createElement(tagName: "acronym"): HTMLPhraseElement;
6161    createElement(tagName: "address"): HTMLBlockElement;
6162    createElement(tagName: "applet"): HTMLAppletElement;
6163    createElement(tagName: "area"): HTMLAreaElement;
6164    createElement(tagName: "audio"): HTMLAudioElement;
6165    createElement(tagName: "b"): HTMLPhraseElement;
6166    createElement(tagName: "base"): HTMLBaseElement;
6167    createElement(tagName: "basefont"): HTMLBaseFontElement;
6168    createElement(tagName: "bdo"): HTMLPhraseElement;
6169    createElement(tagName: "big"): HTMLPhraseElement;
6170    createElement(tagName: "blockquote"): HTMLBlockElement;
6171    createElement(tagName: "body"): HTMLBodyElement;
6172    createElement(tagName: "br"): HTMLBRElement;
6173    createElement(tagName: "button"): HTMLButtonElement;
6174    createElement(tagName: "canvas"): HTMLCanvasElement;
6175    createElement(tagName: "caption"): HTMLTableCaptionElement;
6176    createElement(tagName: "center"): HTMLBlockElement;
6177    createElement(tagName: "cite"): HTMLPhraseElement;
6178    createElement(tagName: "code"): HTMLPhraseElement;
6179    createElement(tagName: "col"): HTMLTableColElement;
6180    createElement(tagName: "colgroup"): HTMLTableColElement;
6181    createElement(tagName: "datalist"): HTMLDataListElement;
6182    createElement(tagName: "dd"): HTMLDDElement;
6183    createElement(tagName: "del"): HTMLModElement;
6184    createElement(tagName: "dfn"): HTMLPhraseElement;
6185    createElement(tagName: "dir"): HTMLDirectoryElement;
6186    createElement(tagName: "div"): HTMLDivElement;
6187    createElement(tagName: "dl"): HTMLDListElement;
6188    createElement(tagName: "dt"): HTMLDTElement;
6189    createElement(tagName: "em"): HTMLPhraseElement;
6190    createElement(tagName: "embed"): HTMLEmbedElement;
6191    createElement(tagName: "fieldset"): HTMLFieldSetElement;
6192    createElement(tagName: "font"): HTMLFontElement;
6193    createElement(tagName: "form"): HTMLFormElement;
6194    createElement(tagName: "frame"): HTMLFrameElement;
6195    createElement(tagName: "frameset"): HTMLFrameSetElement;
6196    createElement(tagName: "h1"): HTMLHeadingElement;
6197    createElement(tagName: "h2"): HTMLHeadingElement;
6198    createElement(tagName: "h3"): HTMLHeadingElement;
6199    createElement(tagName: "h4"): HTMLHeadingElement;
6200    createElement(tagName: "h5"): HTMLHeadingElement;
6201    createElement(tagName: "h6"): HTMLHeadingElement;
6202    createElement(tagName: "head"): HTMLHeadElement;
6203    createElement(tagName: "hr"): HTMLHRElement;
6204    createElement(tagName: "html"): HTMLHtmlElement;
6205    createElement(tagName: "i"): HTMLPhraseElement;
6206    createElement(tagName: "iframe"): HTMLIFrameElement;
6207    createElement(tagName: "img"): HTMLImageElement;
6208    createElement(tagName: "input"): HTMLInputElement;
6209    createElement(tagName: "ins"): HTMLModElement;
6210    createElement(tagName: "isindex"): HTMLIsIndexElement;
6211    createElement(tagName: "kbd"): HTMLPhraseElement;
6212    createElement(tagName: "keygen"): HTMLBlockElement;
6213    createElement(tagName: "label"): HTMLLabelElement;
6214    createElement(tagName: "legend"): HTMLLegendElement;
6215    createElement(tagName: "li"): HTMLLIElement;
6216    createElement(tagName: "link"): HTMLLinkElement;
6217    createElement(tagName: "listing"): HTMLBlockElement;
6218    createElement(tagName: "map"): HTMLMapElement;
6219    createElement(tagName: "marquee"): HTMLMarqueeElement;
6220    createElement(tagName: "menu"): HTMLMenuElement;
6221    createElement(tagName: "meta"): HTMLMetaElement;
6222    createElement(tagName: "nextid"): HTMLNextIdElement;
6223    createElement(tagName: "nobr"): HTMLPhraseElement;
6224    createElement(tagName: "object"): HTMLObjectElement;
6225    createElement(tagName: "ol"): HTMLOListElement;
6226    createElement(tagName: "optgroup"): HTMLOptGroupElement;
6227    createElement(tagName: "option"): HTMLOptionElement;
6228    createElement(tagName: "p"): HTMLParagraphElement;
6229    createElement(tagName: "param"): HTMLParamElement;
6230    createElement(tagName: "plaintext"): HTMLBlockElement;
6231    createElement(tagName: "pre"): HTMLPreElement;
6232    createElement(tagName: "progress"): HTMLProgressElement;
6233    createElement(tagName: "q"): HTMLQuoteElement;
6234    createElement(tagName: "rt"): HTMLPhraseElement;
6235    createElement(tagName: "ruby"): HTMLPhraseElement;
6236    createElement(tagName: "s"): HTMLPhraseElement;
6237    createElement(tagName: "samp"): HTMLPhraseElement;
6238    createElement(tagName: "script"): HTMLScriptElement;
6239    createElement(tagName: "select"): HTMLSelectElement;
6240    createElement(tagName: "small"): HTMLPhraseElement;
6241    createElement(tagName: "source"): HTMLSourceElement;
6242    createElement(tagName: "span"): HTMLSpanElement;
6243    createElement(tagName: "strike"): HTMLPhraseElement;
6244    createElement(tagName: "strong"): HTMLPhraseElement;
6245    createElement(tagName: "style"): HTMLStyleElement;
6246    createElement(tagName: "sub"): HTMLPhraseElement;
6247    createElement(tagName: "sup"): HTMLPhraseElement;
6248    createElement(tagName: "table"): HTMLTableElement;
6249    createElement(tagName: "tbody"): HTMLTableSectionElement;
6250    createElement(tagName: "td"): HTMLTableDataCellElement;
6251    createElement(tagName: "textarea"): HTMLTextAreaElement;
6252    createElement(tagName: "tfoot"): HTMLTableSectionElement;
6253    createElement(tagName: "th"): HTMLTableHeaderCellElement;
6254    createElement(tagName: "thead"): HTMLTableSectionElement;
6255    createElement(tagName: "title"): HTMLTitleElement;
6256    createElement(tagName: "tr"): HTMLTableRowElement;
6257    createElement(tagName: "track"): HTMLTrackElement;
6258    createElement(tagName: "tt"): HTMLPhraseElement;
6259    createElement(tagName: "u"): HTMLPhraseElement;
6260    createElement(tagName: "ul"): HTMLUListElement;
6261    createElement(tagName: "var"): HTMLPhraseElement;
6262    createElement(tagName: "video"): HTMLVideoElement;
6263    createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement;
6264    createElement(tagName: "xmp"): HTMLBlockElement;
6265    createElement(tagName: string): HTMLElement;
6266    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement
6267    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement
6268    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "clipPath"): SVGClipPathElement
6269    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "componentTransferFunction"): SVGComponentTransferFunctionElement
6270    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "defs"): SVGDefsElement
6271    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "desc"): SVGDescElement
6272    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "ellipse"): SVGEllipseElement
6273    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feBlend"): SVGFEBlendElement
6274    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feColorMatrix"): SVGFEColorMatrixElement
6275    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feComponentTransfer"): SVGFEComponentTransferElement
6276    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feComposite"): SVGFECompositeElement
6277    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feConvolveMatrix"): SVGFEConvolveMatrixElement
6278    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feDiffuseLighting"): SVGFEDiffuseLightingElement
6279    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feDisplacementMap"): SVGFEDisplacementMapElement
6280    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feDistantLight"): SVGFEDistantLightElement
6281    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFlood"): SVGFEFloodElement
6282    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncA"): SVGFEFuncAElement
6283    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncB"): SVGFEFuncBElement
6284    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncG"): SVGFEFuncGElement
6285    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncR"): SVGFEFuncRElement
6286    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feGaussianBlur"): SVGFEGaussianBlurElement
6287    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feImage"): SVGFEImageElement
6288    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feMerge"): SVGFEMergeElement
6289    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feMergeNode"): SVGFEMergeNodeElement
6290    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feMorphology"): SVGFEMorphologyElement
6291    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feOffset"): SVGFEOffsetElement
6292    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "fePointLight"): SVGFEPointLightElement
6293    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feSpecularLighting"): SVGFESpecularLightingElement
6294    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feSpotLight"): SVGFESpotLightElement
6295    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feTile"): SVGFETileElement
6296    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feTurbulence"): SVGFETurbulenceElement
6297    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "filter"): SVGFilterElement
6298    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "foreignObject"): SVGForeignObjectElement
6299    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "g"): SVGGElement
6300    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "image"): SVGImageElement
6301    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "gradient"): SVGGradientElement
6302    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "line"): SVGLineElement
6303    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "linearGradient"): SVGLinearGradientElement
6304    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "marker"): SVGMarkerElement
6305    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "mask"): SVGMaskElement
6306    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "path"): SVGPathElement
6307    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "metadata"): SVGMetadataElement
6308    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "pattern"): SVGPatternElement
6309    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "polygon"): SVGPolygonElement
6310    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "polyline"): SVGPolylineElement
6311    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "radialGradient"): SVGRadialGradientElement
6312    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "rect"): SVGRectElement
6313    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "svg"): SVGSVGElement
6314    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "script"): SVGScriptElement
6315    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "stop"): SVGStopElement
6316    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "style"): SVGStyleElement
6317    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "switch"): SVGSwitchElement
6318    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "symbol"): SVGSymbolElement
6319    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "tspan"): SVGTSpanElement
6320    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "textContent"): SVGTextContentElement
6321    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "text"): SVGTextElement
6322    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "textPath"): SVGTextPathElement
6323    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "textPositioning"): SVGTextPositioningElement
6324    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "title"): SVGTitleElement
6325    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "use"): SVGUseElement
6326    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "view"): SVGViewElement
6327    createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement
6328    createElementNS(namespaceURI: string, qualifiedName: string): Element;
6329    createExpression(expression: string, resolver: XPathNSResolver): XPathExpression;
6330    createNSResolver(nodeResolver: Node): XPathNSResolver;
6331    /**
6332      * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
6333      * @param root The root element or node to start traversing on.
6334      * @param whatToShow The type of nodes or elements to appear in the node list
6335      * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.
6336      * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded.
6337      */
6338    createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter, entityReferenceExpansion?: boolean): NodeIterator;
6339    createProcessingInstruction(target: string, data: string): ProcessingInstruction;
6340    /**
6341      *  Returns an empty range object that has both of its boundary points positioned at the beginning of the document.
6342      */
6343    createRange(): Range;
6344    /**
6345      * Creates a text string from the specified value.
6346      * @param data String that specifies the nodeValue property of the text node.
6347      */
6348    createTextNode(data: string): Text;
6349    createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch;
6350    createTouchList(...touches: Touch[]): TouchList;
6351    /**
6352      * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.
6353      * @param root The root element or node to start traversing on.
6354      * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.
6355      * @param filter A custom NodeFilter function to use.
6356      * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded.
6357      */
6358    createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter, entityReferenceExpansion?: boolean): TreeWalker;
6359    /**
6360      * Returns the element for the specified x coordinate and the specified y coordinate.
6361      * @param x The x-offset
6362      * @param y The y-offset
6363      */
6364    elementFromPoint(x: number, y: number): Element;
6365    evaluate(expression: string, contextNode: Node, resolver: XPathNSResolver, type: number, result: XPathResult): XPathResult;
6366    /**
6367      * Executes a command on the current document, current selection, or the given range.
6368      * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
6369      * @param showUI Display the user interface, defaults to false.
6370      * @param value Value to assign.
6371      */
6372    execCommand(commandId: string, showUI?: boolean, value?: any): boolean;
6373    /**
6374      * Displays help information for the given command identifier.
6375      * @param commandId Displays help information for the given command identifier.
6376      */
6377    execCommandShowHelp(commandId: string): boolean;
6378    exitFullscreen(): void;
6379    exitPointerLock(): void;
6380    /**
6381      * Causes the element to receive the focus and executes the code specified by the onfocus event.
6382      */
6383    focus(): void;
6384    /**
6385      * Returns a reference to the first object with the specified value of the ID or NAME attribute.
6386      * @param elementId String that specifies the ID value. Case-insensitive.
6387      */
6388    getElementById(elementId: string): HTMLElement;
6389    getElementsByClassName(classNames: string): NodeListOf<Element>;
6390    /**
6391      * Gets a collection of objects based on the value of the NAME or ID attribute.
6392      * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.
6393      */
6394    getElementsByName(elementName: string): NodeListOf<Element>;
6395    /**
6396      * Retrieves a collection of objects based on the specified element name.
6397      * @param name Specifies the name of an element.
6398      */
6399    getElementsByTagName(tagname: "a"): NodeListOf<HTMLAnchorElement>;
6400    getElementsByTagName(tagname: "abbr"): NodeListOf<HTMLPhraseElement>;
6401    getElementsByTagName(tagname: "acronym"): NodeListOf<HTMLPhraseElement>;
6402    getElementsByTagName(tagname: "address"): NodeListOf<HTMLBlockElement>;
6403    getElementsByTagName(tagname: "applet"): NodeListOf<HTMLAppletElement>;
6404    getElementsByTagName(tagname: "area"): NodeListOf<HTMLAreaElement>;
6405    getElementsByTagName(tagname: "article"): NodeListOf<HTMLElement>;
6406    getElementsByTagName(tagname: "aside"): NodeListOf<HTMLElement>;
6407    getElementsByTagName(tagname: "audio"): NodeListOf<HTMLAudioElement>;
6408    getElementsByTagName(tagname: "b"): NodeListOf<HTMLPhraseElement>;
6409    getElementsByTagName(tagname: "base"): NodeListOf<HTMLBaseElement>;
6410    getElementsByTagName(tagname: "basefont"): NodeListOf<HTMLBaseFontElement>;
6411    getElementsByTagName(tagname: "bdo"): NodeListOf<HTMLPhraseElement>;
6412    getElementsByTagName(tagname: "big"): NodeListOf<HTMLPhraseElement>;
6413    getElementsByTagName(tagname: "blockquote"): NodeListOf<HTMLBlockElement>;
6414    getElementsByTagName(tagname: "body"): NodeListOf<HTMLBodyElement>;
6415    getElementsByTagName(tagname: "br"): NodeListOf<HTMLBRElement>;
6416    getElementsByTagName(tagname: "button"): NodeListOf<HTMLButtonElement>;
6417    getElementsByTagName(tagname: "canvas"): NodeListOf<HTMLCanvasElement>;
6418    getElementsByTagName(tagname: "caption"): NodeListOf<HTMLTableCaptionElement>;
6419    getElementsByTagName(tagname: "center"): NodeListOf<HTMLBlockElement>;
6420    getElementsByTagName(tagname: "circle"): NodeListOf<SVGCircleElement>;
6421    getElementsByTagName(tagname: "cite"): NodeListOf<HTMLPhraseElement>;
6422    getElementsByTagName(tagname: "clippath"): NodeListOf<SVGClipPathElement>;
6423    getElementsByTagName(tagname: "code"): NodeListOf<HTMLPhraseElement>;
6424    getElementsByTagName(tagname: "col"): NodeListOf<HTMLTableColElement>;
6425    getElementsByTagName(tagname: "colgroup"): NodeListOf<HTMLTableColElement>;
6426    getElementsByTagName(tagname: "datalist"): NodeListOf<HTMLDataListElement>;
6427    getElementsByTagName(tagname: "dd"): NodeListOf<HTMLDDElement>;
6428    getElementsByTagName(tagname: "defs"): NodeListOf<SVGDefsElement>;
6429    getElementsByTagName(tagname: "del"): NodeListOf<HTMLModElement>;
6430    getElementsByTagName(tagname: "desc"): NodeListOf<SVGDescElement>;
6431    getElementsByTagName(tagname: "dfn"): NodeListOf<HTMLPhraseElement>;
6432    getElementsByTagName(tagname: "dir"): NodeListOf<HTMLDirectoryElement>;
6433    getElementsByTagName(tagname: "div"): NodeListOf<HTMLDivElement>;
6434    getElementsByTagName(tagname: "dl"): NodeListOf<HTMLDListElement>;
6435    getElementsByTagName(tagname: "dt"): NodeListOf<HTMLDTElement>;
6436    getElementsByTagName(tagname: "ellipse"): NodeListOf<SVGEllipseElement>;
6437    getElementsByTagName(tagname: "em"): NodeListOf<HTMLPhraseElement>;
6438    getElementsByTagName(tagname: "embed"): NodeListOf<HTMLEmbedElement>;
6439    getElementsByTagName(tagname: "feblend"): NodeListOf<SVGFEBlendElement>;
6440    getElementsByTagName(tagname: "fecolormatrix"): NodeListOf<SVGFEColorMatrixElement>;
6441    getElementsByTagName(tagname: "fecomponenttransfer"): NodeListOf<SVGFEComponentTransferElement>;
6442    getElementsByTagName(tagname: "fecomposite"): NodeListOf<SVGFECompositeElement>;
6443    getElementsByTagName(tagname: "feconvolvematrix"): NodeListOf<SVGFEConvolveMatrixElement>;
6444    getElementsByTagName(tagname: "fediffuselighting"): NodeListOf<SVGFEDiffuseLightingElement>;
6445    getElementsByTagName(tagname: "fedisplacementmap"): NodeListOf<SVGFEDisplacementMapElement>;
6446    getElementsByTagName(tagname: "fedistantlight"): NodeListOf<SVGFEDistantLightElement>;
6447    getElementsByTagName(tagname: "feflood"): NodeListOf<SVGFEFloodElement>;
6448    getElementsByTagName(tagname: "fefunca"): NodeListOf<SVGFEFuncAElement>;
6449    getElementsByTagName(tagname: "fefuncb"): NodeListOf<SVGFEFuncBElement>;
6450    getElementsByTagName(tagname: "fefuncg"): NodeListOf<SVGFEFuncGElement>;
6451    getElementsByTagName(tagname: "fefuncr"): NodeListOf<SVGFEFuncRElement>;
6452    getElementsByTagName(tagname: "fegaussianblur"): NodeListOf<SVGFEGaussianBlurElement>;
6453    getElementsByTagName(tagname: "feimage"): NodeListOf<SVGFEImageElement>;
6454    getElementsByTagName(tagname: "femerge"): NodeListOf<SVGFEMergeElement>;
6455    getElementsByTagName(tagname: "femergenode"): NodeListOf<SVGFEMergeNodeElement>;
6456    getElementsByTagName(tagname: "femorphology"): NodeListOf<SVGFEMorphologyElement>;
6457    getElementsByTagName(tagname: "feoffset"): NodeListOf<SVGFEOffsetElement>;
6458    getElementsByTagName(tagname: "fepointlight"): NodeListOf<SVGFEPointLightElement>;
6459    getElementsByTagName(tagname: "fespecularlighting"): NodeListOf<SVGFESpecularLightingElement>;
6460    getElementsByTagName(tagname: "fespotlight"): NodeListOf<SVGFESpotLightElement>;
6461    getElementsByTagName(tagname: "fetile"): NodeListOf<SVGFETileElement>;
6462    getElementsByTagName(tagname: "feturbulence"): NodeListOf<SVGFETurbulenceElement>;
6463    getElementsByTagName(tagname: "fieldset"): NodeListOf<HTMLFieldSetElement>;
6464    getElementsByTagName(tagname: "figcaption"): NodeListOf<HTMLElement>;
6465    getElementsByTagName(tagname: "figure"): NodeListOf<HTMLElement>;
6466    getElementsByTagName(tagname: "filter"): NodeListOf<SVGFilterElement>;
6467    getElementsByTagName(tagname: "font"): NodeListOf<HTMLFontElement>;
6468    getElementsByTagName(tagname: "footer"): NodeListOf<HTMLElement>;
6469    getElementsByTagName(tagname: "foreignobject"): NodeListOf<SVGForeignObjectElement>;
6470    getElementsByTagName(tagname: "form"): NodeListOf<HTMLFormElement>;
6471    getElementsByTagName(tagname: "frame"): NodeListOf<HTMLFrameElement>;
6472    getElementsByTagName(tagname: "frameset"): NodeListOf<HTMLFrameSetElement>;
6473    getElementsByTagName(tagname: "g"): NodeListOf<SVGGElement>;
6474    getElementsByTagName(tagname: "h1"): NodeListOf<HTMLHeadingElement>;
6475    getElementsByTagName(tagname: "h2"): NodeListOf<HTMLHeadingElement>;
6476    getElementsByTagName(tagname: "h3"): NodeListOf<HTMLHeadingElement>;
6477    getElementsByTagName(tagname: "h4"): NodeListOf<HTMLHeadingElement>;
6478    getElementsByTagName(tagname: "h5"): NodeListOf<HTMLHeadingElement>;
6479    getElementsByTagName(tagname: "h6"): NodeListOf<HTMLHeadingElement>;
6480    getElementsByTagName(tagname: "head"): NodeListOf<HTMLHeadElement>;
6481    getElementsByTagName(tagname: "header"): NodeListOf<HTMLElement>;
6482    getElementsByTagName(tagname: "hgroup"): NodeListOf<HTMLElement>;
6483    getElementsByTagName(tagname: "hr"): NodeListOf<HTMLHRElement>;
6484    getElementsByTagName(tagname: "html"): NodeListOf<HTMLHtmlElement>;
6485    getElementsByTagName(tagname: "i"): NodeListOf<HTMLPhraseElement>;
6486    getElementsByTagName(tagname: "iframe"): NodeListOf<HTMLIFrameElement>;
6487    getElementsByTagName(tagname: "image"): NodeListOf<SVGImageElement>;
6488    getElementsByTagName(tagname: "img"): NodeListOf<HTMLImageElement>;
6489    getElementsByTagName(tagname: "input"): NodeListOf<HTMLInputElement>;
6490    getElementsByTagName(tagname: "ins"): NodeListOf<HTMLModElement>;
6491    getElementsByTagName(tagname: "isindex"): NodeListOf<HTMLIsIndexElement>;
6492    getElementsByTagName(tagname: "kbd"): NodeListOf<HTMLPhraseElement>;
6493    getElementsByTagName(tagname: "keygen"): NodeListOf<HTMLBlockElement>;
6494    getElementsByTagName(tagname: "label"): NodeListOf<HTMLLabelElement>;
6495    getElementsByTagName(tagname: "legend"): NodeListOf<HTMLLegendElement>;
6496    getElementsByTagName(tagname: "li"): NodeListOf<HTMLLIElement>;
6497    getElementsByTagName(tagname: "line"): NodeListOf<SVGLineElement>;
6498    getElementsByTagName(tagname: "lineargradient"): NodeListOf<SVGLinearGradientElement>;
6499    getElementsByTagName(tagname: "link"): NodeListOf<HTMLLinkElement>;
6500    getElementsByTagName(tagname: "listing"): NodeListOf<HTMLBlockElement>;
6501    getElementsByTagName(tagname: "map"): NodeListOf<HTMLMapElement>;
6502    getElementsByTagName(tagname: "mark"): NodeListOf<HTMLElement>;
6503    getElementsByTagName(tagname: "marker"): NodeListOf<SVGMarkerElement>;
6504    getElementsByTagName(tagname: "marquee"): NodeListOf<HTMLMarqueeElement>;
6505    getElementsByTagName(tagname: "mask"): NodeListOf<SVGMaskElement>;
6506    getElementsByTagName(tagname: "menu"): NodeListOf<HTMLMenuElement>;
6507    getElementsByTagName(tagname: "meta"): NodeListOf<HTMLMetaElement>;
6508    getElementsByTagName(tagname: "metadata"): NodeListOf<SVGMetadataElement>;
6509    getElementsByTagName(tagname: "nav"): NodeListOf<HTMLElement>;
6510    getElementsByTagName(tagname: "nextid"): NodeListOf<HTMLNextIdElement>;
6511    getElementsByTagName(tagname: "nobr"): NodeListOf<HTMLPhraseElement>;
6512    getElementsByTagName(tagname: "noframes"): NodeListOf<HTMLElement>;
6513    getElementsByTagName(tagname: "noscript"): NodeListOf<HTMLElement>;
6514    getElementsByTagName(tagname: "object"): NodeListOf<HTMLObjectElement>;
6515    getElementsByTagName(tagname: "ol"): NodeListOf<HTMLOListElement>;
6516    getElementsByTagName(tagname: "optgroup"): NodeListOf<HTMLOptGroupElement>;
6517    getElementsByTagName(tagname: "option"): NodeListOf<HTMLOptionElement>;
6518    getElementsByTagName(tagname: "p"): NodeListOf<HTMLParagraphElement>;
6519    getElementsByTagName(tagname: "param"): NodeListOf<HTMLParamElement>;
6520    getElementsByTagName(tagname: "path"): NodeListOf<SVGPathElement>;
6521    getElementsByTagName(tagname: "pattern"): NodeListOf<SVGPatternElement>;
6522    getElementsByTagName(tagname: "plaintext"): NodeListOf<HTMLBlockElement>;
6523    getElementsByTagName(tagname: "polygon"): NodeListOf<SVGPolygonElement>;
6524    getElementsByTagName(tagname: "polyline"): NodeListOf<SVGPolylineElement>;
6525    getElementsByTagName(tagname: "pre"): NodeListOf<HTMLPreElement>;
6526    getElementsByTagName(tagname: "progress"): NodeListOf<HTMLProgressElement>;
6527    getElementsByTagName(tagname: "q"): NodeListOf<HTMLQuoteElement>;
6528    getElementsByTagName(tagname: "radialgradient"): NodeListOf<SVGRadialGradientElement>;
6529    getElementsByTagName(tagname: "rect"): NodeListOf<SVGRectElement>;
6530    getElementsByTagName(tagname: "rt"): NodeListOf<HTMLPhraseElement>;
6531    getElementsByTagName(tagname: "ruby"): NodeListOf<HTMLPhraseElement>;
6532    getElementsByTagName(tagname: "s"): NodeListOf<HTMLPhraseElement>;
6533    getElementsByTagName(tagname: "samp"): NodeListOf<HTMLPhraseElement>;
6534    getElementsByTagName(tagname: "script"): NodeListOf<HTMLScriptElement>;
6535    getElementsByTagName(tagname: "section"): NodeListOf<HTMLElement>;
6536    getElementsByTagName(tagname: "select"): NodeListOf<HTMLSelectElement>;
6537    getElementsByTagName(tagname: "small"): NodeListOf<HTMLPhraseElement>;
6538    getElementsByTagName(tagname: "source"): NodeListOf<HTMLSourceElement>;
6539    getElementsByTagName(tagname: "span"): NodeListOf<HTMLSpanElement>;
6540    getElementsByTagName(tagname: "stop"): NodeListOf<SVGStopElement>;
6541    getElementsByTagName(tagname: "strike"): NodeListOf<HTMLPhraseElement>;
6542    getElementsByTagName(tagname: "strong"): NodeListOf<HTMLPhraseElement>;
6543    getElementsByTagName(tagname: "style"): NodeListOf<HTMLStyleElement>;
6544    getElementsByTagName(tagname: "sub"): NodeListOf<HTMLPhraseElement>;
6545    getElementsByTagName(tagname: "sup"): NodeListOf<HTMLPhraseElement>;
6546    getElementsByTagName(tagname: "svg"): NodeListOf<SVGSVGElement>;
6547    getElementsByTagName(tagname: "switch"): NodeListOf<SVGSwitchElement>;
6548    getElementsByTagName(tagname: "symbol"): NodeListOf<SVGSymbolElement>;
6549    getElementsByTagName(tagname: "table"): NodeListOf<HTMLTableElement>;
6550    getElementsByTagName(tagname: "tbody"): NodeListOf<HTMLTableSectionElement>;
6551    getElementsByTagName(tagname: "td"): NodeListOf<HTMLTableDataCellElement>;
6552    getElementsByTagName(tagname: "text"): NodeListOf<SVGTextElement>;
6553    getElementsByTagName(tagname: "textpath"): NodeListOf<SVGTextPathElement>;
6554    getElementsByTagName(tagname: "textarea"): NodeListOf<HTMLTextAreaElement>;
6555    getElementsByTagName(tagname: "tfoot"): NodeListOf<HTMLTableSectionElement>;
6556    getElementsByTagName(tagname: "th"): NodeListOf<HTMLTableHeaderCellElement>;
6557    getElementsByTagName(tagname: "thead"): NodeListOf<HTMLTableSectionElement>;
6558    getElementsByTagName(tagname: "title"): NodeListOf<HTMLTitleElement>;
6559    getElementsByTagName(tagname: "tr"): NodeListOf<HTMLTableRowElement>;
6560    getElementsByTagName(tagname: "track"): NodeListOf<HTMLTrackElement>;
6561    getElementsByTagName(tagname: "tspan"): NodeListOf<SVGTSpanElement>;
6562    getElementsByTagName(tagname: "tt"): NodeListOf<HTMLPhraseElement>;
6563    getElementsByTagName(tagname: "u"): NodeListOf<HTMLPhraseElement>;
6564    getElementsByTagName(tagname: "ul"): NodeListOf<HTMLUListElement>;
6565    getElementsByTagName(tagname: "use"): NodeListOf<SVGUseElement>;
6566    getElementsByTagName(tagname: "var"): NodeListOf<HTMLPhraseElement>;
6567    getElementsByTagName(tagname: "video"): NodeListOf<HTMLVideoElement>;
6568    getElementsByTagName(tagname: "view"): NodeListOf<SVGViewElement>;
6569    getElementsByTagName(tagname: "wbr"): NodeListOf<HTMLElement>;
6570    getElementsByTagName(tagname: "x-ms-webview"): NodeListOf<MSHTMLWebViewElement>;
6571    getElementsByTagName(tagname: "xmp"): NodeListOf<HTMLBlockElement>;
6572    getElementsByTagName(tagname: string): NodeListOf<Element>;
6573    getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf<Element>;
6574    /**
6575      * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage.
6576      */
6577    getSelection(): Selection;
6578    /**
6579      * Gets a value indicating whether the object currently has focus.
6580      */
6581    hasFocus(): boolean;
6582    importNode(importedNode: Node, deep: boolean): Node;
6583    msElementsFromPoint(x: number, y: number): NodeList;
6584    msElementsFromRect(left: number, top: number, width: number, height: number): NodeList;
6585    /**
6586      * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method.
6587      * @param url Specifies a MIME type for the document.
6588      * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element.
6589      * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, "fullscreen=yes, toolbar=yes"). The following values are supported.
6590      * @param replace Specifies whether the existing entry for the document is replaced in the history list.
6591      */
6592    open(url?: string, name?: string, features?: string, replace?: boolean): Document;
6593    /**
6594      * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.
6595      * @param commandId Specifies a command identifier.
6596      */
6597    queryCommandEnabled(commandId: string): boolean;
6598    /**
6599      * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.
6600      * @param commandId String that specifies a command identifier.
6601      */
6602    queryCommandIndeterm(commandId: string): boolean;
6603    /**
6604      * Returns a Boolean value that indicates the current state of the command.
6605      * @param commandId String that specifies a command identifier.
6606      */
6607    queryCommandState(commandId: string): boolean;
6608    /**
6609      * Returns a Boolean value that indicates whether the current command is supported on the current range.
6610      * @param commandId Specifies a command identifier.
6611      */
6612    queryCommandSupported(commandId: string): boolean;
6613    /**
6614      * Retrieves the string associated with a command.
6615      * @param commandId String that contains the identifier of a command. This can be any command identifier given in the list of Command Identifiers.
6616      */
6617    queryCommandText(commandId: string): string;
6618    /**
6619      * Returns the current value of the document, range, or current selection for the given command.
6620      * @param commandId String that specifies a command identifier.
6621      */
6622    queryCommandValue(commandId: string): string;
6623    releaseEvents(): void;
6624    /**
6625      * Allows updating the print settings for the page.
6626      */
6627    updateSettings(): void;
6628    webkitCancelFullScreen(): void;
6629    webkitExitFullscreen(): void;
6630    /**
6631      * Writes one or more HTML expressions to a document in the specified window.
6632      * @param content Specifies the text and HTML tags to write.
6633      */
6634    write(...content: string[]): void;
6635    /**
6636      * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.
6637      * @param content The text and HTML tags to write.
6638      */
6639    writeln(...content: string[]): void;
6640    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6641    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6642    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6643    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6644    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6645    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6646    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6647    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
6648    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
6649    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6650    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6651    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6652    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6653    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6654    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6655    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6656    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
6657    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6658    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6659    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6660    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6661    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
6662    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
6663    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
6664    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
6665    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6666    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6667    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6668    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6669    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6670    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6671    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6672    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6673    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6674    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6675    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
6676    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
6677    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
6678    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
6679    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
6680    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
6681    addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
6682    addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
6683    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
6684    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
6685    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
6686    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
6687    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
6688    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
6689    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
6690    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
6691    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6692    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6693    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6694    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6695    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
6696    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
6697    addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void;
6698    addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void;
6699    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
6700    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
6701    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
6702    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6703    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6704    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6705    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6706    addEventListener(type: "pointerlockchange", listener: (ev: Event) => any, useCapture?: boolean): void;
6707    addEventListener(type: "pointerlockerror", listener: (ev: Event) => any, useCapture?: boolean): void;
6708    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6709    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6710    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6711    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
6712    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
6713    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
6714    addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
6715    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
6716    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6717    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
6718    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
6719    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
6720    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
6721    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
6722    addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void;
6723    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
6724    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
6725    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
6726    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
6727    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
6728    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
6729    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
6730    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
6731    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
6732    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
6733    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
6734    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
6735    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
6736}
6737
6738declare var Document: {
6739    prototype: Document;
6740    new(): Document;
6741}
6742
6743interface DocumentFragment extends Node, NodeSelector {
6744    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
6745}
6746
6747declare var DocumentFragment: {
6748    prototype: DocumentFragment;
6749    new(): DocumentFragment;
6750}
6751
6752interface DocumentType extends Node, ChildNode {
6753    entities: NamedNodeMap;
6754    internalSubset: string;
6755    name: string;
6756    notations: NamedNodeMap;
6757    publicId: string;
6758    systemId: string;
6759    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
6760}
6761
6762declare var DocumentType: {
6763    prototype: DocumentType;
6764    new(): DocumentType;
6765}
6766
6767interface DragEvent extends MouseEvent {
6768    dataTransfer: DataTransfer;
6769    initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void;
6770    msConvertURL(file: File, targetType: string, targetURL?: string): void;
6771}
6772
6773declare var DragEvent: {
6774    prototype: DragEvent;
6775    new(): DragEvent;
6776}
6777
6778interface DynamicsCompressorNode extends AudioNode {
6779    attack: AudioParam;
6780    knee: AudioParam;
6781    ratio: AudioParam;
6782    reduction: AudioParam;
6783    release: AudioParam;
6784    threshold: AudioParam;
6785}
6786
6787declare var DynamicsCompressorNode: {
6788    prototype: DynamicsCompressorNode;
6789    new(): DynamicsCompressorNode;
6790}
6791
6792interface EXT_texture_filter_anisotropic {
6793    MAX_TEXTURE_MAX_ANISOTROPY_EXT: number;
6794    TEXTURE_MAX_ANISOTROPY_EXT: number;
6795}
6796
6797declare var EXT_texture_filter_anisotropic: {
6798    prototype: EXT_texture_filter_anisotropic;
6799    new(): EXT_texture_filter_anisotropic;
6800    MAX_TEXTURE_MAX_ANISOTROPY_EXT: number;
6801    TEXTURE_MAX_ANISOTROPY_EXT: number;
6802}
6803
6804interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode {
6805    classList: DOMTokenList;
6806    clientHeight: number;
6807    clientLeft: number;
6808    clientTop: number;
6809    clientWidth: number;
6810    msContentZoomFactor: number;
6811    msRegionOverflow: string;
6812    onariarequest: (ev: AriaRequestEvent) => any;
6813    oncommand: (ev: CommandEvent) => any;
6814    ongotpointercapture: (ev: PointerEvent) => any;
6815    onlostpointercapture: (ev: PointerEvent) => any;
6816    onmsgesturechange: (ev: MSGestureEvent) => any;
6817    onmsgesturedoubletap: (ev: MSGestureEvent) => any;
6818    onmsgestureend: (ev: MSGestureEvent) => any;
6819    onmsgesturehold: (ev: MSGestureEvent) => any;
6820    onmsgesturestart: (ev: MSGestureEvent) => any;
6821    onmsgesturetap: (ev: MSGestureEvent) => any;
6822    onmsgotpointercapture: (ev: MSPointerEvent) => any;
6823    onmsinertiastart: (ev: MSGestureEvent) => any;
6824    onmslostpointercapture: (ev: MSPointerEvent) => any;
6825    onmspointercancel: (ev: MSPointerEvent) => any;
6826    onmspointerdown: (ev: MSPointerEvent) => any;
6827    onmspointerenter: (ev: MSPointerEvent) => any;
6828    onmspointerleave: (ev: MSPointerEvent) => any;
6829    onmspointermove: (ev: MSPointerEvent) => any;
6830    onmspointerout: (ev: MSPointerEvent) => any;
6831    onmspointerover: (ev: MSPointerEvent) => any;
6832    onmspointerup: (ev: MSPointerEvent) => any;
6833    ontouchcancel: (ev: TouchEvent) => any;
6834    ontouchend: (ev: TouchEvent) => any;
6835    ontouchmove: (ev: TouchEvent) => any;
6836    ontouchstart: (ev: TouchEvent) => any;
6837    onwebkitfullscreenchange: (ev: Event) => any;
6838    onwebkitfullscreenerror: (ev: Event) => any;
6839    scrollHeight: number;
6840    scrollLeft: number;
6841    scrollTop: number;
6842    scrollWidth: number;
6843    tagName: string;
6844    id: string;
6845    className: string;
6846    getAttribute(name?: string): string;
6847    getAttributeNS(namespaceURI: string, localName: string): string;
6848    getAttributeNode(name: string): Attr;
6849    getAttributeNodeNS(namespaceURI: string, localName: string): Attr;
6850    getBoundingClientRect(): ClientRect;
6851    getClientRects(): ClientRectList;
6852    getElementsByTagName(name: "a"): NodeListOf<HTMLAnchorElement>;
6853    getElementsByTagName(name: "abbr"): NodeListOf<HTMLPhraseElement>;
6854    getElementsByTagName(name: "acronym"): NodeListOf<HTMLPhraseElement>;
6855    getElementsByTagName(name: "address"): NodeListOf<HTMLBlockElement>;
6856    getElementsByTagName(name: "applet"): NodeListOf<HTMLAppletElement>;
6857    getElementsByTagName(name: "area"): NodeListOf<HTMLAreaElement>;
6858    getElementsByTagName(name: "article"): NodeListOf<HTMLElement>;
6859    getElementsByTagName(name: "aside"): NodeListOf<HTMLElement>;
6860    getElementsByTagName(name: "audio"): NodeListOf<HTMLAudioElement>;
6861    getElementsByTagName(name: "b"): NodeListOf<HTMLPhraseElement>;
6862    getElementsByTagName(name: "base"): NodeListOf<HTMLBaseElement>;
6863    getElementsByTagName(name: "basefont"): NodeListOf<HTMLBaseFontElement>;
6864    getElementsByTagName(name: "bdo"): NodeListOf<HTMLPhraseElement>;
6865    getElementsByTagName(name: "big"): NodeListOf<HTMLPhraseElement>;
6866    getElementsByTagName(name: "blockquote"): NodeListOf<HTMLBlockElement>;
6867    getElementsByTagName(name: "body"): NodeListOf<HTMLBodyElement>;
6868    getElementsByTagName(name: "br"): NodeListOf<HTMLBRElement>;
6869    getElementsByTagName(name: "button"): NodeListOf<HTMLButtonElement>;
6870    getElementsByTagName(name: "canvas"): NodeListOf<HTMLCanvasElement>;
6871    getElementsByTagName(name: "caption"): NodeListOf<HTMLTableCaptionElement>;
6872    getElementsByTagName(name: "center"): NodeListOf<HTMLBlockElement>;
6873    getElementsByTagName(name: "circle"): NodeListOf<SVGCircleElement>;
6874    getElementsByTagName(name: "cite"): NodeListOf<HTMLPhraseElement>;
6875    getElementsByTagName(name: "clippath"): NodeListOf<SVGClipPathElement>;
6876    getElementsByTagName(name: "code"): NodeListOf<HTMLPhraseElement>;
6877    getElementsByTagName(name: "col"): NodeListOf<HTMLTableColElement>;
6878    getElementsByTagName(name: "colgroup"): NodeListOf<HTMLTableColElement>;
6879    getElementsByTagName(name: "datalist"): NodeListOf<HTMLDataListElement>;
6880    getElementsByTagName(name: "dd"): NodeListOf<HTMLDDElement>;
6881    getElementsByTagName(name: "defs"): NodeListOf<SVGDefsElement>;
6882    getElementsByTagName(name: "del"): NodeListOf<HTMLModElement>;
6883    getElementsByTagName(name: "desc"): NodeListOf<SVGDescElement>;
6884    getElementsByTagName(name: "dfn"): NodeListOf<HTMLPhraseElement>;
6885    getElementsByTagName(name: "dir"): NodeListOf<HTMLDirectoryElement>;
6886    getElementsByTagName(name: "div"): NodeListOf<HTMLDivElement>;
6887    getElementsByTagName(name: "dl"): NodeListOf<HTMLDListElement>;
6888    getElementsByTagName(name: "dt"): NodeListOf<HTMLDTElement>;
6889    getElementsByTagName(name: "ellipse"): NodeListOf<SVGEllipseElement>;
6890    getElementsByTagName(name: "em"): NodeListOf<HTMLPhraseElement>;
6891    getElementsByTagName(name: "embed"): NodeListOf<HTMLEmbedElement>;
6892    getElementsByTagName(name: "feblend"): NodeListOf<SVGFEBlendElement>;
6893    getElementsByTagName(name: "fecolormatrix"): NodeListOf<SVGFEColorMatrixElement>;
6894    getElementsByTagName(name: "fecomponenttransfer"): NodeListOf<SVGFEComponentTransferElement>;
6895    getElementsByTagName(name: "fecomposite"): NodeListOf<SVGFECompositeElement>;
6896    getElementsByTagName(name: "feconvolvematrix"): NodeListOf<SVGFEConvolveMatrixElement>;
6897    getElementsByTagName(name: "fediffuselighting"): NodeListOf<SVGFEDiffuseLightingElement>;
6898    getElementsByTagName(name: "fedisplacementmap"): NodeListOf<SVGFEDisplacementMapElement>;
6899    getElementsByTagName(name: "fedistantlight"): NodeListOf<SVGFEDistantLightElement>;
6900    getElementsByTagName(name: "feflood"): NodeListOf<SVGFEFloodElement>;
6901    getElementsByTagName(name: "fefunca"): NodeListOf<SVGFEFuncAElement>;
6902    getElementsByTagName(name: "fefuncb"): NodeListOf<SVGFEFuncBElement>;
6903    getElementsByTagName(name: "fefuncg"): NodeListOf<SVGFEFuncGElement>;
6904    getElementsByTagName(name: "fefuncr"): NodeListOf<SVGFEFuncRElement>;
6905    getElementsByTagName(name: "fegaussianblur"): NodeListOf<SVGFEGaussianBlurElement>;
6906    getElementsByTagName(name: "feimage"): NodeListOf<SVGFEImageElement>;
6907    getElementsByTagName(name: "femerge"): NodeListOf<SVGFEMergeElement>;
6908    getElementsByTagName(name: "femergenode"): NodeListOf<SVGFEMergeNodeElement>;
6909    getElementsByTagName(name: "femorphology"): NodeListOf<SVGFEMorphologyElement>;
6910    getElementsByTagName(name: "feoffset"): NodeListOf<SVGFEOffsetElement>;
6911    getElementsByTagName(name: "fepointlight"): NodeListOf<SVGFEPointLightElement>;
6912    getElementsByTagName(name: "fespecularlighting"): NodeListOf<SVGFESpecularLightingElement>;
6913    getElementsByTagName(name: "fespotlight"): NodeListOf<SVGFESpotLightElement>;
6914    getElementsByTagName(name: "fetile"): NodeListOf<SVGFETileElement>;
6915    getElementsByTagName(name: "feturbulence"): NodeListOf<SVGFETurbulenceElement>;
6916    getElementsByTagName(name: "fieldset"): NodeListOf<HTMLFieldSetElement>;
6917    getElementsByTagName(name: "figcaption"): NodeListOf<HTMLElement>;
6918    getElementsByTagName(name: "figure"): NodeListOf<HTMLElement>;
6919    getElementsByTagName(name: "filter"): NodeListOf<SVGFilterElement>;
6920    getElementsByTagName(name: "font"): NodeListOf<HTMLFontElement>;
6921    getElementsByTagName(name: "footer"): NodeListOf<HTMLElement>;
6922    getElementsByTagName(name: "foreignobject"): NodeListOf<SVGForeignObjectElement>;
6923    getElementsByTagName(name: "form"): NodeListOf<HTMLFormElement>;
6924    getElementsByTagName(name: "frame"): NodeListOf<HTMLFrameElement>;
6925    getElementsByTagName(name: "frameset"): NodeListOf<HTMLFrameSetElement>;
6926    getElementsByTagName(name: "g"): NodeListOf<SVGGElement>;
6927    getElementsByTagName(name: "h1"): NodeListOf<HTMLHeadingElement>;
6928    getElementsByTagName(name: "h2"): NodeListOf<HTMLHeadingElement>;
6929    getElementsByTagName(name: "h3"): NodeListOf<HTMLHeadingElement>;
6930    getElementsByTagName(name: "h4"): NodeListOf<HTMLHeadingElement>;
6931    getElementsByTagName(name: "h5"): NodeListOf<HTMLHeadingElement>;
6932    getElementsByTagName(name: "h6"): NodeListOf<HTMLHeadingElement>;
6933    getElementsByTagName(name: "head"): NodeListOf<HTMLHeadElement>;
6934    getElementsByTagName(name: "header"): NodeListOf<HTMLElement>;
6935    getElementsByTagName(name: "hgroup"): NodeListOf<HTMLElement>;
6936    getElementsByTagName(name: "hr"): NodeListOf<HTMLHRElement>;
6937    getElementsByTagName(name: "html"): NodeListOf<HTMLHtmlElement>;
6938    getElementsByTagName(name: "i"): NodeListOf<HTMLPhraseElement>;
6939    getElementsByTagName(name: "iframe"): NodeListOf<HTMLIFrameElement>;
6940    getElementsByTagName(name: "image"): NodeListOf<SVGImageElement>;
6941    getElementsByTagName(name: "img"): NodeListOf<HTMLImageElement>;
6942    getElementsByTagName(name: "input"): NodeListOf<HTMLInputElement>;
6943    getElementsByTagName(name: "ins"): NodeListOf<HTMLModElement>;
6944    getElementsByTagName(name: "isindex"): NodeListOf<HTMLIsIndexElement>;
6945    getElementsByTagName(name: "kbd"): NodeListOf<HTMLPhraseElement>;
6946    getElementsByTagName(name: "keygen"): NodeListOf<HTMLBlockElement>;
6947    getElementsByTagName(name: "label"): NodeListOf<HTMLLabelElement>;
6948    getElementsByTagName(name: "legend"): NodeListOf<HTMLLegendElement>;
6949    getElementsByTagName(name: "li"): NodeListOf<HTMLLIElement>;
6950    getElementsByTagName(name: "line"): NodeListOf<SVGLineElement>;
6951    getElementsByTagName(name: "lineargradient"): NodeListOf<SVGLinearGradientElement>;
6952    getElementsByTagName(name: "link"): NodeListOf<HTMLLinkElement>;
6953    getElementsByTagName(name: "listing"): NodeListOf<HTMLBlockElement>;
6954    getElementsByTagName(name: "map"): NodeListOf<HTMLMapElement>;
6955    getElementsByTagName(name: "mark"): NodeListOf<HTMLElement>;
6956    getElementsByTagName(name: "marker"): NodeListOf<SVGMarkerElement>;
6957    getElementsByTagName(name: "marquee"): NodeListOf<HTMLMarqueeElement>;
6958    getElementsByTagName(name: "mask"): NodeListOf<SVGMaskElement>;
6959    getElementsByTagName(name: "menu"): NodeListOf<HTMLMenuElement>;
6960    getElementsByTagName(name: "meta"): NodeListOf<HTMLMetaElement>;
6961    getElementsByTagName(name: "metadata"): NodeListOf<SVGMetadataElement>;
6962    getElementsByTagName(name: "nav"): NodeListOf<HTMLElement>;
6963    getElementsByTagName(name: "nextid"): NodeListOf<HTMLNextIdElement>;
6964    getElementsByTagName(name: "nobr"): NodeListOf<HTMLPhraseElement>;
6965    getElementsByTagName(name: "noframes"): NodeListOf<HTMLElement>;
6966    getElementsByTagName(name: "noscript"): NodeListOf<HTMLElement>;
6967    getElementsByTagName(name: "object"): NodeListOf<HTMLObjectElement>;
6968    getElementsByTagName(name: "ol"): NodeListOf<HTMLOListElement>;
6969    getElementsByTagName(name: "optgroup"): NodeListOf<HTMLOptGroupElement>;
6970    getElementsByTagName(name: "option"): NodeListOf<HTMLOptionElement>;
6971    getElementsByTagName(name: "p"): NodeListOf<HTMLParagraphElement>;
6972    getElementsByTagName(name: "param"): NodeListOf<HTMLParamElement>;
6973    getElementsByTagName(name: "path"): NodeListOf<SVGPathElement>;
6974    getElementsByTagName(name: "pattern"): NodeListOf<SVGPatternElement>;
6975    getElementsByTagName(name: "plaintext"): NodeListOf<HTMLBlockElement>;
6976    getElementsByTagName(name: "polygon"): NodeListOf<SVGPolygonElement>;
6977    getElementsByTagName(name: "polyline"): NodeListOf<SVGPolylineElement>;
6978    getElementsByTagName(name: "pre"): NodeListOf<HTMLPreElement>;
6979    getElementsByTagName(name: "progress"): NodeListOf<HTMLProgressElement>;
6980    getElementsByTagName(name: "q"): NodeListOf<HTMLQuoteElement>;
6981    getElementsByTagName(name: "radialgradient"): NodeListOf<SVGRadialGradientElement>;
6982    getElementsByTagName(name: "rect"): NodeListOf<SVGRectElement>;
6983    getElementsByTagName(name: "rt"): NodeListOf<HTMLPhraseElement>;
6984    getElementsByTagName(name: "ruby"): NodeListOf<HTMLPhraseElement>;
6985    getElementsByTagName(name: "s"): NodeListOf<HTMLPhraseElement>;
6986    getElementsByTagName(name: "samp"): NodeListOf<HTMLPhraseElement>;
6987    getElementsByTagName(name: "script"): NodeListOf<HTMLScriptElement>;
6988    getElementsByTagName(name: "section"): NodeListOf<HTMLElement>;
6989    getElementsByTagName(name: "select"): NodeListOf<HTMLSelectElement>;
6990    getElementsByTagName(name: "small"): NodeListOf<HTMLPhraseElement>;
6991    getElementsByTagName(name: "source"): NodeListOf<HTMLSourceElement>;
6992    getElementsByTagName(name: "span"): NodeListOf<HTMLSpanElement>;
6993    getElementsByTagName(name: "stop"): NodeListOf<SVGStopElement>;
6994    getElementsByTagName(name: "strike"): NodeListOf<HTMLPhraseElement>;
6995    getElementsByTagName(name: "strong"): NodeListOf<HTMLPhraseElement>;
6996    getElementsByTagName(name: "style"): NodeListOf<HTMLStyleElement>;
6997    getElementsByTagName(name: "sub"): NodeListOf<HTMLPhraseElement>;
6998    getElementsByTagName(name: "sup"): NodeListOf<HTMLPhraseElement>;
6999    getElementsByTagName(name: "svg"): NodeListOf<SVGSVGElement>;
7000    getElementsByTagName(name: "switch"): NodeListOf<SVGSwitchElement>;
7001    getElementsByTagName(name: "symbol"): NodeListOf<SVGSymbolElement>;
7002    getElementsByTagName(name: "table"): NodeListOf<HTMLTableElement>;
7003    getElementsByTagName(name: "tbody"): NodeListOf<HTMLTableSectionElement>;
7004    getElementsByTagName(name: "td"): NodeListOf<HTMLTableDataCellElement>;
7005    getElementsByTagName(name: "text"): NodeListOf<SVGTextElement>;
7006    getElementsByTagName(name: "textpath"): NodeListOf<SVGTextPathElement>;
7007    getElementsByTagName(name: "textarea"): NodeListOf<HTMLTextAreaElement>;
7008    getElementsByTagName(name: "tfoot"): NodeListOf<HTMLTableSectionElement>;
7009    getElementsByTagName(name: "th"): NodeListOf<HTMLTableHeaderCellElement>;
7010    getElementsByTagName(name: "thead"): NodeListOf<HTMLTableSectionElement>;
7011    getElementsByTagName(name: "title"): NodeListOf<HTMLTitleElement>;
7012    getElementsByTagName(name: "tr"): NodeListOf<HTMLTableRowElement>;
7013    getElementsByTagName(name: "track"): NodeListOf<HTMLTrackElement>;
7014    getElementsByTagName(name: "tspan"): NodeListOf<SVGTSpanElement>;
7015    getElementsByTagName(name: "tt"): NodeListOf<HTMLPhraseElement>;
7016    getElementsByTagName(name: "u"): NodeListOf<HTMLPhraseElement>;
7017    getElementsByTagName(name: "ul"): NodeListOf<HTMLUListElement>;
7018    getElementsByTagName(name: "use"): NodeListOf<SVGUseElement>;
7019    getElementsByTagName(name: "var"): NodeListOf<HTMLPhraseElement>;
7020    getElementsByTagName(name: "video"): NodeListOf<HTMLVideoElement>;
7021    getElementsByTagName(name: "view"): NodeListOf<SVGViewElement>;
7022    getElementsByTagName(name: "wbr"): NodeListOf<HTMLElement>;
7023    getElementsByTagName(name: "x-ms-webview"): NodeListOf<MSHTMLWebViewElement>;
7024    getElementsByTagName(name: "xmp"): NodeListOf<HTMLBlockElement>;
7025    getElementsByTagName(name: string): NodeListOf<Element>;
7026    getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf<Element>;
7027    hasAttribute(name: string): boolean;
7028    hasAttributeNS(namespaceURI: string, localName: string): boolean;
7029    msGetRegionContent(): MSRangeCollection;
7030    msGetUntransformedBounds(): ClientRect;
7031    msMatchesSelector(selectors: string): boolean;
7032    msReleasePointerCapture(pointerId: number): void;
7033    msSetPointerCapture(pointerId: number): void;
7034    msZoomTo(args: MsZoomToOptions): void;
7035    releasePointerCapture(pointerId: number): void;
7036    removeAttribute(name?: string): void;
7037    removeAttributeNS(namespaceURI: string, localName: string): void;
7038    removeAttributeNode(oldAttr: Attr): Attr;
7039    requestFullscreen(): void;
7040    requestPointerLock(): void;
7041    setAttribute(name?: string, value?: string): void;
7042    setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void;
7043    setAttributeNode(newAttr: Attr): Attr;
7044    setAttributeNodeNS(newAttr: Attr): Attr;
7045    setPointerCapture(pointerId: number): void;
7046    webkitMatchesSelector(selectors: string): boolean;
7047    webkitRequestFullScreen(): void;
7048    webkitRequestFullscreen(): void;
7049    getElementsByClassName(classNames: string): NodeListOf<Element>;
7050    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7051    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7052    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7053    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7054    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7055    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7056    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7057    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7058    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7059    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7060    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7061    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7062    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7063    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7064    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7065    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7066    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7067    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
7068    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
7069    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7070    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7071    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7072    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7073    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7074    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7075    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7076    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7077    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7078    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7079    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7080    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7081    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7082    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7083    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
7084    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
7085    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
7086    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
7087}
7088
7089declare var Element: {
7090    prototype: Element;
7091    new(): Element;
7092}
7093
7094interface ErrorEvent extends Event {
7095    colno: number;
7096    error: any;
7097    filename: string;
7098    lineno: number;
7099    message: string;
7100    initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void;
7101}
7102
7103declare var ErrorEvent: {
7104    prototype: ErrorEvent;
7105    new(): ErrorEvent;
7106}
7107
7108interface Event {
7109    bubbles: boolean;
7110    cancelBubble: boolean;
7111    cancelable: boolean;
7112    currentTarget: EventTarget;
7113    defaultPrevented: boolean;
7114    eventPhase: number;
7115    isTrusted: boolean;
7116    returnValue: boolean;
7117    srcElement: Element;
7118    target: EventTarget;
7119    timeStamp: number;
7120    type: string;
7121    initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void;
7122    preventDefault(): void;
7123    stopImmediatePropagation(): void;
7124    stopPropagation(): void;
7125    AT_TARGET: number;
7126    BUBBLING_PHASE: number;
7127    CAPTURING_PHASE: number;
7128}
7129
7130declare var Event: {
7131    prototype: Event;
7132    new(type: string, eventInitDict?: EventInit): Event;
7133    AT_TARGET: number;
7134    BUBBLING_PHASE: number;
7135    CAPTURING_PHASE: number;
7136}
7137
7138interface EventTarget {
7139    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
7140    dispatchEvent(evt: Event): boolean;
7141    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
7142}
7143
7144declare var EventTarget: {
7145    prototype: EventTarget;
7146    new(): EventTarget;
7147}
7148
7149interface External {
7150}
7151
7152declare var External: {
7153    prototype: External;
7154    new(): External;
7155}
7156
7157interface File extends Blob {
7158    lastModifiedDate: any;
7159    name: string;
7160}
7161
7162declare var File: {
7163    prototype: File;
7164    new (parts: (ArrayBuffer | ArrayBufferView | Blob | string)[], filename: string, properties?: FilePropertyBag): File;
7165}
7166
7167interface FileList {
7168    length: number;
7169    item(index: number): File;
7170    [index: number]: File;
7171}
7172
7173declare var FileList: {
7174    prototype: FileList;
7175    new(): FileList;
7176}
7177
7178interface FileReader extends EventTarget, MSBaseReader {
7179    error: DOMError;
7180    readAsArrayBuffer(blob: Blob): void;
7181    readAsBinaryString(blob: Blob): void;
7182    readAsDataURL(blob: Blob): void;
7183    readAsText(blob: Blob, encoding?: string): void;
7184    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
7185}
7186
7187declare var FileReader: {
7188    prototype: FileReader;
7189    new(): FileReader;
7190}
7191
7192interface FocusEvent extends UIEvent {
7193    relatedTarget: EventTarget;
7194    initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void;
7195}
7196
7197declare var FocusEvent: {
7198    prototype: FocusEvent;
7199    new(typeArg: string, eventInitDict?: FocusEventInit): FocusEvent;
7200}
7201
7202interface FormData {
7203    append(name: any, value: any, blobName?: string): void;
7204}
7205
7206declare var FormData: {
7207    prototype: FormData;
7208    new (form?: HTMLFormElement): FormData;
7209}
7210
7211interface GainNode extends AudioNode {
7212    gain: AudioParam;
7213}
7214
7215declare var GainNode: {
7216    prototype: GainNode;
7217    new(): GainNode;
7218}
7219
7220interface Gamepad {
7221    axes: number[];
7222    buttons: GamepadButton[];
7223    connected: boolean;
7224    id: string;
7225    index: number;
7226    mapping: string;
7227    timestamp: number;
7228}
7229
7230declare var Gamepad: {
7231    prototype: Gamepad;
7232    new(): Gamepad;
7233}
7234
7235interface GamepadButton {
7236    pressed: boolean;
7237    value: number;
7238}
7239
7240declare var GamepadButton: {
7241    prototype: GamepadButton;
7242    new(): GamepadButton;
7243}
7244
7245interface GamepadEvent extends Event {
7246    gamepad: Gamepad;
7247}
7248
7249declare var GamepadEvent: {
7250    prototype: GamepadEvent;
7251    new(): GamepadEvent;
7252}
7253
7254interface Geolocation {
7255    clearWatch(watchId: number): void;
7256    getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): void;
7257    watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): number;
7258}
7259
7260declare var Geolocation: {
7261    prototype: Geolocation;
7262    new(): Geolocation;
7263}
7264
7265interface HTMLAllCollection extends HTMLCollection {
7266    namedItem(name: string): Element;
7267}
7268
7269declare var HTMLAllCollection: {
7270    prototype: HTMLAllCollection;
7271    new(): HTMLAllCollection;
7272}
7273
7274interface HTMLAnchorElement extends HTMLElement {
7275    Methods: string;
7276    /**
7277      * Sets or retrieves the character set used to encode the object.
7278      */
7279    charset: string;
7280    /**
7281      * Sets or retrieves the coordinates of the object.
7282      */
7283    coords: string;
7284    /**
7285      * Contains the anchor portion of the URL including the hash sign (#).
7286      */
7287    hash: string;
7288    /**
7289      * Contains the hostname and port values of the URL.
7290      */
7291    host: string;
7292    /**
7293      * Contains the hostname of a URL.
7294      */
7295    hostname: string;
7296    /**
7297      * Sets or retrieves a destination URL or an anchor point.
7298      */
7299    href: string;
7300    /**
7301      * Sets or retrieves the language code of the object.
7302      */
7303    hreflang: string;
7304    mimeType: string;
7305    /**
7306      * Sets or retrieves the shape of the object.
7307      */
7308    name: string;
7309    nameProp: string;
7310    /**
7311      * Contains the pathname of the URL.
7312      */
7313    pathname: string;
7314    /**
7315      * Sets or retrieves the port number associated with a URL.
7316      */
7317    port: string;
7318    /**
7319      * Contains the protocol of the URL.
7320      */
7321    protocol: string;
7322    protocolLong: string;
7323    /**
7324      * Sets or retrieves the relationship between the object and the destination of the link.
7325      */
7326    rel: string;
7327    /**
7328      * Sets or retrieves the relationship between the object and the destination of the link.
7329      */
7330    rev: string;
7331    /**
7332      * Sets or retrieves the substring of the href property that follows the question mark.
7333      */
7334    search: string;
7335    /**
7336      * Sets or retrieves the shape of the object.
7337      */
7338    shape: string;
7339    /**
7340      * Sets or retrieves the window or frame at which to target content.
7341      */
7342    target: string;
7343    /**
7344      * Retrieves or sets the text of the object as a string.
7345      */
7346    text: string;
7347    type: string;
7348    urn: string;
7349    /**
7350      * Returns a string representation of an object.
7351      */
7352    toString(): string;
7353}
7354
7355declare var HTMLAnchorElement: {
7356    prototype: HTMLAnchorElement;
7357    new(): HTMLAnchorElement;
7358}
7359
7360interface HTMLAppletElement extends HTMLElement {
7361    /**
7362      * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element.
7363      */
7364    BaseHref: string;
7365    align: string;
7366    /**
7367      * Sets or retrieves a text alternative to the graphic.
7368      */
7369    alt: string;
7370    /**
7371      * Gets or sets the optional alternative HTML script to execute if the object fails to load.
7372      */
7373    altHtml: string;
7374    /**
7375      * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
7376      */
7377    archive: string;
7378    border: string;
7379    code: string;
7380    /**
7381      * Sets or retrieves the URL of the component.
7382      */
7383    codeBase: string;
7384    /**
7385      * Sets or retrieves the Internet media type for the code associated with the object.
7386      */
7387    codeType: string;
7388    /**
7389      * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned.
7390      */
7391    contentDocument: Document;
7392    /**
7393      * Sets or retrieves the URL that references the data of the object.
7394      */
7395    data: string;
7396    /**
7397      * Sets or retrieves a character string that can be used to implement your own declare functionality for the object.
7398      */
7399    declare: boolean;
7400    form: HTMLFormElement;
7401    /**
7402      * Sets or retrieves the height of the object.
7403      */
7404    height: string;
7405    hspace: number;
7406    /**
7407      * Sets or retrieves the shape of the object.
7408      */
7409    name: string;
7410    object: string;
7411    /**
7412      * Sets or retrieves a message to be displayed while an object is loading.
7413      */
7414    standby: string;
7415    /**
7416      * Returns the content type of the object.
7417      */
7418    type: string;
7419    /**
7420      * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
7421      */
7422    useMap: string;
7423    vspace: number;
7424    width: number;
7425}
7426
7427declare var HTMLAppletElement: {
7428    prototype: HTMLAppletElement;
7429    new(): HTMLAppletElement;
7430}
7431
7432interface HTMLAreaElement extends HTMLElement {
7433    /**
7434      * Sets or retrieves a text alternative to the graphic.
7435      */
7436    alt: string;
7437    /**
7438      * Sets or retrieves the coordinates of the object.
7439      */
7440    coords: string;
7441    /**
7442      * Sets or retrieves the subsection of the href property that follows the number sign (#).
7443      */
7444    hash: string;
7445    /**
7446      * Sets or retrieves the hostname and port number of the location or URL.
7447      */
7448    host: string;
7449    /**
7450      * Sets or retrieves the host name part of the location or URL.
7451      */
7452    hostname: string;
7453    /**
7454      * Sets or retrieves a destination URL or an anchor point.
7455      */
7456    href: string;
7457    /**
7458      * Sets or gets whether clicks in this region cause action.
7459      */
7460    noHref: boolean;
7461    /**
7462      * Sets or retrieves the file name or path specified by the object.
7463      */
7464    pathname: string;
7465    /**
7466      * Sets or retrieves the port number associated with a URL.
7467      */
7468    port: string;
7469    /**
7470      * Sets or retrieves the protocol portion of a URL.
7471      */
7472    protocol: string;
7473    rel: string;
7474    /**
7475      * Sets or retrieves the substring of the href property that follows the question mark.
7476      */
7477    search: string;
7478    /**
7479      * Sets or retrieves the shape of the object.
7480      */
7481    shape: string;
7482    /**
7483      * Sets or retrieves the window or frame at which to target content.
7484      */
7485    target: string;
7486    /**
7487      * Returns a string representation of an object.
7488      */
7489    toString(): string;
7490}
7491
7492declare var HTMLAreaElement: {
7493    prototype: HTMLAreaElement;
7494    new(): HTMLAreaElement;
7495}
7496
7497interface HTMLAreasCollection extends HTMLCollection {
7498    /**
7499      * Adds an element to the areas, controlRange, or options collection.
7500      */
7501    add(element: HTMLElement, before?: HTMLElement | number): void;
7502    /**
7503      * Removes an element from the collection.
7504      */
7505    remove(index?: number): void;
7506}
7507
7508declare var HTMLAreasCollection: {
7509    prototype: HTMLAreasCollection;
7510    new(): HTMLAreasCollection;
7511}
7512
7513interface HTMLAudioElement extends HTMLMediaElement {
7514}
7515
7516declare var HTMLAudioElement: {
7517    prototype: HTMLAudioElement;
7518    new(): HTMLAudioElement;
7519}
7520
7521interface HTMLBRElement extends HTMLElement {
7522    /**
7523      * Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document.
7524      */
7525    clear: string;
7526}
7527
7528declare var HTMLBRElement: {
7529    prototype: HTMLBRElement;
7530    new(): HTMLBRElement;
7531}
7532
7533interface HTMLBaseElement extends HTMLElement {
7534    /**
7535      * Gets or sets the baseline URL on which relative links are based.
7536      */
7537    href: string;
7538    /**
7539      * Sets or retrieves the window or frame at which to target content.
7540      */
7541    target: string;
7542}
7543
7544declare var HTMLBaseElement: {
7545    prototype: HTMLBaseElement;
7546    new(): HTMLBaseElement;
7547}
7548
7549interface HTMLBaseFontElement extends HTMLElement, DOML2DeprecatedColorProperty {
7550    /**
7551      * Sets or retrieves the current typeface family.
7552      */
7553    face: string;
7554    /**
7555      * Sets or retrieves the font size of the object.
7556      */
7557    size: number;
7558    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
7559}
7560
7561declare var HTMLBaseFontElement: {
7562    prototype: HTMLBaseFontElement;
7563    new(): HTMLBaseFontElement;
7564}
7565
7566interface HTMLBlockElement extends HTMLElement {
7567    /**
7568      * Sets or retrieves reference information about the object.
7569      */
7570    cite: string;
7571    clear: string;
7572    /**
7573      * Sets or retrieves the width of the object.
7574      */
7575    width: number;
7576}
7577
7578declare var HTMLBlockElement: {
7579    prototype: HTMLBlockElement;
7580    new(): HTMLBlockElement;
7581}
7582
7583interface HTMLBodyElement extends HTMLElement {
7584    aLink: any;
7585    background: string;
7586    bgColor: any;
7587    bgProperties: string;
7588    link: any;
7589    noWrap: boolean;
7590    onafterprint: (ev: Event) => any;
7591    onbeforeprint: (ev: Event) => any;
7592    onbeforeunload: (ev: BeforeUnloadEvent) => any;
7593    onblur: (ev: FocusEvent) => any;
7594    onerror: (ev: Event) => any;
7595    onfocus: (ev: FocusEvent) => any;
7596    onhashchange: (ev: HashChangeEvent) => any;
7597    onload: (ev: Event) => any;
7598    onmessage: (ev: MessageEvent) => any;
7599    onoffline: (ev: Event) => any;
7600    ononline: (ev: Event) => any;
7601    onorientationchange: (ev: Event) => any;
7602    onpagehide: (ev: PageTransitionEvent) => any;
7603    onpageshow: (ev: PageTransitionEvent) => any;
7604    onpopstate: (ev: PopStateEvent) => any;
7605    onresize: (ev: UIEvent) => any;
7606    onstorage: (ev: StorageEvent) => any;
7607    onunload: (ev: Event) => any;
7608    text: any;
7609    vLink: any;
7610    createTextRange(): TextRange;
7611    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7612    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7613    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7614    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7615    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7616    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7617    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7618    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7619    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
7620    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7621    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
7622    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7623    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7624    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7625    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7626    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7627    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7628    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7629    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
7630    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7631    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7632    addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void;
7633    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
7634    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7635    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7636    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7637    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7638    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7639    addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void;
7640    addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void;
7641    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
7642    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
7643    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
7644    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
7645    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
7646    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7647    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
7648    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7649    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7650    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
7651    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7652    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7653    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7654    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7655    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7656    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7657    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7658    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7659    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7660    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7661    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
7662    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
7663    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
7664    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
7665    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
7666    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
7667    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
7668    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7669    addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void;
7670    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
7671    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
7672    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
7673    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
7674    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
7675    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
7676    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
7677    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
7678    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
7679    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7680    addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
7681    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7682    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7683    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7684    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7685    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7686    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7687    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
7688    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
7689    addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void;
7690    addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void;
7691    addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
7692    addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
7693    addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
7694    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
7695    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
7696    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
7697    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
7698    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7699    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7700    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7701    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7702    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7703    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7704    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7705    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
7706    addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void;
7707    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
7708    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
7709    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
7710    addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7711    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7712    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
7713    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
7714    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
7715    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
7716    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
7717    addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void;
7718    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
7719    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
7720    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
7721    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7722    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7723    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7724    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
7725    addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void;
7726    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
7727    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
7728    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
7729    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
7730    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
7731    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
7732}
7733
7734declare var HTMLBodyElement: {
7735    prototype: HTMLBodyElement;
7736    new(): HTMLBodyElement;
7737}
7738
7739interface HTMLButtonElement extends HTMLElement {
7740    /**
7741      * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing.
7742      */
7743    autofocus: boolean;
7744    disabled: boolean;
7745    /**
7746      * Retrieves a reference to the form that the object is embedded in.
7747      */
7748    form: HTMLFormElement;
7749    /**
7750      * Overrides the action attribute (where the data on a form is sent) on the parent form element.
7751      */
7752    formAction: string;
7753    /**
7754      * Used to override the encoding (formEnctype attribute) specified on the form element.
7755      */
7756    formEnctype: string;
7757    /**
7758      * Overrides the submit method attribute previously specified on a form element.
7759      */
7760    formMethod: string;
7761    /**
7762      * Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option.
7763      */
7764    formNoValidate: string;
7765    /**
7766      * Overrides the target attribute on a form element.
7767      */
7768    formTarget: string;
7769    /**
7770      * Sets or retrieves the name of the object.
7771      */
7772    name: string;
7773    status: any;
7774    /**
7775      * Gets the classification and default behavior of the button.
7776      */
7777    type: string;
7778    /**
7779      * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
7780      */
7781    validationMessage: string;
7782    /**
7783      * Returns a  ValidityState object that represents the validity states of an element.
7784      */
7785    validity: ValidityState;
7786    /**
7787      * Sets or retrieves the default or selected value of the control.
7788      */
7789    value: string;
7790    /**
7791      * Returns whether an element will successfully validate based on forms validation rules and constraints.
7792      */
7793    willValidate: boolean;
7794    /**
7795      * Returns whether a form will validate when it is submitted, without having to submit it.
7796      */
7797    checkValidity(): boolean;
7798    /**
7799      * Creates a TextRange object for the element.
7800      */
7801    createTextRange(): TextRange;
7802    /**
7803      * Sets a custom error message that is displayed when a form is submitted.
7804      * @param error Sets a custom error message that is displayed when a form is submitted.
7805      */
7806    setCustomValidity(error: string): void;
7807}
7808
7809declare var HTMLButtonElement: {
7810    prototype: HTMLButtonElement;
7811    new(): HTMLButtonElement;
7812}
7813
7814interface HTMLCanvasElement extends HTMLElement {
7815    /**
7816      * Gets or sets the height of a canvas element on a document.
7817      */
7818    height: number;
7819    /**
7820      * Gets or sets the width of a canvas element on a document.
7821      */
7822    width: number;
7823    /**
7824      * Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
7825      * @param contextId The identifier (ID) of the type of canvas to create. Internet Explorer 9 and Internet Explorer 10 support only a 2-D context using canvas.getContext("2d"); IE11 Preview also supports 3-D or WebGL context using canvas.getContext("experimental-webgl");
7826      */
7827    getContext(contextId: "2d"): CanvasRenderingContext2D;
7828    getContext(contextId: "experimental-webgl"): WebGLRenderingContext;
7829    getContext(contextId: string, ...args: any[]): CanvasRenderingContext2D | WebGLRenderingContext;
7830    /**
7831      * Returns a blob object encoded as a Portable Network Graphics (PNG) format from a canvas image or drawing.
7832      */
7833    msToBlob(): Blob;
7834    /**
7835      * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.
7836      * @param type The standard MIME type for the image format to return. If you do not specify this parameter, the default value is a PNG format image.
7837      */
7838    toDataURL(type?: string, ...args: any[]): string;
7839}
7840
7841declare var HTMLCanvasElement: {
7842    prototype: HTMLCanvasElement;
7843    new(): HTMLCanvasElement;
7844}
7845
7846interface HTMLCollection {
7847    /**
7848      * Sets or retrieves the number of objects in a collection.
7849      */
7850    length: number;
7851    /**
7852      * Retrieves an object from various collections.
7853      */
7854    item(nameOrIndex?: any, optionalIndex?: any): Element;
7855    /**
7856      * Retrieves a select object or an object from an options collection.
7857      */
7858    namedItem(name: string): Element;
7859    [index: number]: Element;
7860}
7861
7862declare var HTMLCollection: {
7863    prototype: HTMLCollection;
7864    new(): HTMLCollection;
7865}
7866
7867interface HTMLDDElement extends HTMLElement {
7868    /**
7869      * Sets or retrieves whether the browser automatically performs wordwrap.
7870      */
7871    noWrap: boolean;
7872}
7873
7874declare var HTMLDDElement: {
7875    prototype: HTMLDDElement;
7876    new(): HTMLDDElement;
7877}
7878
7879interface HTMLDListElement extends HTMLElement {
7880    compact: boolean;
7881}
7882
7883declare var HTMLDListElement: {
7884    prototype: HTMLDListElement;
7885    new(): HTMLDListElement;
7886}
7887
7888interface HTMLDTElement extends HTMLElement {
7889    /**
7890      * Sets or retrieves whether the browser automatically performs wordwrap.
7891      */
7892    noWrap: boolean;
7893}
7894
7895declare var HTMLDTElement: {
7896    prototype: HTMLDTElement;
7897    new(): HTMLDTElement;
7898}
7899
7900interface HTMLDataListElement extends HTMLElement {
7901    options: HTMLCollection;
7902}
7903
7904declare var HTMLDataListElement: {
7905    prototype: HTMLDataListElement;
7906    new(): HTMLDataListElement;
7907}
7908
7909interface HTMLDirectoryElement extends HTMLElement {
7910    compact: boolean;
7911}
7912
7913declare var HTMLDirectoryElement: {
7914    prototype: HTMLDirectoryElement;
7915    new(): HTMLDirectoryElement;
7916}
7917
7918interface HTMLDivElement extends HTMLElement {
7919    /**
7920      * Sets or retrieves how the object is aligned with adjacent text.
7921      */
7922    align: string;
7923    /**
7924      * Sets or retrieves whether the browser automatically performs wordwrap.
7925      */
7926    noWrap: boolean;
7927}
7928
7929declare var HTMLDivElement: {
7930    prototype: HTMLDivElement;
7931    new(): HTMLDivElement;
7932}
7933
7934interface HTMLDocument extends Document {
7935}
7936
7937declare var HTMLDocument: {
7938    prototype: HTMLDocument;
7939    new(): HTMLDocument;
7940}
7941
7942interface HTMLElement extends Element {
7943    accessKey: string;
7944    children: HTMLCollection;
7945    contentEditable: string;
7946    dataset: DOMStringMap;
7947    dir: string;
7948    draggable: boolean;
7949    hidden: boolean;
7950    hideFocus: boolean;
7951    innerHTML: string;
7952    innerText: string;
7953    isContentEditable: boolean;
7954    lang: string;
7955    offsetHeight: number;
7956    offsetLeft: number;
7957    offsetParent: Element;
7958    offsetTop: number;
7959    offsetWidth: number;
7960    onabort: (ev: Event) => any;
7961    onactivate: (ev: UIEvent) => any;
7962    onbeforeactivate: (ev: UIEvent) => any;
7963    onbeforecopy: (ev: DragEvent) => any;
7964    onbeforecut: (ev: DragEvent) => any;
7965    onbeforedeactivate: (ev: UIEvent) => any;
7966    onbeforepaste: (ev: DragEvent) => any;
7967    onblur: (ev: FocusEvent) => any;
7968    oncanplay: (ev: Event) => any;
7969    oncanplaythrough: (ev: Event) => any;
7970    onchange: (ev: Event) => any;
7971    onclick: (ev: MouseEvent) => any;
7972    oncontextmenu: (ev: PointerEvent) => any;
7973    oncopy: (ev: DragEvent) => any;
7974    oncuechange: (ev: Event) => any;
7975    oncut: (ev: DragEvent) => any;
7976    ondblclick: (ev: MouseEvent) => any;
7977    ondeactivate: (ev: UIEvent) => any;
7978    ondrag: (ev: DragEvent) => any;
7979    ondragend: (ev: DragEvent) => any;
7980    ondragenter: (ev: DragEvent) => any;
7981    ondragleave: (ev: DragEvent) => any;
7982    ondragover: (ev: DragEvent) => any;
7983    ondragstart: (ev: DragEvent) => any;
7984    ondrop: (ev: DragEvent) => any;
7985    ondurationchange: (ev: Event) => any;
7986    onemptied: (ev: Event) => any;
7987    onended: (ev: Event) => any;
7988    onerror: (ev: Event) => any;
7989    onfocus: (ev: FocusEvent) => any;
7990    oninput: (ev: Event) => any;
7991    onkeydown: (ev: KeyboardEvent) => any;
7992    onkeypress: (ev: KeyboardEvent) => any;
7993    onkeyup: (ev: KeyboardEvent) => any;
7994    onload: (ev: Event) => any;
7995    onloadeddata: (ev: Event) => any;
7996    onloadedmetadata: (ev: Event) => any;
7997    onloadstart: (ev: Event) => any;
7998    onmousedown: (ev: MouseEvent) => any;
7999    onmouseenter: (ev: MouseEvent) => any;
8000    onmouseleave: (ev: MouseEvent) => any;
8001    onmousemove: (ev: MouseEvent) => any;
8002    onmouseout: (ev: MouseEvent) => any;
8003    onmouseover: (ev: MouseEvent) => any;
8004    onmouseup: (ev: MouseEvent) => any;
8005    onmousewheel: (ev: MouseWheelEvent) => any;
8006    onmscontentzoom: (ev: UIEvent) => any;
8007    onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any;
8008    onpaste: (ev: DragEvent) => any;
8009    onpause: (ev: Event) => any;
8010    onplay: (ev: Event) => any;
8011    onplaying: (ev: Event) => any;
8012    onprogress: (ev: ProgressEvent) => any;
8013    onratechange: (ev: Event) => any;
8014    onreset: (ev: Event) => any;
8015    onscroll: (ev: UIEvent) => any;
8016    onseeked: (ev: Event) => any;
8017    onseeking: (ev: Event) => any;
8018    onselect: (ev: UIEvent) => any;
8019    onselectstart: (ev: Event) => any;
8020    onstalled: (ev: Event) => any;
8021    onsubmit: (ev: Event) => any;
8022    onsuspend: (ev: Event) => any;
8023    ontimeupdate: (ev: Event) => any;
8024    onvolumechange: (ev: Event) => any;
8025    onwaiting: (ev: Event) => any;
8026    outerHTML: string;
8027    outerText: string;
8028    spellcheck: boolean;
8029    style: CSSStyleDeclaration;
8030    tabIndex: number;
8031    title: string;
8032    blur(): void;
8033    click(): void;
8034    contains(child: HTMLElement): boolean;
8035    dragDrop(): boolean;
8036    focus(): void;
8037    insertAdjacentElement(position: string, insertedElement: Element): Element;
8038    insertAdjacentHTML(where: string, html: string): void;
8039    insertAdjacentText(where: string, text: string): void;
8040    msGetInputContext(): MSInputMethodContext;
8041    scrollIntoView(top?: boolean): void;
8042    setActive(): void;
8043    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8044    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8045    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8046    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8047    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8048    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8049    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8050    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8051    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8052    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8053    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
8054    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8055    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8056    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8057    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8058    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8059    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8060    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8061    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8062    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8063    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8064    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
8065    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8066    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8067    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8068    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8069    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8070    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8071    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
8072    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
8073    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
8074    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8075    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
8076    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8077    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8078    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8079    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8080    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8081    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8082    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8083    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8084    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8085    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8086    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8087    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8088    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8089    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8090    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
8091    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
8092    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
8093    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8094    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8095    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
8096    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8097    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8098    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8099    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8100    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
8101    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
8102    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8103    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8104    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8105    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8106    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8107    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8108    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8109    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8110    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8111    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
8112    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8113    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
8114    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
8115    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
8116    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8117    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8118    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8119    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8120    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8121    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8122    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8123    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8124    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
8125    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8126    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
8127    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8128    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
8129    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
8130    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8131    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8132    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
8133    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
8134    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
8135    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
8136    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8137    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8138    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8139    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8140    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8141    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
8142    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8143    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
8144    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
8145    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8146}
8147
8148declare var HTMLElement: {
8149    prototype: HTMLElement;
8150    new(): HTMLElement;
8151}
8152
8153interface HTMLEmbedElement extends HTMLElement, GetSVGDocument {
8154    /**
8155      * Sets or retrieves the height of the object.
8156      */
8157    height: string;
8158    hidden: any;
8159    /**
8160      * Gets or sets whether the DLNA PlayTo device is available.
8161      */
8162    msPlayToDisabled: boolean;
8163    /**
8164      * Gets or sets the path to the preferred media source. This enables the Play To target device to stream the media content, which can be DRM protected, from a different location, such as a cloud media server.
8165      */
8166    msPlayToPreferredSourceUri: string;
8167    /**
8168      * Gets or sets the primary DLNA PlayTo device.
8169      */
8170    msPlayToPrimary: boolean;
8171    /**
8172      * Gets the source associated with the media element for use by the PlayToManager.
8173      */
8174    msPlayToSource: any;
8175    /**
8176      * Sets or retrieves the name of the object.
8177      */
8178    name: string;
8179    /**
8180      * Retrieves the palette used for the embedded document.
8181      */
8182    palette: string;
8183    /**
8184      * Retrieves the URL of the plug-in used to view an embedded document.
8185      */
8186    pluginspage: string;
8187    readyState: string;
8188    /**
8189      * Sets or retrieves a URL to be loaded by the object.
8190      */
8191    src: string;
8192    /**
8193      * Sets or retrieves the height and width units of the embed object.
8194      */
8195    units: string;
8196    /**
8197      * Sets or retrieves the width of the object.
8198      */
8199    width: string;
8200    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8201}
8202
8203declare var HTMLEmbedElement: {
8204    prototype: HTMLEmbedElement;
8205    new(): HTMLEmbedElement;
8206}
8207
8208interface HTMLFieldSetElement extends HTMLElement {
8209    /**
8210      * Sets or retrieves how the object is aligned with adjacent text.
8211      */
8212    align: string;
8213    disabled: boolean;
8214    /**
8215      * Retrieves a reference to the form that the object is embedded in.
8216      */
8217    form: HTMLFormElement;
8218    /**
8219      * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
8220      */
8221    validationMessage: string;
8222    /**
8223      * Returns a  ValidityState object that represents the validity states of an element.
8224      */
8225    validity: ValidityState;
8226    /**
8227      * Returns whether an element will successfully validate based on forms validation rules and constraints.
8228      */
8229    willValidate: boolean;
8230    /**
8231      * Returns whether a form will validate when it is submitted, without having to submit it.
8232      */
8233    checkValidity(): boolean;
8234    /**
8235      * Sets a custom error message that is displayed when a form is submitted.
8236      * @param error Sets a custom error message that is displayed when a form is submitted.
8237      */
8238    setCustomValidity(error: string): void;
8239}
8240
8241declare var HTMLFieldSetElement: {
8242    prototype: HTMLFieldSetElement;
8243    new(): HTMLFieldSetElement;
8244}
8245
8246interface HTMLFontElement extends HTMLElement, DOML2DeprecatedColorProperty, DOML2DeprecatedSizeProperty {
8247    /**
8248      * Sets or retrieves the current typeface family.
8249      */
8250    face: string;
8251    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8252}
8253
8254declare var HTMLFontElement: {
8255    prototype: HTMLFontElement;
8256    new(): HTMLFontElement;
8257}
8258
8259interface HTMLFormElement extends HTMLElement {
8260    /**
8261      * Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form.
8262      */
8263    acceptCharset: string;
8264    /**
8265      * Sets or retrieves the URL to which the form content is sent for processing.
8266      */
8267    action: string;
8268    /**
8269      * Specifies whether autocomplete is applied to an editable text field.
8270      */
8271    autocomplete: string;
8272    /**
8273      * Retrieves a collection, in source order, of all controls in a given form.
8274      */
8275    elements: HTMLCollection;
8276    /**
8277      * Sets or retrieves the MIME encoding for the form.
8278      */
8279    encoding: string;
8280    /**
8281      * Sets or retrieves the encoding type for the form.
8282      */
8283    enctype: string;
8284    /**
8285      * Sets or retrieves the number of objects in a collection.
8286      */
8287    length: number;
8288    /**
8289      * Sets or retrieves how to send the form data to the server.
8290      */
8291    method: string;
8292    /**
8293      * Sets or retrieves the name of the object.
8294      */
8295    name: string;
8296    /**
8297      * Designates a form that is not validated when submitted.
8298      */
8299    noValidate: boolean;
8300    /**
8301      * Sets or retrieves the window or frame at which to target content.
8302      */
8303    target: string;
8304    /**
8305      * Returns whether a form will validate when it is submitted, without having to submit it.
8306      */
8307    checkValidity(): boolean;
8308    /**
8309      * Retrieves a form object or an object from an elements collection.
8310      * @param name Variant of type Number or String that specifies the object or collection to retrieve. If this parameter is a Number, it is the zero-based index of the object. If this parameter is a string, all objects with matching name or id properties are retrieved, and a collection is returned if more than one match is made.
8311      * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned.
8312      */
8313    item(name?: any, index?: any): any;
8314    /**
8315      * Retrieves a form object or an object from an elements collection.
8316      */
8317    namedItem(name: string): any;
8318    /**
8319      * Fires when the user resets a form.
8320      */
8321    reset(): void;
8322    /**
8323      * Fires when a FORM is about to be submitted.
8324      */
8325    submit(): void;
8326    [name: string]: any;
8327}
8328
8329declare var HTMLFormElement: {
8330    prototype: HTMLFormElement;
8331    new(): HTMLFormElement;
8332}
8333
8334interface HTMLFrameElement extends HTMLElement, GetSVGDocument {
8335    /**
8336      * Specifies the properties of a border drawn around an object.
8337      */
8338    border: string;
8339    /**
8340      * Sets or retrieves the border color of the object.
8341      */
8342    borderColor: any;
8343    /**
8344      * Retrieves the document object of the page or frame.
8345      */
8346    contentDocument: Document;
8347    /**
8348      * Retrieves the object of the specified.
8349      */
8350    contentWindow: Window;
8351    /**
8352      * Sets or retrieves whether to display a border for the frame.
8353      */
8354    frameBorder: string;
8355    /**
8356      * Sets or retrieves the amount of additional space between the frames.
8357      */
8358    frameSpacing: any;
8359    /**
8360      * Sets or retrieves the height of the object.
8361      */
8362    height: string | number;
8363    /**
8364      * Sets or retrieves a URI to a long description of the object.
8365      */
8366    longDesc: string;
8367    /**
8368      * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
8369      */
8370    marginHeight: string;
8371    /**
8372      * Sets or retrieves the left and right margin widths before displaying the text in a frame.
8373      */
8374    marginWidth: string;
8375    /**
8376      * Sets or retrieves the frame name.
8377      */
8378    name: string;
8379    /**
8380      * Sets or retrieves whether the user can resize the frame.
8381      */
8382    noResize: boolean;
8383    /**
8384      * Raised when the object has been completely received from the server.
8385      */
8386    onload: (ev: Event) => any;
8387    /**
8388      * Sets or retrieves whether the frame can be scrolled.
8389      */
8390    scrolling: string;
8391    /**
8392      * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied.
8393      */
8394    security: any;
8395    /**
8396      * Sets or retrieves a URL to be loaded by the object.
8397      */
8398    src: string;
8399    /**
8400      * Sets or retrieves the width of the object.
8401      */
8402    width: string | number;
8403    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8404    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8405    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8406    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8407    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8408    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8409    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8410    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8411    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8412    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8413    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
8414    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8415    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8416    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8417    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8418    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8419    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8420    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8421    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8422    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8423    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8424    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
8425    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8426    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8427    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8428    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8429    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8430    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8431    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
8432    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
8433    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
8434    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8435    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
8436    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8437    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8438    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8439    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8440    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8441    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8442    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8443    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8444    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8445    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8446    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8447    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8448    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8449    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8450    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
8451    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
8452    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
8453    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8454    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8455    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
8456    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8457    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8458    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8459    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8460    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8461    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
8462    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
8463    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8464    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8465    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8466    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8467    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8468    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8469    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8470    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8471    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8472    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
8473    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8474    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
8475    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
8476    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
8477    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8478    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8479    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8480    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8481    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8482    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8483    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8484    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8485    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
8486    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8487    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
8488    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8489    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
8490    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
8491    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8492    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8493    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
8494    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
8495    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
8496    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
8497    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8498    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8499    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8500    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8501    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8502    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
8503    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8504    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
8505    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
8506    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8507}
8508
8509declare var HTMLFrameElement: {
8510    prototype: HTMLFrameElement;
8511    new(): HTMLFrameElement;
8512}
8513
8514interface HTMLFrameSetElement extends HTMLElement {
8515    border: string;
8516    /**
8517      * Sets or retrieves the border color of the object.
8518      */
8519    borderColor: any;
8520    /**
8521      * Sets or retrieves the frame widths of the object.
8522      */
8523    cols: string;
8524    /**
8525      * Sets or retrieves whether to display a border for the frame.
8526      */
8527    frameBorder: string;
8528    /**
8529      * Sets or retrieves the amount of additional space between the frames.
8530      */
8531    frameSpacing: any;
8532    name: string;
8533    onafterprint: (ev: Event) => any;
8534    onbeforeprint: (ev: Event) => any;
8535    onbeforeunload: (ev: BeforeUnloadEvent) => any;
8536    /**
8537      * Fires when the object loses the input focus.
8538      */
8539    onblur: (ev: FocusEvent) => any;
8540    onerror: (ev: Event) => any;
8541    /**
8542      * Fires when the object receives focus.
8543      */
8544    onfocus: (ev: FocusEvent) => any;
8545    onhashchange: (ev: HashChangeEvent) => any;
8546    onload: (ev: Event) => any;
8547    onmessage: (ev: MessageEvent) => any;
8548    onoffline: (ev: Event) => any;
8549    ononline: (ev: Event) => any;
8550    onorientationchange: (ev: Event) => any;
8551    onpagehide: (ev: PageTransitionEvent) => any;
8552    onpageshow: (ev: PageTransitionEvent) => any;
8553    onresize: (ev: UIEvent) => any;
8554    onstorage: (ev: StorageEvent) => any;
8555    onunload: (ev: Event) => any;
8556    /**
8557      * Sets or retrieves the frame heights of the object.
8558      */
8559    rows: string;
8560    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8561    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8562    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8563    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8564    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8565    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8566    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8567    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8568    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8569    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8570    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
8571    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8572    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8573    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8574    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8575    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8576    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8577    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8578    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8579    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8580    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8581    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
8582    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8583    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8584    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8585    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8586    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8587    addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void;
8588    addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void;
8589    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8590    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8591    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
8592    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
8593    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
8594    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8595    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
8596    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8597    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8598    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8599    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8600    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8601    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8602    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8603    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8604    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8605    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8606    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8607    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8608    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8609    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8610    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
8611    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
8612    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
8613    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
8614    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8615    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8616    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8617    addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void;
8618    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
8619    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8620    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8621    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8622    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8623    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8624    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
8625    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
8626    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8627    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8628    addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
8629    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8630    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8631    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8632    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8633    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8634    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8635    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8636    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
8637    addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void;
8638    addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void;
8639    addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8640    addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
8641    addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
8642    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8643    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
8644    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
8645    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
8646    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8647    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8648    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8649    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8650    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8651    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8652    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8653    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8654    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
8655    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8656    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
8657    addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8658    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8659    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
8660    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
8661    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8662    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8663    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
8664    addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void;
8665    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
8666    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
8667    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
8668    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8669    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8670    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8671    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8672    addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void;
8673    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8674    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
8675    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8676    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
8677    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
8678    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8679}
8680
8681declare var HTMLFrameSetElement: {
8682    prototype: HTMLFrameSetElement;
8683    new(): HTMLFrameSetElement;
8684}
8685
8686interface HTMLHRElement extends HTMLElement, DOML2DeprecatedColorProperty, DOML2DeprecatedSizeProperty {
8687    /**
8688      * Sets or retrieves how the object is aligned with adjacent text.
8689      */
8690    align: string;
8691    /**
8692      * Sets or retrieves whether the horizontal rule is drawn with 3-D shading.
8693      */
8694    noShade: boolean;
8695    /**
8696      * Sets or retrieves the width of the object.
8697      */
8698    width: number;
8699    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8700}
8701
8702declare var HTMLHRElement: {
8703    prototype: HTMLHRElement;
8704    new(): HTMLHRElement;
8705}
8706
8707interface HTMLHeadElement extends HTMLElement {
8708    profile: string;
8709}
8710
8711declare var HTMLHeadElement: {
8712    prototype: HTMLHeadElement;
8713    new(): HTMLHeadElement;
8714}
8715
8716interface HTMLHeadingElement extends HTMLElement {
8717    /**
8718      * Sets or retrieves a value that indicates the table alignment.
8719      */
8720    align: string;
8721    clear: string;
8722}
8723
8724declare var HTMLHeadingElement: {
8725    prototype: HTMLHeadingElement;
8726    new(): HTMLHeadingElement;
8727}
8728
8729interface HTMLHtmlElement extends HTMLElement {
8730    /**
8731      * Sets or retrieves the DTD version that governs the current document.
8732      */
8733    version: string;
8734}
8735
8736declare var HTMLHtmlElement: {
8737    prototype: HTMLHtmlElement;
8738    new(): HTMLHtmlElement;
8739}
8740
8741interface HTMLIFrameElement extends HTMLElement, GetSVGDocument {
8742    /**
8743      * Sets or retrieves how the object is aligned with adjacent text.
8744      */
8745    align: string;
8746    allowFullscreen: boolean;
8747    /**
8748      * Specifies the properties of a border drawn around an object.
8749      */
8750    border: string;
8751    /**
8752      * Retrieves the document object of the page or frame.
8753      */
8754    contentDocument: Document;
8755    /**
8756      * Retrieves the object of the specified.
8757      */
8758    contentWindow: Window;
8759    /**
8760      * Sets or retrieves whether to display a border for the frame.
8761      */
8762    frameBorder: string;
8763    /**
8764      * Sets or retrieves the amount of additional space between the frames.
8765      */
8766    frameSpacing: any;
8767    /**
8768      * Sets or retrieves the height of the object.
8769      */
8770    height: string;
8771    /**
8772      * Sets or retrieves the horizontal margin for the object.
8773      */
8774    hspace: number;
8775    /**
8776      * Sets or retrieves a URI to a long description of the object.
8777      */
8778    longDesc: string;
8779    /**
8780      * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
8781      */
8782    marginHeight: string;
8783    /**
8784      * Sets or retrieves the left and right margin widths before displaying the text in a frame.
8785      */
8786    marginWidth: string;
8787    /**
8788      * Sets or retrieves the frame name.
8789      */
8790    name: string;
8791    /**
8792      * Sets or retrieves whether the user can resize the frame.
8793      */
8794    noResize: boolean;
8795    /**
8796      * Raised when the object has been completely received from the server.
8797      */
8798    onload: (ev: Event) => any;
8799    sandbox: DOMSettableTokenList;
8800    /**
8801      * Sets or retrieves whether the frame can be scrolled.
8802      */
8803    scrolling: string;
8804    /**
8805      * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied.
8806      */
8807    security: any;
8808    /**
8809      * Sets or retrieves a URL to be loaded by the object.
8810      */
8811    src: string;
8812    /**
8813      * Sets or retrieves the vertical margin for the object.
8814      */
8815    vspace: number;
8816    /**
8817      * Sets or retrieves the width of the object.
8818      */
8819    width: string;
8820    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8821    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8822    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8823    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8824    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8825    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8826    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8827    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8828    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
8829    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8830    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
8831    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8832    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8833    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8834    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8835    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8836    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8837    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8838    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
8839    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8840    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8841    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
8842    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8843    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8844    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8845    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8846    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8847    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8848    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
8849    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
8850    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
8851    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8852    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
8853    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8854    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8855    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8856    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8857    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8858    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8859    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8860    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8861    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8862    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8863    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8864    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8865    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8866    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8867    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
8868    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
8869    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
8870    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
8871    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8872    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
8873    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8874    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8875    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
8876    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8877    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
8878    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
8879    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
8880    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8881    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8882    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8883    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8884    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8885    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8886    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8887    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8888    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
8889    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
8890    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
8891    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
8892    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
8893    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
8894    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8895    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8896    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8897    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8898    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8899    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8900    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8901    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
8902    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
8903    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8904    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
8905    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8906    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
8907    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
8908    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
8909    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
8910    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
8911    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
8912    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
8913    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
8914    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8915    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8916    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8917    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
8918    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
8919    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
8920    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
8921    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
8922    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
8923    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
8924}
8925
8926declare var HTMLIFrameElement: {
8927    prototype: HTMLIFrameElement;
8928    new(): HTMLIFrameElement;
8929}
8930
8931interface HTMLImageElement extends HTMLElement {
8932    /**
8933      * Sets or retrieves how the object is aligned with adjacent text.
8934      */
8935    align: string;
8936    /**
8937      * Sets or retrieves a text alternative to the graphic.
8938      */
8939    alt: string;
8940    /**
8941      * Specifies the properties of a border drawn around an object.
8942      */
8943    border: string;
8944    /**
8945      * Retrieves whether the object is fully loaded.
8946      */
8947    complete: boolean;
8948    crossOrigin: string;
8949    currentSrc: string;
8950    /**
8951      * Sets or retrieves the height of the object.
8952      */
8953    height: number;
8954    /**
8955      * Sets or retrieves the width of the border to draw around the object.
8956      */
8957    hspace: number;
8958    /**
8959      * Sets or retrieves whether the image is a server-side image map.
8960      */
8961    isMap: boolean;
8962    /**
8963      * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object.
8964      */
8965    longDesc: string;
8966    /**
8967      * Gets or sets whether the DLNA PlayTo device is available.
8968      */
8969    msPlayToDisabled: boolean;
8970    msPlayToPreferredSourceUri: string;
8971    /**
8972      * Gets or sets the primary DLNA PlayTo device.
8973      */
8974    msPlayToPrimary: boolean;
8975    /**
8976      * Gets the source associated with the media element for use by the PlayToManager.
8977      */
8978    msPlayToSource: any;
8979    /**
8980      * Sets or retrieves the name of the object.
8981      */
8982    name: string;
8983    /**
8984      * The original height of the image resource before sizing.
8985      */
8986    naturalHeight: number;
8987    /**
8988      * The original width of the image resource before sizing.
8989      */
8990    naturalWidth: number;
8991    /**
8992      * The address or URL of the a media resource that is to be considered.
8993      */
8994    src: string;
8995    srcset: string;
8996    /**
8997      * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
8998      */
8999    useMap: string;
9000    /**
9001      * Sets or retrieves the vertical margin for the object.
9002      */
9003    vspace: number;
9004    /**
9005      * Sets or retrieves the width of the object.
9006      */
9007    width: number;
9008    x: number;
9009    y: number;
9010    msGetAsCastingSource(): any;
9011}
9012
9013declare var HTMLImageElement: {
9014    prototype: HTMLImageElement;
9015    new(): HTMLImageElement;
9016    create(): HTMLImageElement;
9017}
9018
9019interface HTMLInputElement extends HTMLElement {
9020    /**
9021      * Sets or retrieves a comma-separated list of content types.
9022      */
9023    accept: string;
9024    /**
9025      * Sets or retrieves how the object is aligned with adjacent text.
9026      */
9027    align: string;
9028    /**
9029      * Sets or retrieves a text alternative to the graphic.
9030      */
9031    alt: string;
9032    /**
9033      * Specifies whether autocomplete is applied to an editable text field.
9034      */
9035    autocomplete: string;
9036    /**
9037      * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing.
9038      */
9039    autofocus: boolean;
9040    /**
9041      * Sets or retrieves the width of the border to draw around the object.
9042      */
9043    border: string;
9044    /**
9045      * Sets or retrieves the state of the check box or radio button.
9046      */
9047    checked: boolean;
9048    /**
9049      * Retrieves whether the object is fully loaded.
9050      */
9051    complete: boolean;
9052    /**
9053      * Sets or retrieves the state of the check box or radio button.
9054      */
9055    defaultChecked: boolean;
9056    /**
9057      * Sets or retrieves the initial contents of the object.
9058      */
9059    defaultValue: string;
9060    disabled: boolean;
9061    /**
9062      * Returns a FileList object on a file type input object.
9063      */
9064    files: FileList;
9065    /**
9066      * Retrieves a reference to the form that the object is embedded in.
9067      */
9068    form: HTMLFormElement;
9069    /**
9070      * Overrides the action attribute (where the data on a form is sent) on the parent form element.
9071      */
9072    formAction: string;
9073    /**
9074      * Used to override the encoding (formEnctype attribute) specified on the form element.
9075      */
9076    formEnctype: string;
9077    /**
9078      * Overrides the submit method attribute previously specified on a form element.
9079      */
9080    formMethod: string;
9081    /**
9082      * Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option.
9083      */
9084    formNoValidate: string;
9085    /**
9086      * Overrides the target attribute on a form element.
9087      */
9088    formTarget: string;
9089    /**
9090      * Sets or retrieves the height of the object.
9091      */
9092    height: string;
9093    /**
9094      * Sets or retrieves the width of the border to draw around the object.
9095      */
9096    hspace: number;
9097    indeterminate: boolean;
9098    /**
9099      * Specifies the ID of a pre-defined datalist of options for an input element.
9100      */
9101    list: HTMLElement;
9102    /**
9103      * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field.
9104      */
9105    max: string;
9106    /**
9107      * Sets or retrieves the maximum number of characters that the user can enter in a text control.
9108      */
9109    maxLength: number;
9110    /**
9111      * Defines the minimum acceptable value for an input element with type="number". When used with the max and step attributes, lets you control the range and increment (such as even numbers only) that the user can enter into an input field.
9112      */
9113    min: string;
9114    /**
9115      * Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list.
9116      */
9117    multiple: boolean;
9118    /**
9119      * Sets or retrieves the name of the object.
9120      */
9121    name: string;
9122    /**
9123      * Gets or sets a string containing a regular expression that the user's input must match.
9124      */
9125    pattern: string;
9126    /**
9127      * Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field.
9128      */
9129    placeholder: string;
9130    readOnly: boolean;
9131    /**
9132      * When present, marks an element that can't be submitted without a value.
9133      */
9134    required: boolean;
9135    /**
9136      * Gets or sets the end position or offset of a text selection.
9137      */
9138    selectionEnd: number;
9139    /**
9140      * Gets or sets the starting position or offset of a text selection.
9141      */
9142    selectionStart: number;
9143    size: number;
9144    /**
9145      * The address or URL of the a media resource that is to be considered.
9146      */
9147    src: string;
9148    status: boolean;
9149    /**
9150      * Defines an increment or jump between values that you want to allow the user to enter. When used with the max and min attributes, lets you control the range and increment (for example, allow only even numbers) that the user can enter into an input field.
9151      */
9152    step: string;
9153    /**
9154      * Returns the content type of the object.
9155      */
9156    type: string;
9157    /**
9158      * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
9159      */
9160    useMap: string;
9161    /**
9162      * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
9163      */
9164    validationMessage: string;
9165    /**
9166      * Returns a  ValidityState object that represents the validity states of an element.
9167      */
9168    validity: ValidityState;
9169    /**
9170      * Returns the value of the data at the cursor's current position.
9171      */
9172    value: string;
9173    valueAsDate: Date;
9174    /**
9175      * Returns the input field value as a number.
9176      */
9177    valueAsNumber: number;
9178    /**
9179      * Sets or retrieves the vertical margin for the object.
9180      */
9181    vspace: number;
9182    /**
9183      * Sets or retrieves the width of the object.
9184      */
9185    width: string;
9186    /**
9187      * Returns whether an element will successfully validate based on forms validation rules and constraints.
9188      */
9189    willValidate: boolean;
9190    /**
9191      * Returns whether a form will validate when it is submitted, without having to submit it.
9192      */
9193    checkValidity(): boolean;
9194    /**
9195      * Creates a TextRange object for the element.
9196      */
9197    createTextRange(): TextRange;
9198    /**
9199      * Makes the selection equal to the current object.
9200      */
9201    select(): void;
9202    /**
9203      * Sets a custom error message that is displayed when a form is submitted.
9204      * @param error Sets a custom error message that is displayed when a form is submitted.
9205      */
9206    setCustomValidity(error: string): void;
9207    /**
9208      * Sets the start and end positions of a selection in a text field.
9209      * @param start The offset into the text field for the start of the selection.
9210      * @param end The offset into the text field for the end of the selection.
9211      */
9212    setSelectionRange(start: number, end: number): void;
9213    /**
9214      * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value.
9215      * @param n Value to decrement the value by.
9216      */
9217    stepDown(n?: number): void;
9218    /**
9219      * Increments a range input control's value by the value given by the Step attribute. If the optional parameter is used, will increment the input control's value by that value.
9220      * @param n Value to increment the value by.
9221      */
9222    stepUp(n?: number): void;
9223}
9224
9225declare var HTMLInputElement: {
9226    prototype: HTMLInputElement;
9227    new(): HTMLInputElement;
9228}
9229
9230interface HTMLIsIndexElement extends HTMLElement {
9231    /**
9232      * Sets or retrieves the URL to which the form content is sent for processing.
9233      */
9234    action: string;
9235    /**
9236      * Retrieves a reference to the form that the object is embedded in.
9237      */
9238    form: HTMLFormElement;
9239    prompt: string;
9240}
9241
9242declare var HTMLIsIndexElement: {
9243    prototype: HTMLIsIndexElement;
9244    new(): HTMLIsIndexElement;
9245}
9246
9247interface HTMLLIElement extends HTMLElement {
9248    type: string;
9249    /**
9250      * Sets or retrieves the value of a list item.
9251      */
9252    value: number;
9253}
9254
9255declare var HTMLLIElement: {
9256    prototype: HTMLLIElement;
9257    new(): HTMLLIElement;
9258}
9259
9260interface HTMLLabelElement extends HTMLElement {
9261    /**
9262      * Retrieves a reference to the form that the object is embedded in.
9263      */
9264    form: HTMLFormElement;
9265    /**
9266      * Sets or retrieves the object to which the given label object is assigned.
9267      */
9268    htmlFor: string;
9269}
9270
9271declare var HTMLLabelElement: {
9272    prototype: HTMLLabelElement;
9273    new(): HTMLLabelElement;
9274}
9275
9276interface HTMLLegendElement extends HTMLElement {
9277    /**
9278      * Retrieves a reference to the form that the object is embedded in.
9279      */
9280    align: string;
9281    /**
9282      * Retrieves a reference to the form that the object is embedded in.
9283      */
9284    form: HTMLFormElement;
9285}
9286
9287declare var HTMLLegendElement: {
9288    prototype: HTMLLegendElement;
9289    new(): HTMLLegendElement;
9290}
9291
9292interface HTMLLinkElement extends HTMLElement, LinkStyle {
9293    /**
9294      * Sets or retrieves the character set used to encode the object.
9295      */
9296    charset: string;
9297    disabled: boolean;
9298    /**
9299      * Sets or retrieves a destination URL or an anchor point.
9300      */
9301    href: string;
9302    /**
9303      * Sets or retrieves the language code of the object.
9304      */
9305    hreflang: string;
9306    /**
9307      * Sets or retrieves the media type.
9308      */
9309    media: string;
9310    /**
9311      * Sets or retrieves the relationship between the object and the destination of the link.
9312      */
9313    rel: string;
9314    /**
9315      * Sets or retrieves the relationship between the object and the destination of the link.
9316      */
9317    rev: string;
9318    /**
9319      * Sets or retrieves the window or frame at which to target content.
9320      */
9321    target: string;
9322    /**
9323      * Sets or retrieves the MIME type of the object.
9324      */
9325    type: string;
9326    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
9327}
9328
9329declare var HTMLLinkElement: {
9330    prototype: HTMLLinkElement;
9331    new(): HTMLLinkElement;
9332}
9333
9334interface HTMLMapElement extends HTMLElement {
9335    /**
9336      * Retrieves a collection of the area objects defined for the given map object.
9337      */
9338    areas: HTMLAreasCollection;
9339    /**
9340      * Sets or retrieves the name of the object.
9341      */
9342    name: string;
9343}
9344
9345declare var HTMLMapElement: {
9346    prototype: HTMLMapElement;
9347    new(): HTMLMapElement;
9348}
9349
9350interface HTMLMarqueeElement extends HTMLElement {
9351    behavior: string;
9352    bgColor: any;
9353    direction: string;
9354    height: string;
9355    hspace: number;
9356    loop: number;
9357    onbounce: (ev: Event) => any;
9358    onfinish: (ev: Event) => any;
9359    onstart: (ev: Event) => any;
9360    scrollAmount: number;
9361    scrollDelay: number;
9362    trueSpeed: boolean;
9363    vspace: number;
9364    width: string;
9365    start(): void;
9366    stop(): void;
9367    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9368    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9369    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9370    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9371    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9372    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9373    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9374    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9375    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9376    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9377    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
9378    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9379    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9380    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9381    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9382    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9383    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9384    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9385    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9386    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9387    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9388    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
9389    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9390    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9391    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9392    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9393    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9394    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
9395    addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void;
9396    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
9397    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
9398    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
9399    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9400    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
9401    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9402    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9403    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
9404    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9405    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9406    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9407    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9408    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9409    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9410    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9411    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9412    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9413    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9414    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
9415    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
9416    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
9417    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
9418    addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void;
9419    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
9420    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9421    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
9422    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
9423    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
9424    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
9425    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
9426    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
9427    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
9428    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
9429    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9430    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9431    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9432    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9433    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9434    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9435    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9436    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9437    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
9438    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9439    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
9440    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
9441    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
9442    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9443    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9444    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9445    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9446    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9447    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9448    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9449    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9450    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
9451    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
9452    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
9453    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9454    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
9455    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
9456    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9457    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
9458    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
9459    addEventListener(type: "start", listener: (ev: Event) => any, useCapture?: boolean): void;
9460    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
9461    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
9462    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
9463    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9464    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9465    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9466    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9467    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
9468    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
9469    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
9470    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
9471    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
9472    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
9473}
9474
9475declare var HTMLMarqueeElement: {
9476    prototype: HTMLMarqueeElement;
9477    new(): HTMLMarqueeElement;
9478}
9479
9480interface HTMLMediaElement extends HTMLElement {
9481    /**
9482      * Returns an AudioTrackList object with the audio tracks for a given video element.
9483      */
9484    audioTracks: AudioTrackList;
9485    /**
9486      * Gets or sets a value that indicates whether to start playing the media automatically.
9487      */
9488    autoplay: boolean;
9489    /**
9490      * Gets a collection of buffered time ranges.
9491      */
9492    buffered: TimeRanges;
9493    /**
9494      * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player).
9495      */
9496    controls: boolean;
9497    /**
9498      * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement.
9499      */
9500    currentSrc: string;
9501    /**
9502      * Gets or sets the current playback position, in seconds.
9503      */
9504    currentTime: number;
9505    defaultMuted: boolean;
9506    /**
9507      * Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource.
9508      */
9509    defaultPlaybackRate: number;
9510    /**
9511      * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming.
9512      */
9513    duration: number;
9514    /**
9515      * Gets information about whether the playback has ended or not.
9516      */
9517    ended: boolean;
9518    /**
9519      * Returns an object representing the current error state of the audio or video element.
9520      */
9521    error: MediaError;
9522    /**
9523      * Gets or sets a flag to specify whether playback should restart after it completes.
9524      */
9525    loop: boolean;
9526    /**
9527      * Specifies the purpose of the audio or video media, such as background audio or alerts.
9528      */
9529    msAudioCategory: string;
9530    /**
9531      * Specifies the output device id that the audio will be sent to.
9532      */
9533    msAudioDeviceType: string;
9534    msGraphicsTrustStatus: MSGraphicsTrust;
9535    /**
9536      * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element.
9537      */
9538    msKeys: MSMediaKeys;
9539    /**
9540      * Gets or sets whether the DLNA PlayTo device is available.
9541      */
9542    msPlayToDisabled: boolean;
9543    /**
9544      * Gets or sets the path to the preferred media source. This enables the Play To target device to stream the media content, which can be DRM protected, from a different location, such as a cloud media server.
9545      */
9546    msPlayToPreferredSourceUri: string;
9547    /**
9548      * Gets or sets the primary DLNA PlayTo device.
9549      */
9550    msPlayToPrimary: boolean;
9551    /**
9552      * Gets the source associated with the media element for use by the PlayToManager.
9553      */
9554    msPlayToSource: any;
9555    /**
9556      * Specifies whether or not to enable low-latency playback on the media element.
9557      */
9558    msRealTime: boolean;
9559    /**
9560      * Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted.
9561      */
9562    muted: boolean;
9563    /**
9564      * Gets the current network activity for the element.
9565      */
9566    networkState: number;
9567    onmsneedkey: (ev: MSMediaKeyNeededEvent) => any;
9568    /**
9569      * Gets a flag that specifies whether playback is paused.
9570      */
9571    paused: boolean;
9572    /**
9573      * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource.
9574      */
9575    playbackRate: number;
9576    /**
9577      * Gets TimeRanges for the current media resource that has been played.
9578      */
9579    played: TimeRanges;
9580    /**
9581      * Gets or sets the current playback position, in seconds.
9582      */
9583    preload: string;
9584    readyState: any;
9585    /**
9586      * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked.
9587      */
9588    seekable: TimeRanges;
9589    /**
9590      * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource.
9591      */
9592    seeking: boolean;
9593    /**
9594      * The address or URL of the a media resource that is to be considered.
9595      */
9596    src: string;
9597    textTracks: TextTrackList;
9598    videoTracks: VideoTrackList;
9599    /**
9600      * Gets or sets the volume level for audio portions of the media element.
9601      */
9602    volume: number;
9603    addTextTrack(kind: string, label?: string, language?: string): TextTrack;
9604    /**
9605      * Returns a string that specifies whether the client can play a given media resource type.
9606      */
9607    canPlayType(type: string): string;
9608    /**
9609      * Fires immediately after the client loads the object.
9610      */
9611    load(): void;
9612    /**
9613      * Clears all effects from the media pipeline.
9614      */
9615    msClearEffects(): void;
9616    msGetAsCastingSource(): any;
9617    /**
9618      * Inserts the specified audio effect into media pipeline.
9619      */
9620    msInsertAudioEffect(activatableClassId: string, effectRequired: boolean, config?: any): void;
9621    msSetMediaKeys(mediaKeys: MSMediaKeys): void;
9622    /**
9623      * Specifies the media protection manager for a given media pipeline.
9624      */
9625    msSetMediaProtectionManager(mediaProtectionManager?: any): void;
9626    /**
9627      * Pauses the current playback and sets paused to TRUE. This can be used to test whether the media is playing or paused. You can also use the pause or play events to tell whether the media is playing or not.
9628      */
9629    pause(): void;
9630    /**
9631      * Loads and starts playback of a media resource.
9632      */
9633    play(): void;
9634    HAVE_CURRENT_DATA: number;
9635    HAVE_ENOUGH_DATA: number;
9636    HAVE_FUTURE_DATA: number;
9637    HAVE_METADATA: number;
9638    HAVE_NOTHING: number;
9639    NETWORK_EMPTY: number;
9640    NETWORK_IDLE: number;
9641    NETWORK_LOADING: number;
9642    NETWORK_NO_SOURCE: number;
9643    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9644    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9645    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9646    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9647    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9648    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9649    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9650    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9651    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
9652    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9653    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
9654    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9655    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9656    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9657    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9658    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9659    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9660    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9661    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
9662    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9663    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9664    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
9665    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9666    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9667    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9668    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9669    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9670    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
9671    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
9672    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
9673    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
9674    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9675    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
9676    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9677    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9678    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
9679    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9680    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9681    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9682    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9683    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9684    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9685    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9686    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9687    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9688    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9689    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
9690    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
9691    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
9692    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
9693    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
9694    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9695    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
9696    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
9697    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
9698    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
9699    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
9700    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
9701    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
9702    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
9703    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9704    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9705    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9706    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9707    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9708    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9709    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9710    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
9711    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
9712    addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void;
9713    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
9714    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
9715    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
9716    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
9717    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9718    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9719    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9720    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9721    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9722    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9723    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9724    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
9725    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
9726    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
9727    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
9728    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9729    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
9730    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
9731    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
9732    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
9733    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
9734    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
9735    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
9736    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
9737    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9738    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9739    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9740    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
9741    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
9742    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
9743    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
9744    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
9745    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
9746    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
9747}
9748
9749declare var HTMLMediaElement: {
9750    prototype: HTMLMediaElement;
9751    new(): HTMLMediaElement;
9752    HAVE_CURRENT_DATA: number;
9753    HAVE_ENOUGH_DATA: number;
9754    HAVE_FUTURE_DATA: number;
9755    HAVE_METADATA: number;
9756    HAVE_NOTHING: number;
9757    NETWORK_EMPTY: number;
9758    NETWORK_IDLE: number;
9759    NETWORK_LOADING: number;
9760    NETWORK_NO_SOURCE: number;
9761}
9762
9763interface HTMLMenuElement extends HTMLElement {
9764    compact: boolean;
9765    type: string;
9766}
9767
9768declare var HTMLMenuElement: {
9769    prototype: HTMLMenuElement;
9770    new(): HTMLMenuElement;
9771}
9772
9773interface HTMLMetaElement extends HTMLElement {
9774    /**
9775      * Sets or retrieves the character set used to encode the object.
9776      */
9777    charset: string;
9778    /**
9779      * Gets or sets meta-information to associate with httpEquiv or name.
9780      */
9781    content: string;
9782    /**
9783      * Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header.
9784      */
9785    httpEquiv: string;
9786    /**
9787      * Sets or retrieves the value specified in the content attribute of the meta object.
9788      */
9789    name: string;
9790    /**
9791      * Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object.
9792      */
9793    scheme: string;
9794    /**
9795      * Sets or retrieves the URL property that will be loaded after the specified time has elapsed.
9796      */
9797    url: string;
9798}
9799
9800declare var HTMLMetaElement: {
9801    prototype: HTMLMetaElement;
9802    new(): HTMLMetaElement;
9803}
9804
9805interface HTMLModElement extends HTMLElement {
9806    /**
9807      * Sets or retrieves reference information about the object.
9808      */
9809    cite: string;
9810    /**
9811      * Sets or retrieves the date and time of a modification to the object.
9812      */
9813    dateTime: string;
9814}
9815
9816declare var HTMLModElement: {
9817    prototype: HTMLModElement;
9818    new(): HTMLModElement;
9819}
9820
9821interface HTMLNextIdElement extends HTMLElement {
9822    n: string;
9823}
9824
9825declare var HTMLNextIdElement: {
9826    prototype: HTMLNextIdElement;
9827    new(): HTMLNextIdElement;
9828}
9829
9830interface HTMLOListElement extends HTMLElement {
9831    compact: boolean;
9832    /**
9833      * The starting number.
9834      */
9835    start: number;
9836    type: string;
9837}
9838
9839declare var HTMLOListElement: {
9840    prototype: HTMLOListElement;
9841    new(): HTMLOListElement;
9842}
9843
9844interface HTMLObjectElement extends HTMLElement, GetSVGDocument {
9845    /**
9846      * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element.
9847      */
9848    BaseHref: string;
9849    align: string;
9850    /**
9851      * Sets or retrieves a text alternative to the graphic.
9852      */
9853    alt: string;
9854    /**
9855      * Gets or sets the optional alternative HTML script to execute if the object fails to load.
9856      */
9857    altHtml: string;
9858    /**
9859      * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
9860      */
9861    archive: string;
9862    border: string;
9863    /**
9864      * Sets or retrieves the URL of the file containing the compiled Java class.
9865      */
9866    code: string;
9867    /**
9868      * Sets or retrieves the URL of the component.
9869      */
9870    codeBase: string;
9871    /**
9872      * Sets or retrieves the Internet media type for the code associated with the object.
9873      */
9874    codeType: string;
9875    /**
9876      * Retrieves the document object of the page or frame.
9877      */
9878    contentDocument: Document;
9879    /**
9880      * Sets or retrieves the URL that references the data of the object.
9881      */
9882    data: string;
9883    declare: boolean;
9884    /**
9885      * Retrieves a reference to the form that the object is embedded in.
9886      */
9887    form: HTMLFormElement;
9888    /**
9889      * Sets or retrieves the height of the object.
9890      */
9891    height: string;
9892    hspace: number;
9893    /**
9894      * Gets or sets whether the DLNA PlayTo device is available.
9895      */
9896    msPlayToDisabled: boolean;
9897    /**
9898      * Gets or sets the path to the preferred media source. This enables the Play To target device to stream the media content, which can be DRM protected, from a different location, such as a cloud media server.
9899      */
9900    msPlayToPreferredSourceUri: string;
9901    /**
9902      * Gets or sets the primary DLNA PlayTo device.
9903      */
9904    msPlayToPrimary: boolean;
9905    /**
9906      * Gets the source associated with the media element for use by the PlayToManager.
9907      */
9908    msPlayToSource: any;
9909    /**
9910      * Sets or retrieves the name of the object.
9911      */
9912    name: string;
9913    /**
9914      * Retrieves the contained object.
9915      */
9916    object: any;
9917    readyState: number;
9918    /**
9919      * Sets or retrieves a message to be displayed while an object is loading.
9920      */
9921    standby: string;
9922    /**
9923      * Sets or retrieves the MIME type of the object.
9924      */
9925    type: string;
9926    /**
9927      * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
9928      */
9929    useMap: string;
9930    /**
9931      * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
9932      */
9933    validationMessage: string;
9934    /**
9935      * Returns a  ValidityState object that represents the validity states of an element.
9936      */
9937    validity: ValidityState;
9938    vspace: number;
9939    /**
9940      * Sets or retrieves the width of the object.
9941      */
9942    width: string;
9943    /**
9944      * Returns whether an element will successfully validate based on forms validation rules and constraints.
9945      */
9946    willValidate: boolean;
9947    /**
9948      * Returns whether a form will validate when it is submitted, without having to submit it.
9949      */
9950    checkValidity(): boolean;
9951    /**
9952      * Sets a custom error message that is displayed when a form is submitted.
9953      * @param error Sets a custom error message that is displayed when a form is submitted.
9954      */
9955    setCustomValidity(error: string): void;
9956    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
9957}
9958
9959declare var HTMLObjectElement: {
9960    prototype: HTMLObjectElement;
9961    new(): HTMLObjectElement;
9962}
9963
9964interface HTMLOptGroupElement extends HTMLElement {
9965    /**
9966      * Sets or retrieves the status of an option.
9967      */
9968    defaultSelected: boolean;
9969    disabled: boolean;
9970    /**
9971      * Retrieves a reference to the form that the object is embedded in.
9972      */
9973    form: HTMLFormElement;
9974    /**
9975      * Sets or retrieves the ordinal position of an option in a list box.
9976      */
9977    index: number;
9978    /**
9979      * Sets or retrieves a value that you can use to implement your own label functionality for the object.
9980      */
9981    label: string;
9982    /**
9983      * Sets or retrieves whether the option in the list box is the default item.
9984      */
9985    selected: boolean;
9986    /**
9987      * Sets or retrieves the text string specified by the option tag.
9988      */
9989    text: string;
9990    /**
9991      * Sets or retrieves the value which is returned to the server when the form control is submitted.
9992      */
9993    value: string;
9994}
9995
9996declare var HTMLOptGroupElement: {
9997    prototype: HTMLOptGroupElement;
9998    new(): HTMLOptGroupElement;
9999}
10000
10001interface HTMLOptionElement extends HTMLElement {
10002    /**
10003      * Sets or retrieves the status of an option.
10004      */
10005    defaultSelected: boolean;
10006    disabled: boolean;
10007    /**
10008      * Retrieves a reference to the form that the object is embedded in.
10009      */
10010    form: HTMLFormElement;
10011    /**
10012      * Sets or retrieves the ordinal position of an option in a list box.
10013      */
10014    index: number;
10015    /**
10016      * Sets or retrieves a value that you can use to implement your own label functionality for the object.
10017      */
10018    label: string;
10019    /**
10020      * Sets or retrieves whether the option in the list box is the default item.
10021      */
10022    selected: boolean;
10023    /**
10024      * Sets or retrieves the text string specified by the option tag.
10025      */
10026    text: string;
10027    /**
10028      * Sets or retrieves the value which is returned to the server when the form control is submitted.
10029      */
10030    value: string;
10031}
10032
10033declare var HTMLOptionElement: {
10034    prototype: HTMLOptionElement;
10035    new(): HTMLOptionElement;
10036    create(): HTMLOptionElement;
10037}
10038
10039interface HTMLParagraphElement extends HTMLElement {
10040    /**
10041      * Sets or retrieves how the object is aligned with adjacent text.
10042      */
10043    align: string;
10044    clear: string;
10045}
10046
10047declare var HTMLParagraphElement: {
10048    prototype: HTMLParagraphElement;
10049    new(): HTMLParagraphElement;
10050}
10051
10052interface HTMLParamElement extends HTMLElement {
10053    /**
10054      * Sets or retrieves the name of an input parameter for an element.
10055      */
10056    name: string;
10057    /**
10058      * Sets or retrieves the content type of the resource designated by the value attribute.
10059      */
10060    type: string;
10061    /**
10062      * Sets or retrieves the value of an input parameter for an element.
10063      */
10064    value: string;
10065    /**
10066      * Sets or retrieves the data type of the value attribute.
10067      */
10068    valueType: string;
10069}
10070
10071declare var HTMLParamElement: {
10072    prototype: HTMLParamElement;
10073    new(): HTMLParamElement;
10074}
10075
10076interface HTMLPhraseElement extends HTMLElement {
10077    /**
10078      * Sets or retrieves reference information about the object.
10079      */
10080    cite: string;
10081    /**
10082      * Sets or retrieves the date and time of a modification to the object.
10083      */
10084    dateTime: string;
10085}
10086
10087declare var HTMLPhraseElement: {
10088    prototype: HTMLPhraseElement;
10089    new(): HTMLPhraseElement;
10090}
10091
10092interface HTMLPreElement extends HTMLElement {
10093    /**
10094      * Indicates a citation by rendering text in italic type.
10095      */
10096    cite: string;
10097    clear: string;
10098    /**
10099      * Sets or gets a value that you can use to implement your own width functionality for the object.
10100      */
10101    width: number;
10102}
10103
10104declare var HTMLPreElement: {
10105    prototype: HTMLPreElement;
10106    new(): HTMLPreElement;
10107}
10108
10109interface HTMLProgressElement extends HTMLElement {
10110    /**
10111      * Retrieves a reference to the form that the object is embedded in.
10112      */
10113    form: HTMLFormElement;
10114    /**
10115      * Defines the maximum, or "done" value for a progress element.
10116      */
10117    max: number;
10118    /**
10119      * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar).
10120      */
10121    position: number;
10122    /**
10123      * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value.
10124      */
10125    value: number;
10126}
10127
10128declare var HTMLProgressElement: {
10129    prototype: HTMLProgressElement;
10130    new(): HTMLProgressElement;
10131}
10132
10133interface HTMLQuoteElement extends HTMLElement {
10134    /**
10135      * Sets or retrieves reference information about the object.
10136      */
10137    cite: string;
10138    /**
10139      * Sets or retrieves the date and time of a modification to the object.
10140      */
10141    dateTime: string;
10142}
10143
10144declare var HTMLQuoteElement: {
10145    prototype: HTMLQuoteElement;
10146    new(): HTMLQuoteElement;
10147}
10148
10149interface HTMLScriptElement extends HTMLElement {
10150    async: boolean;
10151    /**
10152      * Sets or retrieves the character set used to encode the object.
10153      */
10154    charset: string;
10155    /**
10156      * Sets or retrieves the status of the script.
10157      */
10158    defer: boolean;
10159    /**
10160      * Sets or retrieves the event for which the script is written.
10161      */
10162    event: string;
10163    /**
10164      * Sets or retrieves the object that is bound to the event script.
10165      */
10166    htmlFor: string;
10167    /**
10168      * Retrieves the URL to an external file that contains the source code or data.
10169      */
10170    src: string;
10171    /**
10172      * Retrieves or sets the text of the object as a string.
10173      */
10174    text: string;
10175    /**
10176      * Sets or retrieves the MIME type for the associated scripting engine.
10177      */
10178    type: string;
10179}
10180
10181declare var HTMLScriptElement: {
10182    prototype: HTMLScriptElement;
10183    new(): HTMLScriptElement;
10184}
10185
10186interface HTMLSelectElement extends HTMLElement {
10187    /**
10188      * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing.
10189      */
10190    autofocus: boolean;
10191    disabled: boolean;
10192    /**
10193      * Retrieves a reference to the form that the object is embedded in.
10194      */
10195    form: HTMLFormElement;
10196    /**
10197      * Sets or retrieves the number of objects in a collection.
10198      */
10199    length: number;
10200    /**
10201      * Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list.
10202      */
10203    multiple: boolean;
10204    /**
10205      * Sets or retrieves the name of the object.
10206      */
10207    name: string;
10208    options: HTMLSelectElement;
10209    /**
10210      * When present, marks an element that can't be submitted without a value.
10211      */
10212    required: boolean;
10213    /**
10214      * Sets or retrieves the index of the selected option in a select object.
10215      */
10216    selectedIndex: number;
10217    /**
10218      * Sets or retrieves the number of rows in the list box.
10219      */
10220    size: number;
10221    /**
10222      * Retrieves the type of select control based on the value of the MULTIPLE attribute.
10223      */
10224    type: string;
10225    /**
10226      * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
10227      */
10228    validationMessage: string;
10229    /**
10230      * Returns a  ValidityState object that represents the validity states of an element.
10231      */
10232    validity: ValidityState;
10233    /**
10234      * Sets or retrieves the value which is returned to the server when the form control is submitted.
10235      */
10236    value: string;
10237    /**
10238      * Returns whether an element will successfully validate based on forms validation rules and constraints.
10239      */
10240    willValidate: boolean;
10241    /**
10242      * Adds an element to the areas, controlRange, or options collection.
10243      * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection.
10244      * @param before Variant of type Object that specifies an element to insert before, or null to append the object to the collection.
10245      */
10246    add(element: HTMLElement, before?: HTMLElement | number): void;
10247    /**
10248      * Returns whether a form will validate when it is submitted, without having to submit it.
10249      */
10250    checkValidity(): boolean;
10251    /**
10252      * Retrieves a select object or an object from an options collection.
10253      * @param name Variant of type Number or String that specifies the object or collection to retrieve. If this parameter is an integer, it is the zero-based index of the object. If this parameter is a string, all objects with matching name or id properties are retrieved, and a collection is returned if more than one match is made.
10254      * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned.
10255      */
10256    item(name?: any, index?: any): any;
10257    /**
10258      * Retrieves a select object or an object from an options collection.
10259      * @param namedItem A String that specifies the name or id property of the object to retrieve. A collection is returned if more than one match is made.
10260      */
10261    namedItem(name: string): any;
10262    /**
10263      * Removes an element from the collection.
10264      * @param index Number that specifies the zero-based index of the element to remove from the collection.
10265      */
10266    remove(index?: number): void;
10267    /**
10268      * Sets a custom error message that is displayed when a form is submitted.
10269      * @param error Sets a custom error message that is displayed when a form is submitted.
10270      */
10271    setCustomValidity(error: string): void;
10272    [name: string]: any;
10273}
10274
10275declare var HTMLSelectElement: {
10276    prototype: HTMLSelectElement;
10277    new(): HTMLSelectElement;
10278}
10279
10280interface HTMLSourceElement extends HTMLElement {
10281    /**
10282      * Gets or sets the intended media type of the media source.
10283     */
10284    media: string;
10285    msKeySystem: string;
10286    /**
10287      * The address or URL of the a media resource that is to be considered.
10288      */
10289    src: string;
10290    /**
10291     * Gets or sets the MIME type of a media resource.
10292     */
10293    type: string;
10294}
10295
10296declare var HTMLSourceElement: {
10297    prototype: HTMLSourceElement;
10298    new(): HTMLSourceElement;
10299}
10300
10301interface HTMLSpanElement extends HTMLElement {
10302}
10303
10304declare var HTMLSpanElement: {
10305    prototype: HTMLSpanElement;
10306    new(): HTMLSpanElement;
10307}
10308
10309interface HTMLStyleElement extends HTMLElement, LinkStyle {
10310    /**
10311      * Sets or retrieves the media type.
10312      */
10313    media: string;
10314    /**
10315      * Retrieves the CSS language in which the style sheet is written.
10316      */
10317    type: string;
10318    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
10319}
10320
10321declare var HTMLStyleElement: {
10322    prototype: HTMLStyleElement;
10323    new(): HTMLStyleElement;
10324}
10325
10326interface HTMLTableCaptionElement extends HTMLElement {
10327    /**
10328      * Sets or retrieves the alignment of the caption or legend.
10329      */
10330    align: string;
10331    /**
10332      * Sets or retrieves whether the caption appears at the top or bottom of the table.
10333      */
10334    vAlign: string;
10335}
10336
10337declare var HTMLTableCaptionElement: {
10338    prototype: HTMLTableCaptionElement;
10339    new(): HTMLTableCaptionElement;
10340}
10341
10342interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment {
10343    /**
10344      * Sets or retrieves abbreviated text for the object.
10345      */
10346    abbr: string;
10347    /**
10348      * Sets or retrieves how the object is aligned with adjacent text.
10349      */
10350    align: string;
10351    /**
10352      * Sets or retrieves a comma-delimited list of conceptual categories associated with the object.
10353      */
10354    axis: string;
10355    bgColor: any;
10356    /**
10357      * Retrieves the position of the object in the cells collection of a row.
10358      */
10359    cellIndex: number;
10360    /**
10361      * Sets or retrieves the number columns in the table that the object should span.
10362      */
10363    colSpan: number;
10364    /**
10365      * Sets or retrieves a list of header cells that provide information for the object.
10366      */
10367    headers: string;
10368    /**
10369      * Sets or retrieves the height of the object.
10370      */
10371    height: any;
10372    /**
10373      * Sets or retrieves whether the browser automatically performs wordwrap.
10374      */
10375    noWrap: boolean;
10376    /**
10377      * Sets or retrieves how many rows in a table the cell should span.
10378      */
10379    rowSpan: number;
10380    /**
10381      * Sets or retrieves the group of cells in a table to which the object's information applies.
10382      */
10383    scope: string;
10384    /**
10385      * Sets or retrieves the width of the object.
10386      */
10387    width: string;
10388    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
10389}
10390
10391declare var HTMLTableCellElement: {
10392    prototype: HTMLTableCellElement;
10393    new(): HTMLTableCellElement;
10394}
10395
10396interface HTMLTableColElement extends HTMLElement, HTMLTableAlignment {
10397    /**
10398      * Sets or retrieves the alignment of the object relative to the display or table.
10399      */
10400    align: string;
10401    /**
10402      * Sets or retrieves the number of columns in the group.
10403      */
10404    span: number;
10405    /**
10406      * Sets or retrieves the width of the object.
10407      */
10408    width: any;
10409    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
10410}
10411
10412declare var HTMLTableColElement: {
10413    prototype: HTMLTableColElement;
10414    new(): HTMLTableColElement;
10415}
10416
10417interface HTMLTableDataCellElement extends HTMLTableCellElement {
10418}
10419
10420declare var HTMLTableDataCellElement: {
10421    prototype: HTMLTableDataCellElement;
10422    new(): HTMLTableDataCellElement;
10423}
10424
10425interface HTMLTableElement extends HTMLElement {
10426    /**
10427      * Sets or retrieves a value that indicates the table alignment.
10428      */
10429    align: string;
10430    bgColor: any;
10431    /**
10432      * Sets or retrieves the width of the border to draw around the object.
10433      */
10434    border: string;
10435    /**
10436      * Sets or retrieves the border color of the object.
10437      */
10438    borderColor: any;
10439    /**
10440      * Retrieves the caption object of a table.
10441      */
10442    caption: HTMLTableCaptionElement;
10443    /**
10444      * Sets or retrieves the amount of space between the border of the cell and the content of the cell.
10445      */
10446    cellPadding: string;
10447    /**
10448      * Sets or retrieves the amount of space between cells in a table.
10449      */
10450    cellSpacing: string;
10451    /**
10452      * Sets or retrieves the number of columns in the table.
10453      */
10454    cols: number;
10455    /**
10456      * Sets or retrieves the way the border frame around the table is displayed.
10457      */
10458    frame: string;
10459    /**
10460      * Sets or retrieves the height of the object.
10461      */
10462    height: any;
10463    /**
10464      * Sets or retrieves the number of horizontal rows contained in the object.
10465      */
10466    rows: HTMLCollection;
10467    /**
10468      * Sets or retrieves which dividing lines (inner borders) are displayed.
10469      */
10470    rules: string;
10471    /**
10472      * Sets or retrieves a description and/or structure of the object.
10473      */
10474    summary: string;
10475    /**
10476      * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order.
10477      */
10478    tBodies: HTMLCollection;
10479    /**
10480      * Retrieves the tFoot object of the table.
10481      */
10482    tFoot: HTMLTableSectionElement;
10483    /**
10484      * Retrieves the tHead object of the table.
10485      */
10486    tHead: HTMLTableSectionElement;
10487    /**
10488      * Sets or retrieves the width of the object.
10489      */
10490    width: string;
10491    /**
10492      * Creates an empty caption element in the table.
10493      */
10494    createCaption(): HTMLElement;
10495    /**
10496      * Creates an empty tBody element in the table.
10497      */
10498    createTBody(): HTMLElement;
10499    /**
10500      * Creates an empty tFoot element in the table.
10501      */
10502    createTFoot(): HTMLElement;
10503    /**
10504      * Returns the tHead element object if successful, or null otherwise.
10505      */
10506    createTHead(): HTMLElement;
10507    /**
10508      * Deletes the caption element and its contents from the table.
10509      */
10510    deleteCaption(): void;
10511    /**
10512      * Removes the specified row (tr) from the element and from the rows collection.
10513      * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
10514      */
10515    deleteRow(index?: number): void;
10516    /**
10517      * Deletes the tFoot element and its contents from the table.
10518      */
10519    deleteTFoot(): void;
10520    /**
10521      * Deletes the tHead element and its contents from the table.
10522      */
10523    deleteTHead(): void;
10524    /**
10525      * Creates a new row (tr) in the table, and adds the row to the rows collection.
10526      * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection.
10527      */
10528    insertRow(index?: number): HTMLElement;
10529}
10530
10531declare var HTMLTableElement: {
10532    prototype: HTMLTableElement;
10533    new(): HTMLTableElement;
10534}
10535
10536interface HTMLTableHeaderCellElement extends HTMLTableCellElement {
10537    /**
10538      * Sets or retrieves the group of cells in a table to which the object's information applies.
10539      */
10540    scope: string;
10541}
10542
10543declare var HTMLTableHeaderCellElement: {
10544    prototype: HTMLTableHeaderCellElement;
10545    new(): HTMLTableHeaderCellElement;
10546}
10547
10548interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment {
10549    /**
10550      * Sets or retrieves how the object is aligned with adjacent text.
10551      */
10552    align: string;
10553    bgColor: any;
10554    /**
10555      * Retrieves a collection of all cells in the table row.
10556      */
10557    cells: HTMLCollection;
10558    /**
10559      * Sets or retrieves the height of the object.
10560      */
10561    height: any;
10562    /**
10563      * Retrieves the position of the object in the rows collection for the table.
10564      */
10565    rowIndex: number;
10566    /**
10567      * Retrieves the position of the object in the collection.
10568      */
10569    sectionRowIndex: number;
10570    /**
10571      * Removes the specified cell from the table row, as well as from the cells collection.
10572      * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted.
10573      */
10574    deleteCell(index?: number): void;
10575    /**
10576      * Creates a new cell in the table row, and adds the cell to the cells collection.
10577      * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection.
10578      */
10579    insertCell(index?: number): HTMLElement;
10580    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
10581}
10582
10583declare var HTMLTableRowElement: {
10584    prototype: HTMLTableRowElement;
10585    new(): HTMLTableRowElement;
10586}
10587
10588interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment {
10589    /**
10590      * Sets or retrieves a value that indicates the table alignment.
10591      */
10592    align: string;
10593    /**
10594      * Sets or retrieves the number of horizontal rows contained in the object.
10595      */
10596    rows: HTMLCollection;
10597    /**
10598      * Removes the specified row (tr) from the element and from the rows collection.
10599      * @param index Number that specifies the zero-based position in the rows collection of the row to remove.
10600      */
10601    deleteRow(index?: number): void;
10602    /**
10603      * Creates a new row (tr) in the table, and adds the row to the rows collection.
10604      * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection.
10605      */
10606    insertRow(index?: number): HTMLElement;
10607    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
10608}
10609
10610declare var HTMLTableSectionElement: {
10611    prototype: HTMLTableSectionElement;
10612    new(): HTMLTableSectionElement;
10613}
10614
10615interface HTMLTextAreaElement extends HTMLElement {
10616    /**
10617      * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing.
10618      */
10619    autofocus: boolean;
10620    /**
10621      * Sets or retrieves the width of the object.
10622      */
10623    cols: number;
10624    /**
10625      * Sets or retrieves the initial contents of the object.
10626      */
10627    defaultValue: string;
10628    disabled: boolean;
10629    /**
10630      * Retrieves a reference to the form that the object is embedded in.
10631      */
10632    form: HTMLFormElement;
10633    /**
10634      * Sets or retrieves the maximum number of characters that the user can enter in a text control.
10635      */
10636    maxLength: number;
10637    /**
10638      * Sets or retrieves the name of the object.
10639      */
10640    name: string;
10641    /**
10642      * Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field.
10643      */
10644    placeholder: string;
10645    /**
10646      * Sets or retrieves the value indicated whether the content of the object is read-only.
10647      */
10648    readOnly: boolean;
10649    /**
10650      * When present, marks an element that can't be submitted without a value.
10651      */
10652    required: boolean;
10653    /**
10654      * Sets or retrieves the number of horizontal rows contained in the object.
10655      */
10656    rows: number;
10657    /**
10658      * Gets or sets the end position or offset of a text selection.
10659      */
10660    selectionEnd: number;
10661    /**
10662      * Gets or sets the starting position or offset of a text selection.
10663      */
10664    selectionStart: number;
10665    /**
10666      * Sets or retrieves the value indicating whether the control is selected.
10667      */
10668    status: any;
10669    /**
10670      * Retrieves the type of control.
10671      */
10672    type: string;
10673    /**
10674      * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
10675      */
10676    validationMessage: string;
10677    /**
10678      * Returns a  ValidityState object that represents the validity states of an element.
10679      */
10680    validity: ValidityState;
10681    /**
10682      * Retrieves or sets the text in the entry field of the textArea element.
10683      */
10684    value: string;
10685    /**
10686      * Returns whether an element will successfully validate based on forms validation rules and constraints.
10687      */
10688    willValidate: boolean;
10689    /**
10690      * Sets or retrieves how to handle wordwrapping in the object.
10691      */
10692    wrap: string;
10693    /**
10694      * Returns whether a form will validate when it is submitted, without having to submit it.
10695      */
10696    checkValidity(): boolean;
10697    /**
10698      * Creates a TextRange object for the element.
10699      */
10700    createTextRange(): TextRange;
10701    /**
10702      * Highlights the input area of a form element.
10703      */
10704    select(): void;
10705    /**
10706      * Sets a custom error message that is displayed when a form is submitted.
10707      * @param error Sets a custom error message that is displayed when a form is submitted.
10708      */
10709    setCustomValidity(error: string): void;
10710    /**
10711      * Sets the start and end positions of a selection in a text field.
10712      * @param start The offset into the text field for the start of the selection.
10713      * @param end The offset into the text field for the end of the selection.
10714      */
10715    setSelectionRange(start: number, end: number): void;
10716}
10717
10718declare var HTMLTextAreaElement: {
10719    prototype: HTMLTextAreaElement;
10720    new(): HTMLTextAreaElement;
10721}
10722
10723interface HTMLTitleElement extends HTMLElement {
10724    /**
10725      * Retrieves or sets the text of the object as a string.
10726      */
10727    text: string;
10728}
10729
10730declare var HTMLTitleElement: {
10731    prototype: HTMLTitleElement;
10732    new(): HTMLTitleElement;
10733}
10734
10735interface HTMLTrackElement extends HTMLElement {
10736    default: boolean;
10737    kind: string;
10738    label: string;
10739    readyState: number;
10740    src: string;
10741    srclang: string;
10742    track: TextTrack;
10743    ERROR: number;
10744    LOADED: number;
10745    LOADING: number;
10746    NONE: number;
10747}
10748
10749declare var HTMLTrackElement: {
10750    prototype: HTMLTrackElement;
10751    new(): HTMLTrackElement;
10752    ERROR: number;
10753    LOADED: number;
10754    LOADING: number;
10755    NONE: number;
10756}
10757
10758interface HTMLUListElement extends HTMLElement {
10759    compact: boolean;
10760    type: string;
10761}
10762
10763declare var HTMLUListElement: {
10764    prototype: HTMLUListElement;
10765    new(): HTMLUListElement;
10766}
10767
10768interface HTMLUnknownElement extends HTMLElement {
10769}
10770
10771declare var HTMLUnknownElement: {
10772    prototype: HTMLUnknownElement;
10773    new(): HTMLUnknownElement;
10774}
10775
10776interface HTMLVideoElement extends HTMLMediaElement {
10777    /**
10778      * Gets or sets the height of the video element.
10779      */
10780    height: number;
10781    msHorizontalMirror: boolean;
10782    msIsLayoutOptimalForPlayback: boolean;
10783    msIsStereo3D: boolean;
10784    msStereo3DPackingMode: string;
10785    msStereo3DRenderMode: string;
10786    msZoom: boolean;
10787    onMSVideoFormatChanged: (ev: Event) => any;
10788    onMSVideoFrameStepCompleted: (ev: Event) => any;
10789    onMSVideoOptimalLayoutChanged: (ev: Event) => any;
10790    /**
10791      * Gets or sets a URL of an image to display, for example, like a movie poster. This can be a still frame from the video, or another image if no video data is available.
10792      */
10793    poster: string;
10794    /**
10795      * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known.
10796      */
10797    videoHeight: number;
10798    /**
10799      * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known.
10800      */
10801    videoWidth: number;
10802    webkitDisplayingFullscreen: boolean;
10803    webkitSupportsFullscreen: boolean;
10804    /**
10805      * Gets or sets the width of the video element.
10806      */
10807    width: number;
10808    getVideoPlaybackQuality(): VideoPlaybackQuality;
10809    msFrameStep(forward: boolean): void;
10810    msInsertVideoEffect(activatableClassId: string, effectRequired: boolean, config?: any): void;
10811    msSetVideoRectangle(left: number, top: number, right: number, bottom: number): void;
10812    webkitEnterFullScreen(): void;
10813    webkitEnterFullscreen(): void;
10814    webkitExitFullScreen(): void;
10815    webkitExitFullscreen(): void;
10816    addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10817    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10818    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10819    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10820    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10821    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10822    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10823    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10824    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
10825    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10826    addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void;
10827    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10828    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10829    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10830    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10831    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10832    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10833    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10834    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
10835    addEventListener(type: "MSVideoFormatChanged", listener: (ev: Event) => any, useCapture?: boolean): void;
10836    addEventListener(type: "MSVideoFrameStepCompleted", listener: (ev: Event) => any, useCapture?: boolean): void;
10837    addEventListener(type: "MSVideoOptimalLayoutChanged", listener: (ev: Event) => any, useCapture?: boolean): void;
10838    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10839    addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10840    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
10841    addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10842    addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10843    addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10844    addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10845    addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10846    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
10847    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
10848    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
10849    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
10850    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10851    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
10852    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10853    addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10854    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
10855    addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10856    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10857    addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10858    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10859    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10860    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10861    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10862    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10863    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10864    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10865    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
10866    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
10867    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
10868    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
10869    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
10870    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10871    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
10872    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
10873    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
10874    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
10875    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
10876    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
10877    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
10878    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
10879    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10880    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10881    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10882    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10883    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10884    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10885    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10886    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
10887    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
10888    addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void;
10889    addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
10890    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
10891    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
10892    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
10893    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10894    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10895    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10896    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10897    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10898    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10899    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10900    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
10901    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
10902    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
10903    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
10904    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10905    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
10906    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
10907    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
10908    addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void;
10909    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
10910    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
10911    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
10912    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
10913    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
10914    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
10915    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
10916    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
10917    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
10918    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
10919    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
10920    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
10921    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
10922    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
10923}
10924
10925declare var HTMLVideoElement: {
10926    prototype: HTMLVideoElement;
10927    new(): HTMLVideoElement;
10928}
10929
10930interface HashChangeEvent extends Event {
10931    newURL: string;
10932    oldURL: string;
10933}
10934
10935declare var HashChangeEvent: {
10936    prototype: HashChangeEvent;
10937    new(type: string, eventInitDict?: HashChangeEventInit): HashChangeEvent;
10938}
10939
10940interface History {
10941    length: number;
10942    state: any;
10943    back(distance?: any): void;
10944    forward(distance?: any): void;
10945    go(delta?: any): void;
10946    pushState(statedata: any, title?: string, url?: string): void;
10947    replaceState(statedata: any, title?: string, url?: string): void;
10948}
10949
10950declare var History: {
10951    prototype: History;
10952    new(): History;
10953}
10954
10955interface IDBCursor {
10956    direction: string;
10957    key: any;
10958    primaryKey: any;
10959    source: any;
10960    advance(count: number): void;
10961    continue(key?: any): void;
10962    delete(): IDBRequest;
10963    update(value: any): IDBRequest;
10964    NEXT: string;
10965    NEXT_NO_DUPLICATE: string;
10966    PREV: string;
10967    PREV_NO_DUPLICATE: string;
10968}
10969
10970declare var IDBCursor: {
10971    prototype: IDBCursor;
10972    new(): IDBCursor;
10973    NEXT: string;
10974    NEXT_NO_DUPLICATE: string;
10975    PREV: string;
10976    PREV_NO_DUPLICATE: string;
10977}
10978
10979interface IDBCursorWithValue extends IDBCursor {
10980    value: any;
10981}
10982
10983declare var IDBCursorWithValue: {
10984    prototype: IDBCursorWithValue;
10985    new(): IDBCursorWithValue;
10986}
10987
10988interface IDBDatabase extends EventTarget {
10989    name: string;
10990    objectStoreNames: DOMStringList;
10991    onabort: (ev: Event) => any;
10992    onerror: (ev: Event) => any;
10993    version: string;
10994    close(): void;
10995    createObjectStore(name: string, optionalParameters?: any): IDBObjectStore;
10996    deleteObjectStore(name: string): void;
10997    transaction(storeNames: any, mode?: string): IDBTransaction;
10998    addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
10999    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
11000    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11001}
11002
11003declare var IDBDatabase: {
11004    prototype: IDBDatabase;
11005    new(): IDBDatabase;
11006}
11007
11008interface IDBFactory {
11009    cmp(first: any, second: any): number;
11010    deleteDatabase(name: string): IDBOpenDBRequest;
11011    open(name: string, version?: number): IDBOpenDBRequest;
11012}
11013
11014declare var IDBFactory: {
11015    prototype: IDBFactory;
11016    new(): IDBFactory;
11017}
11018
11019interface IDBIndex {
11020    keyPath: string;
11021    name: string;
11022    objectStore: IDBObjectStore;
11023    unique: boolean;
11024    count(key?: any): IDBRequest;
11025    get(key: any): IDBRequest;
11026    getKey(key: any): IDBRequest;
11027    openCursor(range?: IDBKeyRange, direction?: string): IDBRequest;
11028    openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest;
11029}
11030
11031declare var IDBIndex: {
11032    prototype: IDBIndex;
11033    new(): IDBIndex;
11034}
11035
11036interface IDBKeyRange {
11037    lower: any;
11038    lowerOpen: boolean;
11039    upper: any;
11040    upperOpen: boolean;
11041}
11042
11043declare var IDBKeyRange: {
11044    prototype: IDBKeyRange;
11045    new(): IDBKeyRange;
11046    bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange;
11047    lowerBound(bound: any, open?: boolean): IDBKeyRange;
11048    only(value: any): IDBKeyRange;
11049    upperBound(bound: any, open?: boolean): IDBKeyRange;
11050}
11051
11052interface IDBObjectStore {
11053    indexNames: DOMStringList;
11054    keyPath: string;
11055    name: string;
11056    transaction: IDBTransaction;
11057    add(value: any, key?: any): IDBRequest;
11058    clear(): IDBRequest;
11059    count(key?: any): IDBRequest;
11060    createIndex(name: string, keyPath: string, optionalParameters?: any): IDBIndex;
11061    delete(key: any): IDBRequest;
11062    deleteIndex(indexName: string): void;
11063    get(key: any): IDBRequest;
11064    index(name: string): IDBIndex;
11065    openCursor(range?: any, direction?: string): IDBRequest;
11066    put(value: any, key?: any): IDBRequest;
11067}
11068
11069declare var IDBObjectStore: {
11070    prototype: IDBObjectStore;
11071    new(): IDBObjectStore;
11072}
11073
11074interface IDBOpenDBRequest extends IDBRequest {
11075    onblocked: (ev: Event) => any;
11076    onupgradeneeded: (ev: IDBVersionChangeEvent) => any;
11077    addEventListener(type: "blocked", listener: (ev: Event) => any, useCapture?: boolean): void;
11078    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
11079    addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void;
11080    addEventListener(type: "upgradeneeded", listener: (ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void;
11081    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11082}
11083
11084declare var IDBOpenDBRequest: {
11085    prototype: IDBOpenDBRequest;
11086    new(): IDBOpenDBRequest;
11087}
11088
11089interface IDBRequest extends EventTarget {
11090    error: DOMError;
11091    onerror: (ev: Event) => any;
11092    onsuccess: (ev: Event) => any;
11093    readyState: string;
11094    result: any;
11095    source: any;
11096    transaction: IDBTransaction;
11097    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
11098    addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void;
11099    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11100}
11101
11102declare var IDBRequest: {
11103    prototype: IDBRequest;
11104    new(): IDBRequest;
11105}
11106
11107interface IDBTransaction extends EventTarget {
11108    db: IDBDatabase;
11109    error: DOMError;
11110    mode: string;
11111    onabort: (ev: Event) => any;
11112    oncomplete: (ev: Event) => any;
11113    onerror: (ev: Event) => any;
11114    abort(): void;
11115    objectStore(name: string): IDBObjectStore;
11116    READ_ONLY: string;
11117    READ_WRITE: string;
11118    VERSION_CHANGE: string;
11119    addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
11120    addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void;
11121    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
11122    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11123}
11124
11125declare var IDBTransaction: {
11126    prototype: IDBTransaction;
11127    new(): IDBTransaction;
11128    READ_ONLY: string;
11129    READ_WRITE: string;
11130    VERSION_CHANGE: string;
11131}
11132
11133interface IDBVersionChangeEvent extends Event {
11134    newVersion: number;
11135    oldVersion: number;
11136}
11137
11138declare var IDBVersionChangeEvent: {
11139    prototype: IDBVersionChangeEvent;
11140    new(): IDBVersionChangeEvent;
11141}
11142
11143interface ImageData {
11144    data: number[];
11145    height: number;
11146    width: number;
11147}
11148
11149declare var ImageData: {
11150    prototype: ImageData;
11151    new(width: number, height: number): ImageData;
11152    new(array: Uint8ClampedArray, width: number, height: number): ImageData;
11153}
11154
11155interface KeyboardEvent extends UIEvent {
11156    altKey: boolean;
11157    char: string;
11158    charCode: number;
11159    ctrlKey: boolean;
11160    key: string;
11161    keyCode: number;
11162    locale: string;
11163    location: number;
11164    metaKey: boolean;
11165    repeat: boolean;
11166    shiftKey: boolean;
11167    which: number;
11168    getModifierState(keyArg: string): boolean;
11169    initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void;
11170    DOM_KEY_LOCATION_JOYSTICK: number;
11171    DOM_KEY_LOCATION_LEFT: number;
11172    DOM_KEY_LOCATION_MOBILE: number;
11173    DOM_KEY_LOCATION_NUMPAD: number;
11174    DOM_KEY_LOCATION_RIGHT: number;
11175    DOM_KEY_LOCATION_STANDARD: number;
11176}
11177
11178declare var KeyboardEvent: {
11179    prototype: KeyboardEvent;
11180    new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent;
11181    DOM_KEY_LOCATION_JOYSTICK: number;
11182    DOM_KEY_LOCATION_LEFT: number;
11183    DOM_KEY_LOCATION_MOBILE: number;
11184    DOM_KEY_LOCATION_NUMPAD: number;
11185    DOM_KEY_LOCATION_RIGHT: number;
11186    DOM_KEY_LOCATION_STANDARD: number;
11187}
11188
11189interface Location {
11190    hash: string;
11191    host: string;
11192    hostname: string;
11193    href: string;
11194    origin: string;
11195    pathname: string;
11196    port: string;
11197    protocol: string;
11198    search: string;
11199    assign(url: string): void;
11200    reload(forcedReload?: boolean): void;
11201    replace(url: string): void;
11202    toString(): string;
11203}
11204
11205declare var Location: {
11206    prototype: Location;
11207    new(): Location;
11208}
11209
11210interface LongRunningScriptDetectedEvent extends Event {
11211    executionTime: number;
11212    stopPageScriptExecution: boolean;
11213}
11214
11215declare var LongRunningScriptDetectedEvent: {
11216    prototype: LongRunningScriptDetectedEvent;
11217    new(): LongRunningScriptDetectedEvent;
11218}
11219
11220interface MSApp {
11221    clearTemporaryWebDataAsync(): MSAppAsyncOperation;
11222    createBlobFromRandomAccessStream(type: string, seeker: any): Blob;
11223    createDataPackage(object: any): any;
11224    createDataPackageFromSelection(): any;
11225    createFileFromStorageFile(storageFile: any): File;
11226    createStreamFromInputStream(type: string, inputStream: any): MSStream;
11227    execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void;
11228    execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any;
11229    getCurrentPriority(): string;
11230    getHtmlPrintDocumentSourceAsync(htmlDoc: any): any;
11231    getViewId(view: any): any;
11232    isTaskScheduledAtPriorityOrHigher(priority: string): boolean;
11233    pageHandlesAllApplicationActivations(enabled: boolean): void;
11234    suppressSubdownloadCredentialPrompts(suppress: boolean): void;
11235    terminateApp(exceptionObject: any): void;
11236    CURRENT: string;
11237    HIGH: string;
11238    IDLE: string;
11239    NORMAL: string;
11240}
11241declare var MSApp: MSApp;
11242
11243interface MSAppAsyncOperation extends EventTarget {
11244    error: DOMError;
11245    oncomplete: (ev: Event) => any;
11246    onerror: (ev: Event) => any;
11247    readyState: number;
11248    result: any;
11249    start(): void;
11250    COMPLETED: number;
11251    ERROR: number;
11252    STARTED: number;
11253    addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void;
11254    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
11255    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11256}
11257
11258declare var MSAppAsyncOperation: {
11259    prototype: MSAppAsyncOperation;
11260    new(): MSAppAsyncOperation;
11261    COMPLETED: number;
11262    ERROR: number;
11263    STARTED: number;
11264}
11265
11266interface MSBlobBuilder {
11267    append(data: any, endings?: string): void;
11268    getBlob(contentType?: string): Blob;
11269}
11270
11271declare var MSBlobBuilder: {
11272    prototype: MSBlobBuilder;
11273    new(): MSBlobBuilder;
11274}
11275
11276interface MSCSSMatrix {
11277    a: number;
11278    b: number;
11279    c: number;
11280    d: number;
11281    e: number;
11282    f: number;
11283    m11: number;
11284    m12: number;
11285    m13: number;
11286    m14: number;
11287    m21: number;
11288    m22: number;
11289    m23: number;
11290    m24: number;
11291    m31: number;
11292    m32: number;
11293    m33: number;
11294    m34: number;
11295    m41: number;
11296    m42: number;
11297    m43: number;
11298    m44: number;
11299    inverse(): MSCSSMatrix;
11300    multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix;
11301    rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix;
11302    rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix;
11303    scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix;
11304    setMatrixValue(value: string): void;
11305    skewX(angle: number): MSCSSMatrix;
11306    skewY(angle: number): MSCSSMatrix;
11307    toString(): string;
11308    translate(x: number, y: number, z?: number): MSCSSMatrix;
11309}
11310
11311declare var MSCSSMatrix: {
11312    prototype: MSCSSMatrix;
11313    new(text?: string): MSCSSMatrix;
11314}
11315
11316interface MSGesture {
11317    target: Element;
11318    addPointer(pointerId: number): void;
11319    stop(): void;
11320}
11321
11322declare var MSGesture: {
11323    prototype: MSGesture;
11324    new(): MSGesture;
11325}
11326
11327interface MSGestureEvent extends UIEvent {
11328    clientX: number;
11329    clientY: number;
11330    expansion: number;
11331    gestureObject: any;
11332    hwTimestamp: number;
11333    offsetX: number;
11334    offsetY: number;
11335    rotation: number;
11336    scale: number;
11337    screenX: number;
11338    screenY: number;
11339    translationX: number;
11340    translationY: number;
11341    velocityAngular: number;
11342    velocityExpansion: number;
11343    velocityX: number;
11344    velocityY: number;
11345    initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void;
11346    MSGESTURE_FLAG_BEGIN: number;
11347    MSGESTURE_FLAG_CANCEL: number;
11348    MSGESTURE_FLAG_END: number;
11349    MSGESTURE_FLAG_INERTIA: number;
11350    MSGESTURE_FLAG_NONE: number;
11351}
11352
11353declare var MSGestureEvent: {
11354    prototype: MSGestureEvent;
11355    new(): MSGestureEvent;
11356    MSGESTURE_FLAG_BEGIN: number;
11357    MSGESTURE_FLAG_CANCEL: number;
11358    MSGESTURE_FLAG_END: number;
11359    MSGESTURE_FLAG_INERTIA: number;
11360    MSGESTURE_FLAG_NONE: number;
11361}
11362
11363interface MSGraphicsTrust {
11364    constrictionActive: boolean;
11365    status: string;
11366}
11367
11368declare var MSGraphicsTrust: {
11369    prototype: MSGraphicsTrust;
11370    new(): MSGraphicsTrust;
11371}
11372
11373interface MSHTMLWebViewElement extends HTMLElement {
11374    canGoBack: boolean;
11375    canGoForward: boolean;
11376    containsFullScreenElement: boolean;
11377    documentTitle: string;
11378    height: number;
11379    settings: MSWebViewSettings;
11380    src: string;
11381    width: number;
11382    addWebAllowedObject(name: string, applicationObject: any): void;
11383    buildLocalStreamUri(contentIdentifier: string, relativePath: string): string;
11384    capturePreviewToBlobAsync(): MSWebViewAsyncOperation;
11385    captureSelectedContentToDataPackageAsync(): MSWebViewAsyncOperation;
11386    getDeferredPermissionRequestById(id: number): DeferredPermissionRequest;
11387    getDeferredPermissionRequests(): DeferredPermissionRequest[];
11388    goBack(): void;
11389    goForward(): void;
11390    invokeScriptAsync(scriptName: string, ...args: any[]): MSWebViewAsyncOperation;
11391    navigate(uri: string): void;
11392    navigateToLocalStreamUri(source: string, streamResolver: any): void;
11393    navigateToString(contents: string): void;
11394    navigateWithHttpRequestMessage(requestMessage: any): void;
11395    refresh(): void;
11396    stop(): void;
11397}
11398
11399declare var MSHTMLWebViewElement: {
11400    prototype: MSHTMLWebViewElement;
11401    new(): MSHTMLWebViewElement;
11402}
11403
11404interface MSInputMethodContext extends EventTarget {
11405    compositionEndOffset: number;
11406    compositionStartOffset: number;
11407    oncandidatewindowhide: (ev: Event) => any;
11408    oncandidatewindowshow: (ev: Event) => any;
11409    oncandidatewindowupdate: (ev: Event) => any;
11410    target: HTMLElement;
11411    getCandidateWindowClientRect(): ClientRect;
11412    getCompositionAlternatives(): string[];
11413    hasComposition(): boolean;
11414    isCandidateWindowVisible(): boolean;
11415    addEventListener(type: "MSCandidateWindowHide", listener: (ev: Event) => any, useCapture?: boolean): void;
11416    addEventListener(type: "MSCandidateWindowShow", listener: (ev: Event) => any, useCapture?: boolean): void;
11417    addEventListener(type: "MSCandidateWindowUpdate", listener: (ev: Event) => any, useCapture?: boolean): void;
11418    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11419}
11420
11421declare var MSInputMethodContext: {
11422    prototype: MSInputMethodContext;
11423    new(): MSInputMethodContext;
11424}
11425
11426interface MSManipulationEvent extends UIEvent {
11427    currentState: number;
11428    inertiaDestinationX: number;
11429    inertiaDestinationY: number;
11430    lastState: number;
11431    initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void;
11432    MS_MANIPULATION_STATE_ACTIVE: number;
11433    MS_MANIPULATION_STATE_CANCELLED: number;
11434    MS_MANIPULATION_STATE_COMMITTED: number;
11435    MS_MANIPULATION_STATE_DRAGGING: number;
11436    MS_MANIPULATION_STATE_INERTIA: number;
11437    MS_MANIPULATION_STATE_PRESELECT: number;
11438    MS_MANIPULATION_STATE_SELECTING: number;
11439    MS_MANIPULATION_STATE_STOPPED: number;
11440}
11441
11442declare var MSManipulationEvent: {
11443    prototype: MSManipulationEvent;
11444    new(): MSManipulationEvent;
11445    MS_MANIPULATION_STATE_ACTIVE: number;
11446    MS_MANIPULATION_STATE_CANCELLED: number;
11447    MS_MANIPULATION_STATE_COMMITTED: number;
11448    MS_MANIPULATION_STATE_DRAGGING: number;
11449    MS_MANIPULATION_STATE_INERTIA: number;
11450    MS_MANIPULATION_STATE_PRESELECT: number;
11451    MS_MANIPULATION_STATE_SELECTING: number;
11452    MS_MANIPULATION_STATE_STOPPED: number;
11453}
11454
11455interface MSMediaKeyError {
11456    code: number;
11457    systemCode: number;
11458    MS_MEDIA_KEYERR_CLIENT: number;
11459    MS_MEDIA_KEYERR_DOMAIN: number;
11460    MS_MEDIA_KEYERR_HARDWARECHANGE: number;
11461    MS_MEDIA_KEYERR_OUTPUT: number;
11462    MS_MEDIA_KEYERR_SERVICE: number;
11463    MS_MEDIA_KEYERR_UNKNOWN: number;
11464}
11465
11466declare var MSMediaKeyError: {
11467    prototype: MSMediaKeyError;
11468    new(): MSMediaKeyError;
11469    MS_MEDIA_KEYERR_CLIENT: number;
11470    MS_MEDIA_KEYERR_DOMAIN: number;
11471    MS_MEDIA_KEYERR_HARDWARECHANGE: number;
11472    MS_MEDIA_KEYERR_OUTPUT: number;
11473    MS_MEDIA_KEYERR_SERVICE: number;
11474    MS_MEDIA_KEYERR_UNKNOWN: number;
11475}
11476
11477interface MSMediaKeyMessageEvent extends Event {
11478    destinationURL: string;
11479    message: Uint8Array;
11480}
11481
11482declare var MSMediaKeyMessageEvent: {
11483    prototype: MSMediaKeyMessageEvent;
11484    new(): MSMediaKeyMessageEvent;
11485}
11486
11487interface MSMediaKeyNeededEvent extends Event {
11488    initData: Uint8Array;
11489}
11490
11491declare var MSMediaKeyNeededEvent: {
11492    prototype: MSMediaKeyNeededEvent;
11493    new(): MSMediaKeyNeededEvent;
11494}
11495
11496interface MSMediaKeySession extends EventTarget {
11497    error: MSMediaKeyError;
11498    keySystem: string;
11499    sessionId: string;
11500    close(): void;
11501    update(key: Uint8Array): void;
11502}
11503
11504declare var MSMediaKeySession: {
11505    prototype: MSMediaKeySession;
11506    new(): MSMediaKeySession;
11507}
11508
11509interface MSMediaKeys {
11510    keySystem: string;
11511    createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession;
11512}
11513
11514declare var MSMediaKeys: {
11515    prototype: MSMediaKeys;
11516    new(keySystem: string): MSMediaKeys;
11517    isTypeSupported(keySystem: string, type?: string): boolean;
11518}
11519
11520interface MSMimeTypesCollection {
11521    length: number;
11522}
11523
11524declare var MSMimeTypesCollection: {
11525    prototype: MSMimeTypesCollection;
11526    new(): MSMimeTypesCollection;
11527}
11528
11529interface MSPluginsCollection {
11530    length: number;
11531    refresh(reload?: boolean): void;
11532}
11533
11534declare var MSPluginsCollection: {
11535    prototype: MSPluginsCollection;
11536    new(): MSPluginsCollection;
11537}
11538
11539interface MSPointerEvent extends MouseEvent {
11540    currentPoint: any;
11541    height: number;
11542    hwTimestamp: number;
11543    intermediatePoints: any;
11544    isPrimary: boolean;
11545    pointerId: number;
11546    pointerType: any;
11547    pressure: number;
11548    rotation: number;
11549    tiltX: number;
11550    tiltY: number;
11551    width: number;
11552    getCurrentPoint(element: Element): void;
11553    getIntermediatePoints(element: Element): void;
11554    initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void;
11555}
11556
11557declare var MSPointerEvent: {
11558    prototype: MSPointerEvent;
11559    new(typeArg: string, eventInitDict?: PointerEventInit): MSPointerEvent;
11560}
11561
11562interface MSRangeCollection {
11563    length: number;
11564    item(index: number): Range;
11565    [index: number]: Range;
11566}
11567
11568declare var MSRangeCollection: {
11569    prototype: MSRangeCollection;
11570    new(): MSRangeCollection;
11571}
11572
11573interface MSSiteModeEvent extends Event {
11574    actionURL: string;
11575    buttonID: number;
11576}
11577
11578declare var MSSiteModeEvent: {
11579    prototype: MSSiteModeEvent;
11580    new(): MSSiteModeEvent;
11581}
11582
11583interface MSStream {
11584    type: string;
11585    msClose(): void;
11586    msDetachStream(): any;
11587}
11588
11589declare var MSStream: {
11590    prototype: MSStream;
11591    new(): MSStream;
11592}
11593
11594interface MSStreamReader extends EventTarget, MSBaseReader {
11595    error: DOMError;
11596    readAsArrayBuffer(stream: MSStream, size?: number): void;
11597    readAsBinaryString(stream: MSStream, size?: number): void;
11598    readAsBlob(stream: MSStream, size?: number): void;
11599    readAsDataURL(stream: MSStream, size?: number): void;
11600    readAsText(stream: MSStream, encoding?: string, size?: number): void;
11601    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11602}
11603
11604declare var MSStreamReader: {
11605    prototype: MSStreamReader;
11606    new(): MSStreamReader;
11607}
11608
11609interface MSWebViewAsyncOperation extends EventTarget {
11610    error: DOMError;
11611    oncomplete: (ev: Event) => any;
11612    onerror: (ev: Event) => any;
11613    readyState: number;
11614    result: any;
11615    target: MSHTMLWebViewElement;
11616    type: number;
11617    start(): void;
11618    COMPLETED: number;
11619    ERROR: number;
11620    STARTED: number;
11621    TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number;
11622    TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number;
11623    TYPE_INVOKE_SCRIPT: number;
11624    addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void;
11625    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
11626    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11627}
11628
11629declare var MSWebViewAsyncOperation: {
11630    prototype: MSWebViewAsyncOperation;
11631    new(): MSWebViewAsyncOperation;
11632    COMPLETED: number;
11633    ERROR: number;
11634    STARTED: number;
11635    TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number;
11636    TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number;
11637    TYPE_INVOKE_SCRIPT: number;
11638}
11639
11640interface MSWebViewSettings {
11641    isIndexedDBEnabled: boolean;
11642    isJavaScriptEnabled: boolean;
11643}
11644
11645declare var MSWebViewSettings: {
11646    prototype: MSWebViewSettings;
11647    new(): MSWebViewSettings;
11648}
11649
11650interface MediaElementAudioSourceNode extends AudioNode {
11651}
11652
11653declare var MediaElementAudioSourceNode: {
11654    prototype: MediaElementAudioSourceNode;
11655    new(): MediaElementAudioSourceNode;
11656}
11657
11658interface MediaError {
11659    code: number;
11660    msExtendedCode: number;
11661    MEDIA_ERR_ABORTED: number;
11662    MEDIA_ERR_DECODE: number;
11663    MEDIA_ERR_NETWORK: number;
11664    MEDIA_ERR_SRC_NOT_SUPPORTED: number;
11665    MS_MEDIA_ERR_ENCRYPTED: number;
11666}
11667
11668declare var MediaError: {
11669    prototype: MediaError;
11670    new(): MediaError;
11671    MEDIA_ERR_ABORTED: number;
11672    MEDIA_ERR_DECODE: number;
11673    MEDIA_ERR_NETWORK: number;
11674    MEDIA_ERR_SRC_NOT_SUPPORTED: number;
11675    MS_MEDIA_ERR_ENCRYPTED: number;
11676}
11677
11678interface MediaList {
11679    length: number;
11680    mediaText: string;
11681    appendMedium(newMedium: string): void;
11682    deleteMedium(oldMedium: string): void;
11683    item(index: number): string;
11684    toString(): string;
11685    [index: number]: string;
11686}
11687
11688declare var MediaList: {
11689    prototype: MediaList;
11690    new(): MediaList;
11691}
11692
11693interface MediaQueryList {
11694    matches: boolean;
11695    media: string;
11696    addListener(listener: MediaQueryListListener): void;
11697    removeListener(listener: MediaQueryListListener): void;
11698}
11699
11700declare var MediaQueryList: {
11701    prototype: MediaQueryList;
11702    new(): MediaQueryList;
11703}
11704
11705interface MediaSource extends EventTarget {
11706    activeSourceBuffers: SourceBufferList;
11707    duration: number;
11708    readyState: number;
11709    sourceBuffers: SourceBufferList;
11710    addSourceBuffer(type: string): SourceBuffer;
11711    endOfStream(error?: number): void;
11712    removeSourceBuffer(sourceBuffer: SourceBuffer): void;
11713}
11714
11715declare var MediaSource: {
11716    prototype: MediaSource;
11717    new(): MediaSource;
11718    isTypeSupported(type: string): boolean;
11719}
11720
11721interface MessageChannel {
11722    port1: MessagePort;
11723    port2: MessagePort;
11724}
11725
11726declare var MessageChannel: {
11727    prototype: MessageChannel;
11728    new(): MessageChannel;
11729}
11730
11731interface MessageEvent extends Event {
11732    data: any;
11733    origin: string;
11734    ports: any;
11735    source: Window;
11736    initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void;
11737}
11738
11739declare var MessageEvent: {
11740    prototype: MessageEvent;
11741    new(type: string, eventInitDict?: MessageEventInit): MessageEvent;
11742}
11743
11744interface MessagePort extends EventTarget {
11745    onmessage: (ev: MessageEvent) => any;
11746    close(): void;
11747    postMessage(message?: any, ports?: any): void;
11748    start(): void;
11749    addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
11750    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11751}
11752
11753declare var MessagePort: {
11754    prototype: MessagePort;
11755    new(): MessagePort;
11756}
11757
11758interface MimeType {
11759    description: string;
11760    enabledPlugin: Plugin;
11761    suffixes: string;
11762    type: string;
11763}
11764
11765declare var MimeType: {
11766    prototype: MimeType;
11767    new(): MimeType;
11768}
11769
11770interface MimeTypeArray {
11771    length: number;
11772    item(index: number): Plugin;
11773    namedItem(type: string): Plugin;
11774    [index: number]: Plugin;
11775}
11776
11777declare var MimeTypeArray: {
11778    prototype: MimeTypeArray;
11779    new(): MimeTypeArray;
11780}
11781
11782interface MouseEvent extends UIEvent {
11783    altKey: boolean;
11784    button: number;
11785    buttons: number;
11786    clientX: number;
11787    clientY: number;
11788    ctrlKey: boolean;
11789    fromElement: Element;
11790    layerX: number;
11791    layerY: number;
11792    metaKey: boolean;
11793    movementX: number;
11794    movementY: number;
11795    offsetX: number;
11796    offsetY: number;
11797    pageX: number;
11798    pageY: number;
11799    relatedTarget: EventTarget;
11800    screenX: number;
11801    screenY: number;
11802    shiftKey: boolean;
11803    toElement: Element;
11804    which: number;
11805    x: number;
11806    y: number;
11807    getModifierState(keyArg: string): boolean;
11808    initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void;
11809}
11810
11811declare var MouseEvent: {
11812    prototype: MouseEvent;
11813    new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent;
11814}
11815
11816interface MouseWheelEvent extends MouseEvent {
11817    wheelDelta: number;
11818    wheelDeltaX: number;
11819    wheelDeltaY: number;
11820    initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void;
11821}
11822
11823declare var MouseWheelEvent: {
11824    prototype: MouseWheelEvent;
11825    new(): MouseWheelEvent;
11826}
11827
11828interface MutationEvent extends Event {
11829    attrChange: number;
11830    attrName: string;
11831    newValue: string;
11832    prevValue: string;
11833    relatedNode: Node;
11834    initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void;
11835    ADDITION: number;
11836    MODIFICATION: number;
11837    REMOVAL: number;
11838}
11839
11840declare var MutationEvent: {
11841    prototype: MutationEvent;
11842    new(): MutationEvent;
11843    ADDITION: number;
11844    MODIFICATION: number;
11845    REMOVAL: number;
11846}
11847
11848interface MutationObserver {
11849    disconnect(): void;
11850    observe(target: Node, options: MutationObserverInit): void;
11851    takeRecords(): MutationRecord[];
11852}
11853
11854declare var MutationObserver: {
11855    prototype: MutationObserver;
11856    new(callback: MutationCallback): MutationObserver;
11857}
11858
11859interface MutationRecord {
11860    addedNodes: NodeList;
11861    attributeName: string;
11862    attributeNamespace: string;
11863    nextSibling: Node;
11864    oldValue: string;
11865    previousSibling: Node;
11866    removedNodes: NodeList;
11867    target: Node;
11868    type: string;
11869}
11870
11871declare var MutationRecord: {
11872    prototype: MutationRecord;
11873    new(): MutationRecord;
11874}
11875
11876interface NamedNodeMap {
11877    length: number;
11878    getNamedItem(name: string): Attr;
11879    getNamedItemNS(namespaceURI: string, localName: string): Attr;
11880    item(index: number): Attr;
11881    removeNamedItem(name: string): Attr;
11882    removeNamedItemNS(namespaceURI: string, localName: string): Attr;
11883    setNamedItem(arg: Attr): Attr;
11884    setNamedItemNS(arg: Attr): Attr;
11885    [index: number]: Attr;
11886}
11887
11888declare var NamedNodeMap: {
11889    prototype: NamedNodeMap;
11890    new(): NamedNodeMap;
11891}
11892
11893interface NavigationCompletedEvent extends NavigationEvent {
11894    isSuccess: boolean;
11895    webErrorStatus: number;
11896}
11897
11898declare var NavigationCompletedEvent: {
11899    prototype: NavigationCompletedEvent;
11900    new(): NavigationCompletedEvent;
11901}
11902
11903interface NavigationEvent extends Event {
11904    uri: string;
11905}
11906
11907declare var NavigationEvent: {
11908    prototype: NavigationEvent;
11909    new(): NavigationEvent;
11910}
11911
11912interface NavigationEventWithReferrer extends NavigationEvent {
11913    referer: string;
11914}
11915
11916declare var NavigationEventWithReferrer: {
11917    prototype: NavigationEventWithReferrer;
11918    new(): NavigationEventWithReferrer;
11919}
11920
11921interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver {
11922    appCodeName: string;
11923    appMinorVersion: string;
11924    browserLanguage: string;
11925    connectionSpeed: number;
11926    cookieEnabled: boolean;
11927    cpuClass: string;
11928    language: string;
11929    maxTouchPoints: number;
11930    mimeTypes: MSMimeTypesCollection;
11931    msManipulationViewsEnabled: boolean;
11932    msMaxTouchPoints: number;
11933    msPointerEnabled: boolean;
11934    plugins: MSPluginsCollection;
11935    pointerEnabled: boolean;
11936    systemLanguage: string;
11937    userLanguage: string;
11938    webdriver: boolean;
11939    getGamepads(): Gamepad[];
11940    javaEnabled(): boolean;
11941    msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void;
11942    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
11943}
11944
11945declare var Navigator: {
11946    prototype: Navigator;
11947    new(): Navigator;
11948}
11949
11950interface Node extends EventTarget {
11951    attributes: NamedNodeMap;
11952    baseURI: string;
11953    childNodes: NodeList;
11954    firstChild: Node;
11955    lastChild: Node;
11956    localName: string;
11957    namespaceURI: string;
11958    nextSibling: Node;
11959    nodeName: string;
11960    nodeType: number;
11961    nodeValue: string;
11962    ownerDocument: Document;
11963    parentElement: HTMLElement;
11964    parentNode: Node;
11965    prefix: string;
11966    previousSibling: Node;
11967    textContent: string;
11968    appendChild(newChild: Node): Node;
11969    cloneNode(deep?: boolean): Node;
11970    compareDocumentPosition(other: Node): number;
11971    hasAttributes(): boolean;
11972    hasChildNodes(): boolean;
11973    insertBefore(newChild: Node, refChild?: Node): Node;
11974    isDefaultNamespace(namespaceURI: string): boolean;
11975    isEqualNode(arg: Node): boolean;
11976    isSameNode(other: Node): boolean;
11977    lookupNamespaceURI(prefix: string): string;
11978    lookupPrefix(namespaceURI: string): string;
11979    normalize(): void;
11980    removeChild(oldChild: Node): Node;
11981    replaceChild(newChild: Node, oldChild: Node): Node;
11982    ATTRIBUTE_NODE: number;
11983    CDATA_SECTION_NODE: number;
11984    COMMENT_NODE: number;
11985    DOCUMENT_FRAGMENT_NODE: number;
11986    DOCUMENT_NODE: number;
11987    DOCUMENT_POSITION_CONTAINED_BY: number;
11988    DOCUMENT_POSITION_CONTAINS: number;
11989    DOCUMENT_POSITION_DISCONNECTED: number;
11990    DOCUMENT_POSITION_FOLLOWING: number;
11991    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
11992    DOCUMENT_POSITION_PRECEDING: number;
11993    DOCUMENT_TYPE_NODE: number;
11994    ELEMENT_NODE: number;
11995    ENTITY_NODE: number;
11996    ENTITY_REFERENCE_NODE: number;
11997    NOTATION_NODE: number;
11998    PROCESSING_INSTRUCTION_NODE: number;
11999    TEXT_NODE: number;
12000}
12001
12002declare var Node: {
12003    prototype: Node;
12004    new(): Node;
12005    ATTRIBUTE_NODE: number;
12006    CDATA_SECTION_NODE: number;
12007    COMMENT_NODE: number;
12008    DOCUMENT_FRAGMENT_NODE: number;
12009    DOCUMENT_NODE: number;
12010    DOCUMENT_POSITION_CONTAINED_BY: number;
12011    DOCUMENT_POSITION_CONTAINS: number;
12012    DOCUMENT_POSITION_DISCONNECTED: number;
12013    DOCUMENT_POSITION_FOLLOWING: number;
12014    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
12015    DOCUMENT_POSITION_PRECEDING: number;
12016    DOCUMENT_TYPE_NODE: number;
12017    ELEMENT_NODE: number;
12018    ENTITY_NODE: number;
12019    ENTITY_REFERENCE_NODE: number;
12020    NOTATION_NODE: number;
12021    PROCESSING_INSTRUCTION_NODE: number;
12022    TEXT_NODE: number;
12023}
12024
12025interface NodeFilter {
12026    acceptNode(n: Node): number;
12027}
12028
12029declare var NodeFilter: {
12030    FILTER_ACCEPT: number;
12031    FILTER_REJECT: number;
12032    FILTER_SKIP: number;
12033    SHOW_ALL: number;
12034    SHOW_ATTRIBUTE: number;
12035    SHOW_CDATA_SECTION: number;
12036    SHOW_COMMENT: number;
12037    SHOW_DOCUMENT: number;
12038    SHOW_DOCUMENT_FRAGMENT: number;
12039    SHOW_DOCUMENT_TYPE: number;
12040    SHOW_ELEMENT: number;
12041    SHOW_ENTITY: number;
12042    SHOW_ENTITY_REFERENCE: number;
12043    SHOW_NOTATION: number;
12044    SHOW_PROCESSING_INSTRUCTION: number;
12045    SHOW_TEXT: number;
12046}
12047
12048interface NodeIterator {
12049    expandEntityReferences: boolean;
12050    filter: NodeFilter;
12051    root: Node;
12052    whatToShow: number;
12053    detach(): void;
12054    nextNode(): Node;
12055    previousNode(): Node;
12056}
12057
12058declare var NodeIterator: {
12059    prototype: NodeIterator;
12060    new(): NodeIterator;
12061}
12062
12063interface NodeList {
12064    length: number;
12065    item(index: number): Node;
12066    [index: number]: Node;
12067}
12068
12069declare var NodeList: {
12070    prototype: NodeList;
12071    new(): NodeList;
12072}
12073
12074interface OES_element_index_uint {
12075}
12076
12077declare var OES_element_index_uint: {
12078    prototype: OES_element_index_uint;
12079    new(): OES_element_index_uint;
12080}
12081
12082interface OES_standard_derivatives {
12083    FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number;
12084}
12085
12086declare var OES_standard_derivatives: {
12087    prototype: OES_standard_derivatives;
12088    new(): OES_standard_derivatives;
12089    FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number;
12090}
12091
12092interface OES_texture_float {
12093}
12094
12095declare var OES_texture_float: {
12096    prototype: OES_texture_float;
12097    new(): OES_texture_float;
12098}
12099
12100interface OES_texture_float_linear {
12101}
12102
12103declare var OES_texture_float_linear: {
12104    prototype: OES_texture_float_linear;
12105    new(): OES_texture_float_linear;
12106}
12107
12108interface OfflineAudioCompletionEvent extends Event {
12109    renderedBuffer: AudioBuffer;
12110}
12111
12112declare var OfflineAudioCompletionEvent: {
12113    prototype: OfflineAudioCompletionEvent;
12114    new(): OfflineAudioCompletionEvent;
12115}
12116
12117interface OfflineAudioContext extends AudioContext {
12118    oncomplete: (ev: Event) => any;
12119    startRendering(): void;
12120    addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void;
12121    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12122}
12123
12124declare var OfflineAudioContext: {
12125    prototype: OfflineAudioContext;
12126    new(numberOfChannels: number, length: number, sampleRate: number): OfflineAudioContext;
12127}
12128
12129interface OscillatorNode extends AudioNode {
12130    detune: AudioParam;
12131    frequency: AudioParam;
12132    onended: (ev: Event) => any;
12133    type: string;
12134    setPeriodicWave(periodicWave: PeriodicWave): void;
12135    start(when?: number): void;
12136    stop(when?: number): void;
12137    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
12138    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12139}
12140
12141declare var OscillatorNode: {
12142    prototype: OscillatorNode;
12143    new(): OscillatorNode;
12144}
12145
12146interface PageTransitionEvent extends Event {
12147    persisted: boolean;
12148}
12149
12150declare var PageTransitionEvent: {
12151    prototype: PageTransitionEvent;
12152    new(): PageTransitionEvent;
12153}
12154
12155interface PannerNode extends AudioNode {
12156    coneInnerAngle: number;
12157    coneOuterAngle: number;
12158    coneOuterGain: number;
12159    distanceModel: string;
12160    maxDistance: number;
12161    panningModel: string;
12162    refDistance: number;
12163    rolloffFactor: number;
12164    setOrientation(x: number, y: number, z: number): void;
12165    setPosition(x: number, y: number, z: number): void;
12166    setVelocity(x: number, y: number, z: number): void;
12167}
12168
12169declare var PannerNode: {
12170    prototype: PannerNode;
12171    new(): PannerNode;
12172}
12173
12174interface PerfWidgetExternal {
12175    activeNetworkRequestCount: number;
12176    averageFrameTime: number;
12177    averagePaintTime: number;
12178    extraInformationEnabled: boolean;
12179    independentRenderingEnabled: boolean;
12180    irDisablingContentString: string;
12181    irStatusAvailable: boolean;
12182    maxCpuSpeed: number;
12183    paintRequestsPerSecond: number;
12184    performanceCounter: number;
12185    performanceCounterFrequency: number;
12186    addEventListener(eventType: string, callback: Function): void;
12187    getMemoryUsage(): number;
12188    getProcessCpuUsage(): number;
12189    getRecentCpuUsage(last: number): any;
12190    getRecentFrames(last: number): any;
12191    getRecentMemoryUsage(last: number): any;
12192    getRecentPaintRequests(last: number): any;
12193    removeEventListener(eventType: string, callback: Function): void;
12194    repositionWindow(x: number, y: number): void;
12195    resizeWindow(width: number, height: number): void;
12196}
12197
12198declare var PerfWidgetExternal: {
12199    prototype: PerfWidgetExternal;
12200    new(): PerfWidgetExternal;
12201}
12202
12203interface Performance {
12204    navigation: PerformanceNavigation;
12205    timing: PerformanceTiming;
12206    clearMarks(markName?: string): void;
12207    clearMeasures(measureName?: string): void;
12208    clearResourceTimings(): void;
12209    getEntries(): any;
12210    getEntriesByName(name: string, entryType?: string): any;
12211    getEntriesByType(entryType: string): any;
12212    getMarks(markName?: string): any;
12213    getMeasures(measureName?: string): any;
12214    mark(markName: string): void;
12215    measure(measureName: string, startMarkName?: string, endMarkName?: string): void;
12216    now(): number;
12217    setResourceTimingBufferSize(maxSize: number): void;
12218    toJSON(): any;
12219}
12220
12221declare var Performance: {
12222    prototype: Performance;
12223    new(): Performance;
12224}
12225
12226interface PerformanceEntry {
12227    duration: number;
12228    entryType: string;
12229    name: string;
12230    startTime: number;
12231}
12232
12233declare var PerformanceEntry: {
12234    prototype: PerformanceEntry;
12235    new(): PerformanceEntry;
12236}
12237
12238interface PerformanceMark extends PerformanceEntry {
12239}
12240
12241declare var PerformanceMark: {
12242    prototype: PerformanceMark;
12243    new(): PerformanceMark;
12244}
12245
12246interface PerformanceMeasure extends PerformanceEntry {
12247}
12248
12249declare var PerformanceMeasure: {
12250    prototype: PerformanceMeasure;
12251    new(): PerformanceMeasure;
12252}
12253
12254interface PerformanceNavigation {
12255    redirectCount: number;
12256    type: number;
12257    toJSON(): any;
12258    TYPE_BACK_FORWARD: number;
12259    TYPE_NAVIGATE: number;
12260    TYPE_RELOAD: number;
12261    TYPE_RESERVED: number;
12262}
12263
12264declare var PerformanceNavigation: {
12265    prototype: PerformanceNavigation;
12266    new(): PerformanceNavigation;
12267    TYPE_BACK_FORWARD: number;
12268    TYPE_NAVIGATE: number;
12269    TYPE_RELOAD: number;
12270    TYPE_RESERVED: number;
12271}
12272
12273interface PerformanceNavigationTiming extends PerformanceEntry {
12274    connectEnd: number;
12275    connectStart: number;
12276    domComplete: number;
12277    domContentLoadedEventEnd: number;
12278    domContentLoadedEventStart: number;
12279    domInteractive: number;
12280    domLoading: number;
12281    domainLookupEnd: number;
12282    domainLookupStart: number;
12283    fetchStart: number;
12284    loadEventEnd: number;
12285    loadEventStart: number;
12286    navigationStart: number;
12287    redirectCount: number;
12288    redirectEnd: number;
12289    redirectStart: number;
12290    requestStart: number;
12291    responseEnd: number;
12292    responseStart: number;
12293    type: string;
12294    unloadEventEnd: number;
12295    unloadEventStart: number;
12296}
12297
12298declare var PerformanceNavigationTiming: {
12299    prototype: PerformanceNavigationTiming;
12300    new(): PerformanceNavigationTiming;
12301}
12302
12303interface PerformanceResourceTiming extends PerformanceEntry {
12304    connectEnd: number;
12305    connectStart: number;
12306    domainLookupEnd: number;
12307    domainLookupStart: number;
12308    fetchStart: number;
12309    initiatorType: string;
12310    redirectEnd: number;
12311    redirectStart: number;
12312    requestStart: number;
12313    responseEnd: number;
12314    responseStart: number;
12315}
12316
12317declare var PerformanceResourceTiming: {
12318    prototype: PerformanceResourceTiming;
12319    new(): PerformanceResourceTiming;
12320}
12321
12322interface PerformanceTiming {
12323    connectEnd: number;
12324    connectStart: number;
12325    domComplete: number;
12326    domContentLoadedEventEnd: number;
12327    domContentLoadedEventStart: number;
12328    domInteractive: number;
12329    domLoading: number;
12330    domainLookupEnd: number;
12331    domainLookupStart: number;
12332    fetchStart: number;
12333    loadEventEnd: number;
12334    loadEventStart: number;
12335    msFirstPaint: number;
12336    navigationStart: number;
12337    redirectEnd: number;
12338    redirectStart: number;
12339    requestStart: number;
12340    responseEnd: number;
12341    responseStart: number;
12342    unloadEventEnd: number;
12343    unloadEventStart: number;
12344    toJSON(): any;
12345}
12346
12347declare var PerformanceTiming: {
12348    prototype: PerformanceTiming;
12349    new(): PerformanceTiming;
12350}
12351
12352interface PeriodicWave {
12353}
12354
12355declare var PeriodicWave: {
12356    prototype: PeriodicWave;
12357    new(): PeriodicWave;
12358}
12359
12360interface PermissionRequest extends DeferredPermissionRequest {
12361    state: string;
12362    defer(): void;
12363}
12364
12365declare var PermissionRequest: {
12366    prototype: PermissionRequest;
12367    new(): PermissionRequest;
12368}
12369
12370interface PermissionRequestedEvent extends Event {
12371    permissionRequest: PermissionRequest;
12372}
12373
12374declare var PermissionRequestedEvent: {
12375    prototype: PermissionRequestedEvent;
12376    new(): PermissionRequestedEvent;
12377}
12378
12379interface Plugin {
12380    description: string;
12381    filename: string;
12382    length: number;
12383    name: string;
12384    version: string;
12385    item(index: number): MimeType;
12386    namedItem(type: string): MimeType;
12387    [index: number]: MimeType;
12388}
12389
12390declare var Plugin: {
12391    prototype: Plugin;
12392    new(): Plugin;
12393}
12394
12395interface PluginArray {
12396    length: number;
12397    item(index: number): Plugin;
12398    namedItem(name: string): Plugin;
12399    refresh(reload?: boolean): void;
12400    [index: number]: Plugin;
12401}
12402
12403declare var PluginArray: {
12404    prototype: PluginArray;
12405    new(): PluginArray;
12406}
12407
12408interface PointerEvent extends MouseEvent {
12409    currentPoint: any;
12410    height: number;
12411    hwTimestamp: number;
12412    intermediatePoints: any;
12413    isPrimary: boolean;
12414    pointerId: number;
12415    pointerType: any;
12416    pressure: number;
12417    rotation: number;
12418    tiltX: number;
12419    tiltY: number;
12420    width: number;
12421    getCurrentPoint(element: Element): void;
12422    getIntermediatePoints(element: Element): void;
12423    initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void;
12424}
12425
12426declare var PointerEvent: {
12427    prototype: PointerEvent;
12428    new(typeArg: string, eventInitDict?: PointerEventInit): PointerEvent;
12429}
12430
12431interface PopStateEvent extends Event {
12432    state: any;
12433    initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void;
12434}
12435
12436declare var PopStateEvent: {
12437    prototype: PopStateEvent;
12438    new(): PopStateEvent;
12439}
12440
12441interface Position {
12442    coords: Coordinates;
12443    timestamp: number;
12444}
12445
12446declare var Position: {
12447    prototype: Position;
12448    new(): Position;
12449}
12450
12451interface PositionError {
12452    code: number;
12453    message: string;
12454    toString(): string;
12455    PERMISSION_DENIED: number;
12456    POSITION_UNAVAILABLE: number;
12457    TIMEOUT: number;
12458}
12459
12460declare var PositionError: {
12461    prototype: PositionError;
12462    new(): PositionError;
12463    PERMISSION_DENIED: number;
12464    POSITION_UNAVAILABLE: number;
12465    TIMEOUT: number;
12466}
12467
12468interface ProcessingInstruction extends CharacterData {
12469    target: string;
12470}
12471
12472declare var ProcessingInstruction: {
12473    prototype: ProcessingInstruction;
12474    new(): ProcessingInstruction;
12475}
12476
12477interface ProgressEvent extends Event {
12478    lengthComputable: boolean;
12479    loaded: number;
12480    total: number;
12481    initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void;
12482}
12483
12484declare var ProgressEvent: {
12485    prototype: ProgressEvent;
12486    new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent;
12487}
12488
12489interface Range {
12490    collapsed: boolean;
12491    commonAncestorContainer: Node;
12492    endContainer: Node;
12493    endOffset: number;
12494    startContainer: Node;
12495    startOffset: number;
12496    cloneContents(): DocumentFragment;
12497    cloneRange(): Range;
12498    collapse(toStart: boolean): void;
12499    compareBoundaryPoints(how: number, sourceRange: Range): number;
12500    createContextualFragment(fragment: string): DocumentFragment;
12501    deleteContents(): void;
12502    detach(): void;
12503    expand(Unit: string): boolean;
12504    extractContents(): DocumentFragment;
12505    getBoundingClientRect(): ClientRect;
12506    getClientRects(): ClientRectList;
12507    insertNode(newNode: Node): void;
12508    selectNode(refNode: Node): void;
12509    selectNodeContents(refNode: Node): void;
12510    setEnd(refNode: Node, offset: number): void;
12511    setEndAfter(refNode: Node): void;
12512    setEndBefore(refNode: Node): void;
12513    setStart(refNode: Node, offset: number): void;
12514    setStartAfter(refNode: Node): void;
12515    setStartBefore(refNode: Node): void;
12516    surroundContents(newParent: Node): void;
12517    toString(): string;
12518    END_TO_END: number;
12519    END_TO_START: number;
12520    START_TO_END: number;
12521    START_TO_START: number;
12522}
12523
12524declare var Range: {
12525    prototype: Range;
12526    new(): Range;
12527    END_TO_END: number;
12528    END_TO_START: number;
12529    START_TO_END: number;
12530    START_TO_START: number;
12531}
12532
12533interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference {
12534    target: SVGAnimatedString;
12535    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12536}
12537
12538declare var SVGAElement: {
12539    prototype: SVGAElement;
12540    new(): SVGAElement;
12541}
12542
12543interface SVGAngle {
12544    unitType: number;
12545    value: number;
12546    valueAsString: string;
12547    valueInSpecifiedUnits: number;
12548    convertToSpecifiedUnits(unitType: number): void;
12549    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
12550    SVG_ANGLETYPE_DEG: number;
12551    SVG_ANGLETYPE_GRAD: number;
12552    SVG_ANGLETYPE_RAD: number;
12553    SVG_ANGLETYPE_UNKNOWN: number;
12554    SVG_ANGLETYPE_UNSPECIFIED: number;
12555}
12556
12557declare var SVGAngle: {
12558    prototype: SVGAngle;
12559    new(): SVGAngle;
12560    SVG_ANGLETYPE_DEG: number;
12561    SVG_ANGLETYPE_GRAD: number;
12562    SVG_ANGLETYPE_RAD: number;
12563    SVG_ANGLETYPE_UNKNOWN: number;
12564    SVG_ANGLETYPE_UNSPECIFIED: number;
12565}
12566
12567interface SVGAnimatedAngle {
12568    animVal: SVGAngle;
12569    baseVal: SVGAngle;
12570}
12571
12572declare var SVGAnimatedAngle: {
12573    prototype: SVGAnimatedAngle;
12574    new(): SVGAnimatedAngle;
12575}
12576
12577interface SVGAnimatedBoolean {
12578    animVal: boolean;
12579    baseVal: boolean;
12580}
12581
12582declare var SVGAnimatedBoolean: {
12583    prototype: SVGAnimatedBoolean;
12584    new(): SVGAnimatedBoolean;
12585}
12586
12587interface SVGAnimatedEnumeration {
12588    animVal: number;
12589    baseVal: number;
12590}
12591
12592declare var SVGAnimatedEnumeration: {
12593    prototype: SVGAnimatedEnumeration;
12594    new(): SVGAnimatedEnumeration;
12595}
12596
12597interface SVGAnimatedInteger {
12598    animVal: number;
12599    baseVal: number;
12600}
12601
12602declare var SVGAnimatedInteger: {
12603    prototype: SVGAnimatedInteger;
12604    new(): SVGAnimatedInteger;
12605}
12606
12607interface SVGAnimatedLength {
12608    animVal: SVGLength;
12609    baseVal: SVGLength;
12610}
12611
12612declare var SVGAnimatedLength: {
12613    prototype: SVGAnimatedLength;
12614    new(): SVGAnimatedLength;
12615}
12616
12617interface SVGAnimatedLengthList {
12618    animVal: SVGLengthList;
12619    baseVal: SVGLengthList;
12620}
12621
12622declare var SVGAnimatedLengthList: {
12623    prototype: SVGAnimatedLengthList;
12624    new(): SVGAnimatedLengthList;
12625}
12626
12627interface SVGAnimatedNumber {
12628    animVal: number;
12629    baseVal: number;
12630}
12631
12632declare var SVGAnimatedNumber: {
12633    prototype: SVGAnimatedNumber;
12634    new(): SVGAnimatedNumber;
12635}
12636
12637interface SVGAnimatedNumberList {
12638    animVal: SVGNumberList;
12639    baseVal: SVGNumberList;
12640}
12641
12642declare var SVGAnimatedNumberList: {
12643    prototype: SVGAnimatedNumberList;
12644    new(): SVGAnimatedNumberList;
12645}
12646
12647interface SVGAnimatedPreserveAspectRatio {
12648    animVal: SVGPreserveAspectRatio;
12649    baseVal: SVGPreserveAspectRatio;
12650}
12651
12652declare var SVGAnimatedPreserveAspectRatio: {
12653    prototype: SVGAnimatedPreserveAspectRatio;
12654    new(): SVGAnimatedPreserveAspectRatio;
12655}
12656
12657interface SVGAnimatedRect {
12658    animVal: SVGRect;
12659    baseVal: SVGRect;
12660}
12661
12662declare var SVGAnimatedRect: {
12663    prototype: SVGAnimatedRect;
12664    new(): SVGAnimatedRect;
12665}
12666
12667interface SVGAnimatedString {
12668    animVal: string;
12669    baseVal: string;
12670}
12671
12672declare var SVGAnimatedString: {
12673    prototype: SVGAnimatedString;
12674    new(): SVGAnimatedString;
12675}
12676
12677interface SVGAnimatedTransformList {
12678    animVal: SVGTransformList;
12679    baseVal: SVGTransformList;
12680}
12681
12682declare var SVGAnimatedTransformList: {
12683    prototype: SVGAnimatedTransformList;
12684    new(): SVGAnimatedTransformList;
12685}
12686
12687interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
12688    cx: SVGAnimatedLength;
12689    cy: SVGAnimatedLength;
12690    r: SVGAnimatedLength;
12691    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12692}
12693
12694declare var SVGCircleElement: {
12695    prototype: SVGCircleElement;
12696    new(): SVGCircleElement;
12697}
12698
12699interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes {
12700    clipPathUnits: SVGAnimatedEnumeration;
12701    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12702}
12703
12704declare var SVGClipPathElement: {
12705    prototype: SVGClipPathElement;
12706    new(): SVGClipPathElement;
12707}
12708
12709interface SVGComponentTransferFunctionElement extends SVGElement {
12710    amplitude: SVGAnimatedNumber;
12711    exponent: SVGAnimatedNumber;
12712    intercept: SVGAnimatedNumber;
12713    offset: SVGAnimatedNumber;
12714    slope: SVGAnimatedNumber;
12715    tableValues: SVGAnimatedNumberList;
12716    type: SVGAnimatedEnumeration;
12717    SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12718    SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12719    SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12720    SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12721    SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12722    SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12723}
12724
12725declare var SVGComponentTransferFunctionElement: {
12726    prototype: SVGComponentTransferFunctionElement;
12727    new(): SVGComponentTransferFunctionElement;
12728    SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number;
12729    SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number;
12730    SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number;
12731    SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number;
12732    SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number;
12733    SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number;
12734}
12735
12736interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
12737    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12738}
12739
12740declare var SVGDefsElement: {
12741    prototype: SVGDefsElement;
12742    new(): SVGDefsElement;
12743}
12744
12745interface SVGDescElement extends SVGElement, SVGStylable, SVGLangSpace {
12746    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12747}
12748
12749declare var SVGDescElement: {
12750    prototype: SVGDescElement;
12751    new(): SVGDescElement;
12752}
12753
12754interface SVGElement extends Element {
12755    id: string;
12756    onclick: (ev: MouseEvent) => any;
12757    ondblclick: (ev: MouseEvent) => any;
12758    onfocusin: (ev: FocusEvent) => any;
12759    onfocusout: (ev: FocusEvent) => any;
12760    onload: (ev: Event) => any;
12761    onmousedown: (ev: MouseEvent) => any;
12762    onmousemove: (ev: MouseEvent) => any;
12763    onmouseout: (ev: MouseEvent) => any;
12764    onmouseover: (ev: MouseEvent) => any;
12765    onmouseup: (ev: MouseEvent) => any;
12766    ownerSVGElement: SVGSVGElement;
12767    viewportElement: SVGElement;
12768    xmlbase: string;
12769    className: any;
12770    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12771    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12772    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12773    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12774    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12775    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12776    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12777    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
12778    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12779    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12780    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12781    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12782    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12783    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12784    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12785    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12786    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
12787    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
12788    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12789    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
12790    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12791    addEventListener(type: "focusin", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
12792    addEventListener(type: "focusout", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
12793    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12794    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
12795    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12796    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12797    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12798    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12799    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12800    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
12801    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12802    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12803    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12804    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12805    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12806    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12807    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12808    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
12809    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
12810    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
12811    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
12812    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
12813    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
12814    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
12815    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
12816    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12817}
12818
12819declare var SVGElement: {
12820    prototype: SVGElement;
12821    new(): SVGElement;
12822}
12823
12824interface SVGElementInstance extends EventTarget {
12825    childNodes: SVGElementInstanceList;
12826    correspondingElement: SVGElement;
12827    correspondingUseElement: SVGUseElement;
12828    firstChild: SVGElementInstance;
12829    lastChild: SVGElementInstance;
12830    nextSibling: SVGElementInstance;
12831    parentNode: SVGElementInstance;
12832    previousSibling: SVGElementInstance;
12833}
12834
12835declare var SVGElementInstance: {
12836    prototype: SVGElementInstance;
12837    new(): SVGElementInstance;
12838}
12839
12840interface SVGElementInstanceList {
12841    length: number;
12842    item(index: number): SVGElementInstance;
12843}
12844
12845declare var SVGElementInstanceList: {
12846    prototype: SVGElementInstanceList;
12847    new(): SVGElementInstanceList;
12848}
12849
12850interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
12851    cx: SVGAnimatedLength;
12852    cy: SVGAnimatedLength;
12853    rx: SVGAnimatedLength;
12854    ry: SVGAnimatedLength;
12855    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12856}
12857
12858declare var SVGEllipseElement: {
12859    prototype: SVGEllipseElement;
12860    new(): SVGEllipseElement;
12861}
12862
12863interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12864    in1: SVGAnimatedString;
12865    in2: SVGAnimatedString;
12866    mode: SVGAnimatedEnumeration;
12867    SVG_FEBLEND_MODE_COLOR: number;
12868    SVG_FEBLEND_MODE_COLOR_BURN: number;
12869    SVG_FEBLEND_MODE_COLOR_DODGE: number;
12870    SVG_FEBLEND_MODE_DARKEN: number;
12871    SVG_FEBLEND_MODE_DIFFERENCE: number;
12872    SVG_FEBLEND_MODE_EXCLUSION: number;
12873    SVG_FEBLEND_MODE_HARD_LIGHT: number;
12874    SVG_FEBLEND_MODE_HUE: number;
12875    SVG_FEBLEND_MODE_LIGHTEN: number;
12876    SVG_FEBLEND_MODE_LUMINOSITY: number;
12877    SVG_FEBLEND_MODE_MULTIPLY: number;
12878    SVG_FEBLEND_MODE_NORMAL: number;
12879    SVG_FEBLEND_MODE_OVERLAY: number;
12880    SVG_FEBLEND_MODE_SATURATION: number;
12881    SVG_FEBLEND_MODE_SCREEN: number;
12882    SVG_FEBLEND_MODE_SOFT_LIGHT: number;
12883    SVG_FEBLEND_MODE_UNKNOWN: number;
12884    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12885}
12886
12887declare var SVGFEBlendElement: {
12888    prototype: SVGFEBlendElement;
12889    new(): SVGFEBlendElement;
12890    SVG_FEBLEND_MODE_COLOR: number;
12891    SVG_FEBLEND_MODE_COLOR_BURN: number;
12892    SVG_FEBLEND_MODE_COLOR_DODGE: number;
12893    SVG_FEBLEND_MODE_DARKEN: number;
12894    SVG_FEBLEND_MODE_DIFFERENCE: number;
12895    SVG_FEBLEND_MODE_EXCLUSION: number;
12896    SVG_FEBLEND_MODE_HARD_LIGHT: number;
12897    SVG_FEBLEND_MODE_HUE: number;
12898    SVG_FEBLEND_MODE_LIGHTEN: number;
12899    SVG_FEBLEND_MODE_LUMINOSITY: number;
12900    SVG_FEBLEND_MODE_MULTIPLY: number;
12901    SVG_FEBLEND_MODE_NORMAL: number;
12902    SVG_FEBLEND_MODE_OVERLAY: number;
12903    SVG_FEBLEND_MODE_SATURATION: number;
12904    SVG_FEBLEND_MODE_SCREEN: number;
12905    SVG_FEBLEND_MODE_SOFT_LIGHT: number;
12906    SVG_FEBLEND_MODE_UNKNOWN: number;
12907}
12908
12909interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12910    in1: SVGAnimatedString;
12911    type: SVGAnimatedEnumeration;
12912    values: SVGAnimatedNumberList;
12913    SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
12914    SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
12915    SVG_FECOLORMATRIX_TYPE_MATRIX: number;
12916    SVG_FECOLORMATRIX_TYPE_SATURATE: number;
12917    SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
12918    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12919}
12920
12921declare var SVGFEColorMatrixElement: {
12922    prototype: SVGFEColorMatrixElement;
12923    new(): SVGFEColorMatrixElement;
12924    SVG_FECOLORMATRIX_TYPE_HUEROTATE: number;
12925    SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number;
12926    SVG_FECOLORMATRIX_TYPE_MATRIX: number;
12927    SVG_FECOLORMATRIX_TYPE_SATURATE: number;
12928    SVG_FECOLORMATRIX_TYPE_UNKNOWN: number;
12929}
12930
12931interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12932    in1: SVGAnimatedString;
12933    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12934}
12935
12936declare var SVGFEComponentTransferElement: {
12937    prototype: SVGFEComponentTransferElement;
12938    new(): SVGFEComponentTransferElement;
12939}
12940
12941interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12942    in1: SVGAnimatedString;
12943    in2: SVGAnimatedString;
12944    k1: SVGAnimatedNumber;
12945    k2: SVGAnimatedNumber;
12946    k3: SVGAnimatedNumber;
12947    k4: SVGAnimatedNumber;
12948    operator: SVGAnimatedEnumeration;
12949    SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
12950    SVG_FECOMPOSITE_OPERATOR_ATOP: number;
12951    SVG_FECOMPOSITE_OPERATOR_IN: number;
12952    SVG_FECOMPOSITE_OPERATOR_OUT: number;
12953    SVG_FECOMPOSITE_OPERATOR_OVER: number;
12954    SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
12955    SVG_FECOMPOSITE_OPERATOR_XOR: number;
12956    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12957}
12958
12959declare var SVGFECompositeElement: {
12960    prototype: SVGFECompositeElement;
12961    new(): SVGFECompositeElement;
12962    SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number;
12963    SVG_FECOMPOSITE_OPERATOR_ATOP: number;
12964    SVG_FECOMPOSITE_OPERATOR_IN: number;
12965    SVG_FECOMPOSITE_OPERATOR_OUT: number;
12966    SVG_FECOMPOSITE_OPERATOR_OVER: number;
12967    SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number;
12968    SVG_FECOMPOSITE_OPERATOR_XOR: number;
12969}
12970
12971interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
12972    bias: SVGAnimatedNumber;
12973    divisor: SVGAnimatedNumber;
12974    edgeMode: SVGAnimatedEnumeration;
12975    in1: SVGAnimatedString;
12976    kernelMatrix: SVGAnimatedNumberList;
12977    kernelUnitLengthX: SVGAnimatedNumber;
12978    kernelUnitLengthY: SVGAnimatedNumber;
12979    orderX: SVGAnimatedInteger;
12980    orderY: SVGAnimatedInteger;
12981    preserveAlpha: SVGAnimatedBoolean;
12982    targetX: SVGAnimatedInteger;
12983    targetY: SVGAnimatedInteger;
12984    SVG_EDGEMODE_DUPLICATE: number;
12985    SVG_EDGEMODE_NONE: number;
12986    SVG_EDGEMODE_UNKNOWN: number;
12987    SVG_EDGEMODE_WRAP: number;
12988    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
12989}
12990
12991declare var SVGFEConvolveMatrixElement: {
12992    prototype: SVGFEConvolveMatrixElement;
12993    new(): SVGFEConvolveMatrixElement;
12994    SVG_EDGEMODE_DUPLICATE: number;
12995    SVG_EDGEMODE_NONE: number;
12996    SVG_EDGEMODE_UNKNOWN: number;
12997    SVG_EDGEMODE_WRAP: number;
12998}
12999
13000interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13001    diffuseConstant: SVGAnimatedNumber;
13002    in1: SVGAnimatedString;
13003    kernelUnitLengthX: SVGAnimatedNumber;
13004    kernelUnitLengthY: SVGAnimatedNumber;
13005    surfaceScale: SVGAnimatedNumber;
13006    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13007}
13008
13009declare var SVGFEDiffuseLightingElement: {
13010    prototype: SVGFEDiffuseLightingElement;
13011    new(): SVGFEDiffuseLightingElement;
13012}
13013
13014interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13015    in1: SVGAnimatedString;
13016    in2: SVGAnimatedString;
13017    scale: SVGAnimatedNumber;
13018    xChannelSelector: SVGAnimatedEnumeration;
13019    yChannelSelector: SVGAnimatedEnumeration;
13020    SVG_CHANNEL_A: number;
13021    SVG_CHANNEL_B: number;
13022    SVG_CHANNEL_G: number;
13023    SVG_CHANNEL_R: number;
13024    SVG_CHANNEL_UNKNOWN: number;
13025    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13026}
13027
13028declare var SVGFEDisplacementMapElement: {
13029    prototype: SVGFEDisplacementMapElement;
13030    new(): SVGFEDisplacementMapElement;
13031    SVG_CHANNEL_A: number;
13032    SVG_CHANNEL_B: number;
13033    SVG_CHANNEL_G: number;
13034    SVG_CHANNEL_R: number;
13035    SVG_CHANNEL_UNKNOWN: number;
13036}
13037
13038interface SVGFEDistantLightElement extends SVGElement {
13039    azimuth: SVGAnimatedNumber;
13040    elevation: SVGAnimatedNumber;
13041}
13042
13043declare var SVGFEDistantLightElement: {
13044    prototype: SVGFEDistantLightElement;
13045    new(): SVGFEDistantLightElement;
13046}
13047
13048interface SVGFEFloodElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13049    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13050}
13051
13052declare var SVGFEFloodElement: {
13053    prototype: SVGFEFloodElement;
13054    new(): SVGFEFloodElement;
13055}
13056
13057interface SVGFEFuncAElement extends SVGComponentTransferFunctionElement {
13058}
13059
13060declare var SVGFEFuncAElement: {
13061    prototype: SVGFEFuncAElement;
13062    new(): SVGFEFuncAElement;
13063}
13064
13065interface SVGFEFuncBElement extends SVGComponentTransferFunctionElement {
13066}
13067
13068declare var SVGFEFuncBElement: {
13069    prototype: SVGFEFuncBElement;
13070    new(): SVGFEFuncBElement;
13071}
13072
13073interface SVGFEFuncGElement extends SVGComponentTransferFunctionElement {
13074}
13075
13076declare var SVGFEFuncGElement: {
13077    prototype: SVGFEFuncGElement;
13078    new(): SVGFEFuncGElement;
13079}
13080
13081interface SVGFEFuncRElement extends SVGComponentTransferFunctionElement {
13082}
13083
13084declare var SVGFEFuncRElement: {
13085    prototype: SVGFEFuncRElement;
13086    new(): SVGFEFuncRElement;
13087}
13088
13089interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13090    in1: SVGAnimatedString;
13091    stdDeviationX: SVGAnimatedNumber;
13092    stdDeviationY: SVGAnimatedNumber;
13093    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;
13094    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13095}
13096
13097declare var SVGFEGaussianBlurElement: {
13098    prototype: SVGFEGaussianBlurElement;
13099    new(): SVGFEGaussianBlurElement;
13100}
13101
13102interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired {
13103    preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
13104    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13105}
13106
13107declare var SVGFEImageElement: {
13108    prototype: SVGFEImageElement;
13109    new(): SVGFEImageElement;
13110}
13111
13112interface SVGFEMergeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13113    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13114}
13115
13116declare var SVGFEMergeElement: {
13117    prototype: SVGFEMergeElement;
13118    new(): SVGFEMergeElement;
13119}
13120
13121interface SVGFEMergeNodeElement extends SVGElement {
13122    in1: SVGAnimatedString;
13123}
13124
13125declare var SVGFEMergeNodeElement: {
13126    prototype: SVGFEMergeNodeElement;
13127    new(): SVGFEMergeNodeElement;
13128}
13129
13130interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13131    in1: SVGAnimatedString;
13132    operator: SVGAnimatedEnumeration;
13133    radiusX: SVGAnimatedNumber;
13134    radiusY: SVGAnimatedNumber;
13135    SVG_MORPHOLOGY_OPERATOR_DILATE: number;
13136    SVG_MORPHOLOGY_OPERATOR_ERODE: number;
13137    SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
13138    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13139}
13140
13141declare var SVGFEMorphologyElement: {
13142    prototype: SVGFEMorphologyElement;
13143    new(): SVGFEMorphologyElement;
13144    SVG_MORPHOLOGY_OPERATOR_DILATE: number;
13145    SVG_MORPHOLOGY_OPERATOR_ERODE: number;
13146    SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number;
13147}
13148
13149interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13150    dx: SVGAnimatedNumber;
13151    dy: SVGAnimatedNumber;
13152    in1: SVGAnimatedString;
13153    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13154}
13155
13156declare var SVGFEOffsetElement: {
13157    prototype: SVGFEOffsetElement;
13158    new(): SVGFEOffsetElement;
13159}
13160
13161interface SVGFEPointLightElement extends SVGElement {
13162    x: SVGAnimatedNumber;
13163    y: SVGAnimatedNumber;
13164    z: SVGAnimatedNumber;
13165}
13166
13167declare var SVGFEPointLightElement: {
13168    prototype: SVGFEPointLightElement;
13169    new(): SVGFEPointLightElement;
13170}
13171
13172interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13173    in1: SVGAnimatedString;
13174    kernelUnitLengthX: SVGAnimatedNumber;
13175    kernelUnitLengthY: SVGAnimatedNumber;
13176    specularConstant: SVGAnimatedNumber;
13177    specularExponent: SVGAnimatedNumber;
13178    surfaceScale: SVGAnimatedNumber;
13179    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13180}
13181
13182declare var SVGFESpecularLightingElement: {
13183    prototype: SVGFESpecularLightingElement;
13184    new(): SVGFESpecularLightingElement;
13185}
13186
13187interface SVGFESpotLightElement extends SVGElement {
13188    limitingConeAngle: SVGAnimatedNumber;
13189    pointsAtX: SVGAnimatedNumber;
13190    pointsAtY: SVGAnimatedNumber;
13191    pointsAtZ: SVGAnimatedNumber;
13192    specularExponent: SVGAnimatedNumber;
13193    x: SVGAnimatedNumber;
13194    y: SVGAnimatedNumber;
13195    z: SVGAnimatedNumber;
13196}
13197
13198declare var SVGFESpotLightElement: {
13199    prototype: SVGFESpotLightElement;
13200    new(): SVGFESpotLightElement;
13201}
13202
13203interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13204    in1: SVGAnimatedString;
13205    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13206}
13207
13208declare var SVGFETileElement: {
13209    prototype: SVGFETileElement;
13210    new(): SVGFETileElement;
13211}
13212
13213interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {
13214    baseFrequencyX: SVGAnimatedNumber;
13215    baseFrequencyY: SVGAnimatedNumber;
13216    numOctaves: SVGAnimatedInteger;
13217    seed: SVGAnimatedNumber;
13218    stitchTiles: SVGAnimatedEnumeration;
13219    type: SVGAnimatedEnumeration;
13220    SVG_STITCHTYPE_NOSTITCH: number;
13221    SVG_STITCHTYPE_STITCH: number;
13222    SVG_STITCHTYPE_UNKNOWN: number;
13223    SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
13224    SVG_TURBULENCE_TYPE_TURBULENCE: number;
13225    SVG_TURBULENCE_TYPE_UNKNOWN: number;
13226    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13227}
13228
13229declare var SVGFETurbulenceElement: {
13230    prototype: SVGFETurbulenceElement;
13231    new(): SVGFETurbulenceElement;
13232    SVG_STITCHTYPE_NOSTITCH: number;
13233    SVG_STITCHTYPE_STITCH: number;
13234    SVG_STITCHTYPE_UNKNOWN: number;
13235    SVG_TURBULENCE_TYPE_FRACTALNOISE: number;
13236    SVG_TURBULENCE_TYPE_TURBULENCE: number;
13237    SVG_TURBULENCE_TYPE_UNKNOWN: number;
13238}
13239
13240interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired {
13241    filterResX: SVGAnimatedInteger;
13242    filterResY: SVGAnimatedInteger;
13243    filterUnits: SVGAnimatedEnumeration;
13244    height: SVGAnimatedLength;
13245    primitiveUnits: SVGAnimatedEnumeration;
13246    width: SVGAnimatedLength;
13247    x: SVGAnimatedLength;
13248    y: SVGAnimatedLength;
13249    setFilterRes(filterResX: number, filterResY: number): void;
13250    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13251}
13252
13253declare var SVGFilterElement: {
13254    prototype: SVGFilterElement;
13255    new(): SVGFilterElement;
13256}
13257
13258interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
13259    height: SVGAnimatedLength;
13260    width: SVGAnimatedLength;
13261    x: SVGAnimatedLength;
13262    y: SVGAnimatedLength;
13263    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13264}
13265
13266declare var SVGForeignObjectElement: {
13267    prototype: SVGForeignObjectElement;
13268    new(): SVGForeignObjectElement;
13269}
13270
13271interface SVGGElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
13272    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13273}
13274
13275declare var SVGGElement: {
13276    prototype: SVGGElement;
13277    new(): SVGGElement;
13278}
13279
13280interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes {
13281    gradientTransform: SVGAnimatedTransformList;
13282    gradientUnits: SVGAnimatedEnumeration;
13283    spreadMethod: SVGAnimatedEnumeration;
13284    SVG_SPREADMETHOD_PAD: number;
13285    SVG_SPREADMETHOD_REFLECT: number;
13286    SVG_SPREADMETHOD_REPEAT: number;
13287    SVG_SPREADMETHOD_UNKNOWN: number;
13288    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13289}
13290
13291declare var SVGGradientElement: {
13292    prototype: SVGGradientElement;
13293    new(): SVGGradientElement;
13294    SVG_SPREADMETHOD_PAD: number;
13295    SVG_SPREADMETHOD_REFLECT: number;
13296    SVG_SPREADMETHOD_REPEAT: number;
13297    SVG_SPREADMETHOD_UNKNOWN: number;
13298}
13299
13300interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference {
13301    height: SVGAnimatedLength;
13302    preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
13303    width: SVGAnimatedLength;
13304    x: SVGAnimatedLength;
13305    y: SVGAnimatedLength;
13306    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13307}
13308
13309declare var SVGImageElement: {
13310    prototype: SVGImageElement;
13311    new(): SVGImageElement;
13312}
13313
13314interface SVGLength {
13315    unitType: number;
13316    value: number;
13317    valueAsString: string;
13318    valueInSpecifiedUnits: number;
13319    convertToSpecifiedUnits(unitType: number): void;
13320    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;
13321    SVG_LENGTHTYPE_CM: number;
13322    SVG_LENGTHTYPE_EMS: number;
13323    SVG_LENGTHTYPE_EXS: number;
13324    SVG_LENGTHTYPE_IN: number;
13325    SVG_LENGTHTYPE_MM: number;
13326    SVG_LENGTHTYPE_NUMBER: number;
13327    SVG_LENGTHTYPE_PC: number;
13328    SVG_LENGTHTYPE_PERCENTAGE: number;
13329    SVG_LENGTHTYPE_PT: number;
13330    SVG_LENGTHTYPE_PX: number;
13331    SVG_LENGTHTYPE_UNKNOWN: number;
13332}
13333
13334declare var SVGLength: {
13335    prototype: SVGLength;
13336    new(): SVGLength;
13337    SVG_LENGTHTYPE_CM: number;
13338    SVG_LENGTHTYPE_EMS: number;
13339    SVG_LENGTHTYPE_EXS: number;
13340    SVG_LENGTHTYPE_IN: number;
13341    SVG_LENGTHTYPE_MM: number;
13342    SVG_LENGTHTYPE_NUMBER: number;
13343    SVG_LENGTHTYPE_PC: number;
13344    SVG_LENGTHTYPE_PERCENTAGE: number;
13345    SVG_LENGTHTYPE_PT: number;
13346    SVG_LENGTHTYPE_PX: number;
13347    SVG_LENGTHTYPE_UNKNOWN: number;
13348}
13349
13350interface SVGLengthList {
13351    numberOfItems: number;
13352    appendItem(newItem: SVGLength): SVGLength;
13353    clear(): void;
13354    getItem(index: number): SVGLength;
13355    initialize(newItem: SVGLength): SVGLength;
13356    insertItemBefore(newItem: SVGLength, index: number): SVGLength;
13357    removeItem(index: number): SVGLength;
13358    replaceItem(newItem: SVGLength, index: number): SVGLength;
13359}
13360
13361declare var SVGLengthList: {
13362    prototype: SVGLengthList;
13363    new(): SVGLengthList;
13364}
13365
13366interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
13367    x1: SVGAnimatedLength;
13368    x2: SVGAnimatedLength;
13369    y1: SVGAnimatedLength;
13370    y2: SVGAnimatedLength;
13371    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13372}
13373
13374declare var SVGLineElement: {
13375    prototype: SVGLineElement;
13376    new(): SVGLineElement;
13377}
13378
13379interface SVGLinearGradientElement extends SVGGradientElement {
13380    x1: SVGAnimatedLength;
13381    x2: SVGAnimatedLength;
13382    y1: SVGAnimatedLength;
13383    y2: SVGAnimatedLength;
13384}
13385
13386declare var SVGLinearGradientElement: {
13387    prototype: SVGLinearGradientElement;
13388    new(): SVGLinearGradientElement;
13389}
13390
13391interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox {
13392    markerHeight: SVGAnimatedLength;
13393    markerUnits: SVGAnimatedEnumeration;
13394    markerWidth: SVGAnimatedLength;
13395    orientAngle: SVGAnimatedAngle;
13396    orientType: SVGAnimatedEnumeration;
13397    refX: SVGAnimatedLength;
13398    refY: SVGAnimatedLength;
13399    setOrientToAngle(angle: SVGAngle): void;
13400    setOrientToAuto(): void;
13401    SVG_MARKERUNITS_STROKEWIDTH: number;
13402    SVG_MARKERUNITS_UNKNOWN: number;
13403    SVG_MARKERUNITS_USERSPACEONUSE: number;
13404    SVG_MARKER_ORIENT_ANGLE: number;
13405    SVG_MARKER_ORIENT_AUTO: number;
13406    SVG_MARKER_ORIENT_UNKNOWN: number;
13407    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13408}
13409
13410declare var SVGMarkerElement: {
13411    prototype: SVGMarkerElement;
13412    new(): SVGMarkerElement;
13413    SVG_MARKERUNITS_STROKEWIDTH: number;
13414    SVG_MARKERUNITS_UNKNOWN: number;
13415    SVG_MARKERUNITS_USERSPACEONUSE: number;
13416    SVG_MARKER_ORIENT_ANGLE: number;
13417    SVG_MARKER_ORIENT_AUTO: number;
13418    SVG_MARKER_ORIENT_UNKNOWN: number;
13419}
13420
13421interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes {
13422    height: SVGAnimatedLength;
13423    maskContentUnits: SVGAnimatedEnumeration;
13424    maskUnits: SVGAnimatedEnumeration;
13425    width: SVGAnimatedLength;
13426    x: SVGAnimatedLength;
13427    y: SVGAnimatedLength;
13428    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13429}
13430
13431declare var SVGMaskElement: {
13432    prototype: SVGMaskElement;
13433    new(): SVGMaskElement;
13434}
13435
13436interface SVGMatrix {
13437    a: number;
13438    b: number;
13439    c: number;
13440    d: number;
13441    e: number;
13442    f: number;
13443    flipX(): SVGMatrix;
13444    flipY(): SVGMatrix;
13445    inverse(): SVGMatrix;
13446    multiply(secondMatrix: SVGMatrix): SVGMatrix;
13447    rotate(angle: number): SVGMatrix;
13448    rotateFromVector(x: number, y: number): SVGMatrix;
13449    scale(scaleFactor: number): SVGMatrix;
13450    scaleNonUniform(scaleFactorX: number, scaleFactorY: number): SVGMatrix;
13451    skewX(angle: number): SVGMatrix;
13452    skewY(angle: number): SVGMatrix;
13453    translate(x: number, y: number): SVGMatrix;
13454}
13455
13456declare var SVGMatrix: {
13457    prototype: SVGMatrix;
13458    new(): SVGMatrix;
13459}
13460
13461interface SVGMetadataElement extends SVGElement {
13462}
13463
13464declare var SVGMetadataElement: {
13465    prototype: SVGMetadataElement;
13466    new(): SVGMetadataElement;
13467}
13468
13469interface SVGNumber {
13470    value: number;
13471}
13472
13473declare var SVGNumber: {
13474    prototype: SVGNumber;
13475    new(): SVGNumber;
13476}
13477
13478interface SVGNumberList {
13479    numberOfItems: number;
13480    appendItem(newItem: SVGNumber): SVGNumber;
13481    clear(): void;
13482    getItem(index: number): SVGNumber;
13483    initialize(newItem: SVGNumber): SVGNumber;
13484    insertItemBefore(newItem: SVGNumber, index: number): SVGNumber;
13485    removeItem(index: number): SVGNumber;
13486    replaceItem(newItem: SVGNumber, index: number): SVGNumber;
13487}
13488
13489declare var SVGNumberList: {
13490    prototype: SVGNumberList;
13491    new(): SVGNumberList;
13492}
13493
13494interface SVGPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGAnimatedPathData {
13495    createSVGPathSegArcAbs(x: number, y: number, r1: number, r2: number, angle: number, largeArcFlag: boolean, sweepFlag: boolean): SVGPathSegArcAbs;
13496    createSVGPathSegArcRel(x: number, y: number, r1: number, r2: number, angle: number, largeArcFlag: boolean, sweepFlag: boolean): SVGPathSegArcRel;
13497    createSVGPathSegClosePath(): SVGPathSegClosePath;
13498    createSVGPathSegCurvetoCubicAbs(x: number, y: number, x1: number, y1: number, x2: number, y2: number): SVGPathSegCurvetoCubicAbs;
13499    createSVGPathSegCurvetoCubicRel(x: number, y: number, x1: number, y1: number, x2: number, y2: number): SVGPathSegCurvetoCubicRel;
13500    createSVGPathSegCurvetoCubicSmoothAbs(x: number, y: number, x2: number, y2: number): SVGPathSegCurvetoCubicSmoothAbs;
13501    createSVGPathSegCurvetoCubicSmoothRel(x: number, y: number, x2: number, y2: number): SVGPathSegCurvetoCubicSmoothRel;
13502    createSVGPathSegCurvetoQuadraticAbs(x: number, y: number, x1: number, y1: number): SVGPathSegCurvetoQuadraticAbs;
13503    createSVGPathSegCurvetoQuadraticRel(x: number, y: number, x1: number, y1: number): SVGPathSegCurvetoQuadraticRel;
13504    createSVGPathSegCurvetoQuadraticSmoothAbs(x: number, y: number): SVGPathSegCurvetoQuadraticSmoothAbs;
13505    createSVGPathSegCurvetoQuadraticSmoothRel(x: number, y: number): SVGPathSegCurvetoQuadraticSmoothRel;
13506    createSVGPathSegLinetoAbs(x: number, y: number): SVGPathSegLinetoAbs;
13507    createSVGPathSegLinetoHorizontalAbs(x: number): SVGPathSegLinetoHorizontalAbs;
13508    createSVGPathSegLinetoHorizontalRel(x: number): SVGPathSegLinetoHorizontalRel;
13509    createSVGPathSegLinetoRel(x: number, y: number): SVGPathSegLinetoRel;
13510    createSVGPathSegLinetoVerticalAbs(y: number): SVGPathSegLinetoVerticalAbs;
13511    createSVGPathSegLinetoVerticalRel(y: number): SVGPathSegLinetoVerticalRel;
13512    createSVGPathSegMovetoAbs(x: number, y: number): SVGPathSegMovetoAbs;
13513    createSVGPathSegMovetoRel(x: number, y: number): SVGPathSegMovetoRel;
13514    getPathSegAtLength(distance: number): number;
13515    getPointAtLength(distance: number): SVGPoint;
13516    getTotalLength(): number;
13517    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13518}
13519
13520declare var SVGPathElement: {
13521    prototype: SVGPathElement;
13522    new(): SVGPathElement;
13523}
13524
13525interface SVGPathSeg {
13526    pathSegType: number;
13527    pathSegTypeAsLetter: string;
13528    PATHSEG_ARC_ABS: number;
13529    PATHSEG_ARC_REL: number;
13530    PATHSEG_CLOSEPATH: number;
13531    PATHSEG_CURVETO_CUBIC_ABS: number;
13532    PATHSEG_CURVETO_CUBIC_REL: number;
13533    PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number;
13534    PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number;
13535    PATHSEG_CURVETO_QUADRATIC_ABS: number;
13536    PATHSEG_CURVETO_QUADRATIC_REL: number;
13537    PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number;
13538    PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number;
13539    PATHSEG_LINETO_ABS: number;
13540    PATHSEG_LINETO_HORIZONTAL_ABS: number;
13541    PATHSEG_LINETO_HORIZONTAL_REL: number;
13542    PATHSEG_LINETO_REL: number;
13543    PATHSEG_LINETO_VERTICAL_ABS: number;
13544    PATHSEG_LINETO_VERTICAL_REL: number;
13545    PATHSEG_MOVETO_ABS: number;
13546    PATHSEG_MOVETO_REL: number;
13547    PATHSEG_UNKNOWN: number;
13548}
13549
13550declare var SVGPathSeg: {
13551    prototype: SVGPathSeg;
13552    new(): SVGPathSeg;
13553    PATHSEG_ARC_ABS: number;
13554    PATHSEG_ARC_REL: number;
13555    PATHSEG_CLOSEPATH: number;
13556    PATHSEG_CURVETO_CUBIC_ABS: number;
13557    PATHSEG_CURVETO_CUBIC_REL: number;
13558    PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number;
13559    PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number;
13560    PATHSEG_CURVETO_QUADRATIC_ABS: number;
13561    PATHSEG_CURVETO_QUADRATIC_REL: number;
13562    PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number;
13563    PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number;
13564    PATHSEG_LINETO_ABS: number;
13565    PATHSEG_LINETO_HORIZONTAL_ABS: number;
13566    PATHSEG_LINETO_HORIZONTAL_REL: number;
13567    PATHSEG_LINETO_REL: number;
13568    PATHSEG_LINETO_VERTICAL_ABS: number;
13569    PATHSEG_LINETO_VERTICAL_REL: number;
13570    PATHSEG_MOVETO_ABS: number;
13571    PATHSEG_MOVETO_REL: number;
13572    PATHSEG_UNKNOWN: number;
13573}
13574
13575interface SVGPathSegArcAbs extends SVGPathSeg {
13576    angle: number;
13577    largeArcFlag: boolean;
13578    r1: number;
13579    r2: number;
13580    sweepFlag: boolean;
13581    x: number;
13582    y: number;
13583}
13584
13585declare var SVGPathSegArcAbs: {
13586    prototype: SVGPathSegArcAbs;
13587    new(): SVGPathSegArcAbs;
13588}
13589
13590interface SVGPathSegArcRel extends SVGPathSeg {
13591    angle: number;
13592    largeArcFlag: boolean;
13593    r1: number;
13594    r2: number;
13595    sweepFlag: boolean;
13596    x: number;
13597    y: number;
13598}
13599
13600declare var SVGPathSegArcRel: {
13601    prototype: SVGPathSegArcRel;
13602    new(): SVGPathSegArcRel;
13603}
13604
13605interface SVGPathSegClosePath extends SVGPathSeg {
13606}
13607
13608declare var SVGPathSegClosePath: {
13609    prototype: SVGPathSegClosePath;
13610    new(): SVGPathSegClosePath;
13611}
13612
13613interface SVGPathSegCurvetoCubicAbs extends SVGPathSeg {
13614    x: number;
13615    x1: number;
13616    x2: number;
13617    y: number;
13618    y1: number;
13619    y2: number;
13620}
13621
13622declare var SVGPathSegCurvetoCubicAbs: {
13623    prototype: SVGPathSegCurvetoCubicAbs;
13624    new(): SVGPathSegCurvetoCubicAbs;
13625}
13626
13627interface SVGPathSegCurvetoCubicRel extends SVGPathSeg {
13628    x: number;
13629    x1: number;
13630    x2: number;
13631    y: number;
13632    y1: number;
13633    y2: number;
13634}
13635
13636declare var SVGPathSegCurvetoCubicRel: {
13637    prototype: SVGPathSegCurvetoCubicRel;
13638    new(): SVGPathSegCurvetoCubicRel;
13639}
13640
13641interface SVGPathSegCurvetoCubicSmoothAbs extends SVGPathSeg {
13642    x: number;
13643    x2: number;
13644    y: number;
13645    y2: number;
13646}
13647
13648declare var SVGPathSegCurvetoCubicSmoothAbs: {
13649    prototype: SVGPathSegCurvetoCubicSmoothAbs;
13650    new(): SVGPathSegCurvetoCubicSmoothAbs;
13651}
13652
13653interface SVGPathSegCurvetoCubicSmoothRel extends SVGPathSeg {
13654    x: number;
13655    x2: number;
13656    y: number;
13657    y2: number;
13658}
13659
13660declare var SVGPathSegCurvetoCubicSmoothRel: {
13661    prototype: SVGPathSegCurvetoCubicSmoothRel;
13662    new(): SVGPathSegCurvetoCubicSmoothRel;
13663}
13664
13665interface SVGPathSegCurvetoQuadraticAbs extends SVGPathSeg {
13666    x: number;
13667    x1: number;
13668    y: number;
13669    y1: number;
13670}
13671
13672declare var SVGPathSegCurvetoQuadraticAbs: {
13673    prototype: SVGPathSegCurvetoQuadraticAbs;
13674    new(): SVGPathSegCurvetoQuadraticAbs;
13675}
13676
13677interface SVGPathSegCurvetoQuadraticRel extends SVGPathSeg {
13678    x: number;
13679    x1: number;
13680    y: number;
13681    y1: number;
13682}
13683
13684declare var SVGPathSegCurvetoQuadraticRel: {
13685    prototype: SVGPathSegCurvetoQuadraticRel;
13686    new(): SVGPathSegCurvetoQuadraticRel;
13687}
13688
13689interface SVGPathSegCurvetoQuadraticSmoothAbs extends SVGPathSeg {
13690    x: number;
13691    y: number;
13692}
13693
13694declare var SVGPathSegCurvetoQuadraticSmoothAbs: {
13695    prototype: SVGPathSegCurvetoQuadraticSmoothAbs;
13696    new(): SVGPathSegCurvetoQuadraticSmoothAbs;
13697}
13698
13699interface SVGPathSegCurvetoQuadraticSmoothRel extends SVGPathSeg {
13700    x: number;
13701    y: number;
13702}
13703
13704declare var SVGPathSegCurvetoQuadraticSmoothRel: {
13705    prototype: SVGPathSegCurvetoQuadraticSmoothRel;
13706    new(): SVGPathSegCurvetoQuadraticSmoothRel;
13707}
13708
13709interface SVGPathSegLinetoAbs extends SVGPathSeg {
13710    x: number;
13711    y: number;
13712}
13713
13714declare var SVGPathSegLinetoAbs: {
13715    prototype: SVGPathSegLinetoAbs;
13716    new(): SVGPathSegLinetoAbs;
13717}
13718
13719interface SVGPathSegLinetoHorizontalAbs extends SVGPathSeg {
13720    x: number;
13721}
13722
13723declare var SVGPathSegLinetoHorizontalAbs: {
13724    prototype: SVGPathSegLinetoHorizontalAbs;
13725    new(): SVGPathSegLinetoHorizontalAbs;
13726}
13727
13728interface SVGPathSegLinetoHorizontalRel extends SVGPathSeg {
13729    x: number;
13730}
13731
13732declare var SVGPathSegLinetoHorizontalRel: {
13733    prototype: SVGPathSegLinetoHorizontalRel;
13734    new(): SVGPathSegLinetoHorizontalRel;
13735}
13736
13737interface SVGPathSegLinetoRel extends SVGPathSeg {
13738    x: number;
13739    y: number;
13740}
13741
13742declare var SVGPathSegLinetoRel: {
13743    prototype: SVGPathSegLinetoRel;
13744    new(): SVGPathSegLinetoRel;
13745}
13746
13747interface SVGPathSegLinetoVerticalAbs extends SVGPathSeg {
13748    y: number;
13749}
13750
13751declare var SVGPathSegLinetoVerticalAbs: {
13752    prototype: SVGPathSegLinetoVerticalAbs;
13753    new(): SVGPathSegLinetoVerticalAbs;
13754}
13755
13756interface SVGPathSegLinetoVerticalRel extends SVGPathSeg {
13757    y: number;
13758}
13759
13760declare var SVGPathSegLinetoVerticalRel: {
13761    prototype: SVGPathSegLinetoVerticalRel;
13762    new(): SVGPathSegLinetoVerticalRel;
13763}
13764
13765interface SVGPathSegList {
13766    numberOfItems: number;
13767    appendItem(newItem: SVGPathSeg): SVGPathSeg;
13768    clear(): void;
13769    getItem(index: number): SVGPathSeg;
13770    initialize(newItem: SVGPathSeg): SVGPathSeg;
13771    insertItemBefore(newItem: SVGPathSeg, index: number): SVGPathSeg;
13772    removeItem(index: number): SVGPathSeg;
13773    replaceItem(newItem: SVGPathSeg, index: number): SVGPathSeg;
13774}
13775
13776declare var SVGPathSegList: {
13777    prototype: SVGPathSegList;
13778    new(): SVGPathSegList;
13779}
13780
13781interface SVGPathSegMovetoAbs extends SVGPathSeg {
13782    x: number;
13783    y: number;
13784}
13785
13786declare var SVGPathSegMovetoAbs: {
13787    prototype: SVGPathSegMovetoAbs;
13788    new(): SVGPathSegMovetoAbs;
13789}
13790
13791interface SVGPathSegMovetoRel extends SVGPathSeg {
13792    x: number;
13793    y: number;
13794}
13795
13796declare var SVGPathSegMovetoRel: {
13797    prototype: SVGPathSegMovetoRel;
13798    new(): SVGPathSegMovetoRel;
13799}
13800
13801interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes {
13802    height: SVGAnimatedLength;
13803    patternContentUnits: SVGAnimatedEnumeration;
13804    patternTransform: SVGAnimatedTransformList;
13805    patternUnits: SVGAnimatedEnumeration;
13806    width: SVGAnimatedLength;
13807    x: SVGAnimatedLength;
13808    y: SVGAnimatedLength;
13809    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13810}
13811
13812declare var SVGPatternElement: {
13813    prototype: SVGPatternElement;
13814    new(): SVGPatternElement;
13815}
13816
13817interface SVGPoint {
13818    x: number;
13819    y: number;
13820    matrixTransform(matrix: SVGMatrix): SVGPoint;
13821}
13822
13823declare var SVGPoint: {
13824    prototype: SVGPoint;
13825    new(): SVGPoint;
13826}
13827
13828interface SVGPointList {
13829    numberOfItems: number;
13830    appendItem(newItem: SVGPoint): SVGPoint;
13831    clear(): void;
13832    getItem(index: number): SVGPoint;
13833    initialize(newItem: SVGPoint): SVGPoint;
13834    insertItemBefore(newItem: SVGPoint, index: number): SVGPoint;
13835    removeItem(index: number): SVGPoint;
13836    replaceItem(newItem: SVGPoint, index: number): SVGPoint;
13837}
13838
13839declare var SVGPointList: {
13840    prototype: SVGPointList;
13841    new(): SVGPointList;
13842}
13843
13844interface SVGPolygonElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGAnimatedPoints {
13845    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13846}
13847
13848declare var SVGPolygonElement: {
13849    prototype: SVGPolygonElement;
13850    new(): SVGPolygonElement;
13851}
13852
13853interface SVGPolylineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGAnimatedPoints {
13854    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13855}
13856
13857declare var SVGPolylineElement: {
13858    prototype: SVGPolylineElement;
13859    new(): SVGPolylineElement;
13860}
13861
13862interface SVGPreserveAspectRatio {
13863    align: number;
13864    meetOrSlice: number;
13865    SVG_MEETORSLICE_MEET: number;
13866    SVG_MEETORSLICE_SLICE: number;
13867    SVG_MEETORSLICE_UNKNOWN: number;
13868    SVG_PRESERVEASPECTRATIO_NONE: number;
13869    SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
13870    SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
13871    SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
13872    SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
13873    SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
13874    SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
13875    SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
13876    SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
13877    SVG_PRESERVEASPECTRATIO_XMINYMID: number;
13878    SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
13879}
13880
13881declare var SVGPreserveAspectRatio: {
13882    prototype: SVGPreserveAspectRatio;
13883    new(): SVGPreserveAspectRatio;
13884    SVG_MEETORSLICE_MEET: number;
13885    SVG_MEETORSLICE_SLICE: number;
13886    SVG_MEETORSLICE_UNKNOWN: number;
13887    SVG_PRESERVEASPECTRATIO_NONE: number;
13888    SVG_PRESERVEASPECTRATIO_UNKNOWN: number;
13889    SVG_PRESERVEASPECTRATIO_XMAXYMAX: number;
13890    SVG_PRESERVEASPECTRATIO_XMAXYMID: number;
13891    SVG_PRESERVEASPECTRATIO_XMAXYMIN: number;
13892    SVG_PRESERVEASPECTRATIO_XMIDYMAX: number;
13893    SVG_PRESERVEASPECTRATIO_XMIDYMID: number;
13894    SVG_PRESERVEASPECTRATIO_XMIDYMIN: number;
13895    SVG_PRESERVEASPECTRATIO_XMINYMAX: number;
13896    SVG_PRESERVEASPECTRATIO_XMINYMID: number;
13897    SVG_PRESERVEASPECTRATIO_XMINYMIN: number;
13898}
13899
13900interface SVGRadialGradientElement extends SVGGradientElement {
13901    cx: SVGAnimatedLength;
13902    cy: SVGAnimatedLength;
13903    fx: SVGAnimatedLength;
13904    fy: SVGAnimatedLength;
13905    r: SVGAnimatedLength;
13906}
13907
13908declare var SVGRadialGradientElement: {
13909    prototype: SVGRadialGradientElement;
13910    new(): SVGRadialGradientElement;
13911}
13912
13913interface SVGRect {
13914    height: number;
13915    width: number;
13916    x: number;
13917    y: number;
13918}
13919
13920declare var SVGRect: {
13921    prototype: SVGRect;
13922    new(): SVGRect;
13923}
13924
13925interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
13926    height: SVGAnimatedLength;
13927    rx: SVGAnimatedLength;
13928    ry: SVGAnimatedLength;
13929    width: SVGAnimatedLength;
13930    x: SVGAnimatedLength;
13931    y: SVGAnimatedLength;
13932    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
13933}
13934
13935declare var SVGRectElement: {
13936    prototype: SVGRectElement;
13937    new(): SVGRectElement;
13938}
13939
13940interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTests, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan {
13941    contentScriptType: string;
13942    contentStyleType: string;
13943    currentScale: number;
13944    currentTranslate: SVGPoint;
13945    height: SVGAnimatedLength;
13946    onabort: (ev: Event) => any;
13947    onerror: (ev: Event) => any;
13948    onresize: (ev: UIEvent) => any;
13949    onscroll: (ev: UIEvent) => any;
13950    onunload: (ev: Event) => any;
13951    onzoom: (ev: SVGZoomEvent) => any;
13952    pixelUnitToMillimeterX: number;
13953    pixelUnitToMillimeterY: number;
13954    screenPixelToMillimeterX: number;
13955    screenPixelToMillimeterY: number;
13956    viewport: SVGRect;
13957    width: SVGAnimatedLength;
13958    x: SVGAnimatedLength;
13959    y: SVGAnimatedLength;
13960    checkEnclosure(element: SVGElement, rect: SVGRect): boolean;
13961    checkIntersection(element: SVGElement, rect: SVGRect): boolean;
13962    createSVGAngle(): SVGAngle;
13963    createSVGLength(): SVGLength;
13964    createSVGMatrix(): SVGMatrix;
13965    createSVGNumber(): SVGNumber;
13966    createSVGPoint(): SVGPoint;
13967    createSVGRect(): SVGRect;
13968    createSVGTransform(): SVGTransform;
13969    createSVGTransformFromMatrix(matrix: SVGMatrix): SVGTransform;
13970    deselectAll(): void;
13971    forceRedraw(): void;
13972    getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration;
13973    getCurrentTime(): number;
13974    getElementById(elementId: string): Element;
13975    getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList;
13976    getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList;
13977    pauseAnimations(): void;
13978    setCurrentTime(seconds: number): void;
13979    suspendRedraw(maxWaitMilliseconds: number): number;
13980    unpauseAnimations(): void;
13981    unsuspendRedraw(suspendHandleID: number): void;
13982    unsuspendRedrawAll(): void;
13983    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13984    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13985    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13986    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13987    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13988    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13989    addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13990    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
13991    addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13992    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13993    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13994    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13995    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13996    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13997    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13998    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
13999    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
14000    addEventListener(type: "SVGAbort", listener: (ev: Event) => any, useCapture?: boolean): void;
14001    addEventListener(type: "SVGError", listener: (ev: Event) => any, useCapture?: boolean): void;
14002    addEventListener(type: "SVGUnload", listener: (ev: Event) => any, useCapture?: boolean): void;
14003    addEventListener(type: "SVGZoom", listener: (ev: SVGZoomEvent) => any, useCapture?: boolean): void;
14004    addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void;
14005    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14006    addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void;
14007    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14008    addEventListener(type: "focusin", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
14009    addEventListener(type: "focusout", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
14010    addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14011    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
14012    addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14013    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14014    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14015    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14016    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14017    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
14018    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14019    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14020    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14021    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14022    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14023    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14024    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14025    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
14026    addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
14027    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
14028    addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
14029    addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
14030    addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
14031    addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void;
14032    addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void;
14033    addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void;
14034    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
14035    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14036}
14037
14038declare var SVGSVGElement: {
14039    prototype: SVGSVGElement;
14040    new(): SVGSVGElement;
14041}
14042
14043interface SVGScriptElement extends SVGElement, SVGExternalResourcesRequired, SVGURIReference {
14044    type: string;
14045    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14046}
14047
14048declare var SVGScriptElement: {
14049    prototype: SVGScriptElement;
14050    new(): SVGScriptElement;
14051}
14052
14053interface SVGStopElement extends SVGElement, SVGStylable {
14054    offset: SVGAnimatedNumber;
14055    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14056}
14057
14058declare var SVGStopElement: {
14059    prototype: SVGStopElement;
14060    new(): SVGStopElement;
14061}
14062
14063interface SVGStringList {
14064    numberOfItems: number;
14065    appendItem(newItem: string): string;
14066    clear(): void;
14067    getItem(index: number): string;
14068    initialize(newItem: string): string;
14069    insertItemBefore(newItem: string, index: number): string;
14070    removeItem(index: number): string;
14071    replaceItem(newItem: string, index: number): string;
14072}
14073
14074declare var SVGStringList: {
14075    prototype: SVGStringList;
14076    new(): SVGStringList;
14077}
14078
14079interface SVGStyleElement extends SVGElement, SVGLangSpace {
14080    media: string;
14081    title: string;
14082    type: string;
14083    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14084}
14085
14086declare var SVGStyleElement: {
14087    prototype: SVGStyleElement;
14088    new(): SVGStyleElement;
14089}
14090
14091interface SVGSwitchElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
14092    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14093}
14094
14095declare var SVGSwitchElement: {
14096    prototype: SVGSwitchElement;
14097    new(): SVGSwitchElement;
14098}
14099
14100interface SVGSymbolElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox {
14101    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14102}
14103
14104declare var SVGSymbolElement: {
14105    prototype: SVGSymbolElement;
14106    new(): SVGSymbolElement;
14107}
14108
14109interface SVGTSpanElement extends SVGTextPositioningElement {
14110}
14111
14112declare var SVGTSpanElement: {
14113    prototype: SVGTSpanElement;
14114    new(): SVGTSpanElement;
14115}
14116
14117interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired {
14118    lengthAdjust: SVGAnimatedEnumeration;
14119    textLength: SVGAnimatedLength;
14120    getCharNumAtPosition(point: SVGPoint): number;
14121    getComputedTextLength(): number;
14122    getEndPositionOfChar(charnum: number): SVGPoint;
14123    getExtentOfChar(charnum: number): SVGRect;
14124    getNumberOfChars(): number;
14125    getRotationOfChar(charnum: number): number;
14126    getStartPositionOfChar(charnum: number): SVGPoint;
14127    getSubStringLength(charnum: number, nchars: number): number;
14128    selectSubString(charnum: number, nchars: number): void;
14129    LENGTHADJUST_SPACING: number;
14130    LENGTHADJUST_SPACINGANDGLYPHS: number;
14131    LENGTHADJUST_UNKNOWN: number;
14132    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14133}
14134
14135declare var SVGTextContentElement: {
14136    prototype: SVGTextContentElement;
14137    new(): SVGTextContentElement;
14138    LENGTHADJUST_SPACING: number;
14139    LENGTHADJUST_SPACINGANDGLYPHS: number;
14140    LENGTHADJUST_UNKNOWN: number;
14141}
14142
14143interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable {
14144    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14145}
14146
14147declare var SVGTextElement: {
14148    prototype: SVGTextElement;
14149    new(): SVGTextElement;
14150}
14151
14152interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference {
14153    method: SVGAnimatedEnumeration;
14154    spacing: SVGAnimatedEnumeration;
14155    startOffset: SVGAnimatedLength;
14156    TEXTPATH_METHODTYPE_ALIGN: number;
14157    TEXTPATH_METHODTYPE_STRETCH: number;
14158    TEXTPATH_METHODTYPE_UNKNOWN: number;
14159    TEXTPATH_SPACINGTYPE_AUTO: number;
14160    TEXTPATH_SPACINGTYPE_EXACT: number;
14161    TEXTPATH_SPACINGTYPE_UNKNOWN: number;
14162    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14163}
14164
14165declare var SVGTextPathElement: {
14166    prototype: SVGTextPathElement;
14167    new(): SVGTextPathElement;
14168    TEXTPATH_METHODTYPE_ALIGN: number;
14169    TEXTPATH_METHODTYPE_STRETCH: number;
14170    TEXTPATH_METHODTYPE_UNKNOWN: number;
14171    TEXTPATH_SPACINGTYPE_AUTO: number;
14172    TEXTPATH_SPACINGTYPE_EXACT: number;
14173    TEXTPATH_SPACINGTYPE_UNKNOWN: number;
14174}
14175
14176interface SVGTextPositioningElement extends SVGTextContentElement {
14177    dx: SVGAnimatedLengthList;
14178    dy: SVGAnimatedLengthList;
14179    rotate: SVGAnimatedNumberList;
14180    x: SVGAnimatedLengthList;
14181    y: SVGAnimatedLengthList;
14182}
14183
14184declare var SVGTextPositioningElement: {
14185    prototype: SVGTextPositioningElement;
14186    new(): SVGTextPositioningElement;
14187}
14188
14189interface SVGTitleElement extends SVGElement, SVGStylable, SVGLangSpace {
14190    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14191}
14192
14193declare var SVGTitleElement: {
14194    prototype: SVGTitleElement;
14195    new(): SVGTitleElement;
14196}
14197
14198interface SVGTransform {
14199    angle: number;
14200    matrix: SVGMatrix;
14201    type: number;
14202    setMatrix(matrix: SVGMatrix): void;
14203    setRotate(angle: number, cx: number, cy: number): void;
14204    setScale(sx: number, sy: number): void;
14205    setSkewX(angle: number): void;
14206    setSkewY(angle: number): void;
14207    setTranslate(tx: number, ty: number): void;
14208    SVG_TRANSFORM_MATRIX: number;
14209    SVG_TRANSFORM_ROTATE: number;
14210    SVG_TRANSFORM_SCALE: number;
14211    SVG_TRANSFORM_SKEWX: number;
14212    SVG_TRANSFORM_SKEWY: number;
14213    SVG_TRANSFORM_TRANSLATE: number;
14214    SVG_TRANSFORM_UNKNOWN: number;
14215}
14216
14217declare var SVGTransform: {
14218    prototype: SVGTransform;
14219    new(): SVGTransform;
14220    SVG_TRANSFORM_MATRIX: number;
14221    SVG_TRANSFORM_ROTATE: number;
14222    SVG_TRANSFORM_SCALE: number;
14223    SVG_TRANSFORM_SKEWX: number;
14224    SVG_TRANSFORM_SKEWY: number;
14225    SVG_TRANSFORM_TRANSLATE: number;
14226    SVG_TRANSFORM_UNKNOWN: number;
14227}
14228
14229interface SVGTransformList {
14230    numberOfItems: number;
14231    appendItem(newItem: SVGTransform): SVGTransform;
14232    clear(): void;
14233    consolidate(): SVGTransform;
14234    createSVGTransformFromMatrix(matrix: SVGMatrix): SVGTransform;
14235    getItem(index: number): SVGTransform;
14236    initialize(newItem: SVGTransform): SVGTransform;
14237    insertItemBefore(newItem: SVGTransform, index: number): SVGTransform;
14238    removeItem(index: number): SVGTransform;
14239    replaceItem(newItem: SVGTransform, index: number): SVGTransform;
14240}
14241
14242declare var SVGTransformList: {
14243    prototype: SVGTransformList;
14244    new(): SVGTransformList;
14245}
14246
14247interface SVGUnitTypes {
14248    SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
14249    SVG_UNIT_TYPE_UNKNOWN: number;
14250    SVG_UNIT_TYPE_USERSPACEONUSE: number;
14251}
14252declare var SVGUnitTypes: SVGUnitTypes;
14253
14254interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference {
14255    animatedInstanceRoot: SVGElementInstance;
14256    height: SVGAnimatedLength;
14257    instanceRoot: SVGElementInstance;
14258    width: SVGAnimatedLength;
14259    x: SVGAnimatedLength;
14260    y: SVGAnimatedLength;
14261    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14262}
14263
14264declare var SVGUseElement: {
14265    prototype: SVGUseElement;
14266    new(): SVGUseElement;
14267}
14268
14269interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan {
14270    viewTarget: SVGStringList;
14271    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14272}
14273
14274declare var SVGViewElement: {
14275    prototype: SVGViewElement;
14276    new(): SVGViewElement;
14277}
14278
14279interface SVGZoomAndPan {
14280    SVG_ZOOMANDPAN_DISABLE: number;
14281    SVG_ZOOMANDPAN_MAGNIFY: number;
14282    SVG_ZOOMANDPAN_UNKNOWN: number;
14283}
14284declare var SVGZoomAndPan: SVGZoomAndPan;
14285
14286interface SVGZoomEvent extends UIEvent {
14287    newScale: number;
14288    newTranslate: SVGPoint;
14289    previousScale: number;
14290    previousTranslate: SVGPoint;
14291    zoomRectScreen: SVGRect;
14292}
14293
14294declare var SVGZoomEvent: {
14295    prototype: SVGZoomEvent;
14296    new(): SVGZoomEvent;
14297}
14298
14299interface Screen extends EventTarget {
14300    availHeight: number;
14301    availWidth: number;
14302    bufferDepth: number;
14303    colorDepth: number;
14304    deviceXDPI: number;
14305    deviceYDPI: number;
14306    fontSmoothingEnabled: boolean;
14307    height: number;
14308    logicalXDPI: number;
14309    logicalYDPI: number;
14310    msOrientation: string;
14311    onmsorientationchange: (ev: Event) => any;
14312    pixelDepth: number;
14313    systemXDPI: number;
14314    systemYDPI: number;
14315    width: number;
14316    msLockOrientation(orientations: string | string[]): boolean;
14317    msUnlockOrientation(): void;
14318    addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void;
14319    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14320}
14321
14322declare var Screen: {
14323    prototype: Screen;
14324    new(): Screen;
14325}
14326
14327interface ScriptNotifyEvent extends Event {
14328    callingUri: string;
14329    value: string;
14330}
14331
14332declare var ScriptNotifyEvent: {
14333    prototype: ScriptNotifyEvent;
14334    new(): ScriptNotifyEvent;
14335}
14336
14337interface ScriptProcessorNode extends AudioNode {
14338    bufferSize: number;
14339    onaudioprocess: (ev: AudioProcessingEvent) => any;
14340    addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void;
14341    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14342}
14343
14344declare var ScriptProcessorNode: {
14345    prototype: ScriptProcessorNode;
14346    new(): ScriptProcessorNode;
14347}
14348
14349interface Selection {
14350    anchorNode: Node;
14351    anchorOffset: number;
14352    focusNode: Node;
14353    focusOffset: number;
14354    isCollapsed: boolean;
14355    rangeCount: number;
14356    type: string;
14357    addRange(range: Range): void;
14358    collapse(parentNode: Node, offset: number): void;
14359    collapseToEnd(): void;
14360    collapseToStart(): void;
14361    containsNode(node: Node, partlyContained: boolean): boolean;
14362    deleteFromDocument(): void;
14363    empty(): void;
14364    extend(newNode: Node, offset: number): void;
14365    getRangeAt(index: number): Range;
14366    removeAllRanges(): void;
14367    removeRange(range: Range): void;
14368    selectAllChildren(parentNode: Node): void;
14369    setBaseAndExtent(baseNode: Node, baseOffset: number, extentNode: Node, extentOffset: number): void;
14370    toString(): string;
14371}
14372
14373declare var Selection: {
14374    prototype: Selection;
14375    new(): Selection;
14376}
14377
14378interface SourceBuffer extends EventTarget {
14379    appendWindowEnd: number;
14380    appendWindowStart: number;
14381    audioTracks: AudioTrackList;
14382    buffered: TimeRanges;
14383    mode: string;
14384    timestampOffset: number;
14385    updating: boolean;
14386    videoTracks: VideoTrackList;
14387    abort(): void;
14388    appendBuffer(data: ArrayBuffer | ArrayBufferView): void;
14389    appendStream(stream: MSStream, maxSize?: number): void;
14390    remove(start: number, end: number): void;
14391}
14392
14393declare var SourceBuffer: {
14394    prototype: SourceBuffer;
14395    new(): SourceBuffer;
14396}
14397
14398interface SourceBufferList extends EventTarget {
14399    length: number;
14400    item(index: number): SourceBuffer;
14401    [index: number]: SourceBuffer;
14402}
14403
14404declare var SourceBufferList: {
14405    prototype: SourceBufferList;
14406    new(): SourceBufferList;
14407}
14408
14409interface StereoPannerNode extends AudioNode {
14410    pan: AudioParam;
14411}
14412
14413declare var StereoPannerNode: {
14414    prototype: StereoPannerNode;
14415    new(): StereoPannerNode;
14416}
14417
14418interface Storage {
14419    length: number;
14420    clear(): void;
14421    getItem(key: string): any;
14422    key(index: number): string;
14423    removeItem(key: string): void;
14424    setItem(key: string, data: string): void;
14425    [key: string]: any;
14426    [index: number]: string;
14427}
14428
14429declare var Storage: {
14430    prototype: Storage;
14431    new(): Storage;
14432}
14433
14434interface StorageEvent extends Event {
14435    key: string;
14436    newValue: any;
14437    oldValue: any;
14438    storageArea: Storage;
14439    url: string;
14440    initStorageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, keyArg: string, oldValueArg: any, newValueArg: any, urlArg: string, storageAreaArg: Storage): void;
14441}
14442
14443declare var StorageEvent: {
14444    prototype: StorageEvent;
14445    new(): StorageEvent;
14446}
14447
14448interface StyleMedia {
14449    type: string;
14450    matchMedium(mediaquery: string): boolean;
14451}
14452
14453declare var StyleMedia: {
14454    prototype: StyleMedia;
14455    new(): StyleMedia;
14456}
14457
14458interface StyleSheet {
14459    disabled: boolean;
14460    href: string;
14461    media: MediaList;
14462    ownerNode: Node;
14463    parentStyleSheet: StyleSheet;
14464    title: string;
14465    type: string;
14466}
14467
14468declare var StyleSheet: {
14469    prototype: StyleSheet;
14470    new(): StyleSheet;
14471}
14472
14473interface StyleSheetList {
14474    length: number;
14475    item(index?: number): StyleSheet;
14476    [index: number]: StyleSheet;
14477}
14478
14479declare var StyleSheetList: {
14480    prototype: StyleSheetList;
14481    new(): StyleSheetList;
14482}
14483
14484interface StyleSheetPageList {
14485    length: number;
14486    item(index: number): CSSPageRule;
14487    [index: number]: CSSPageRule;
14488}
14489
14490declare var StyleSheetPageList: {
14491    prototype: StyleSheetPageList;
14492    new(): StyleSheetPageList;
14493}
14494
14495interface SubtleCrypto {
14496    decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any;
14497    deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any;
14498    deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any;
14499    digest(algorithm: string | Algorithm, data: ArrayBufferView): any;
14500    encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any;
14501    exportKey(format: string, key: CryptoKey): any;
14502    generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any;
14503    importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any;
14504    sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any;
14505    unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any;
14506    verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any;
14507    wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any;
14508}
14509
14510declare var SubtleCrypto: {
14511    prototype: SubtleCrypto;
14512    new(): SubtleCrypto;
14513}
14514
14515interface Text extends CharacterData {
14516    wholeText: string;
14517    replaceWholeText(content: string): Text;
14518    splitText(offset: number): Text;
14519}
14520
14521declare var Text: {
14522    prototype: Text;
14523    new(): Text;
14524}
14525
14526interface TextEvent extends UIEvent {
14527    data: string;
14528    inputMethod: number;
14529    locale: string;
14530    initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void;
14531    DOM_INPUT_METHOD_DROP: number;
14532    DOM_INPUT_METHOD_HANDWRITING: number;
14533    DOM_INPUT_METHOD_IME: number;
14534    DOM_INPUT_METHOD_KEYBOARD: number;
14535    DOM_INPUT_METHOD_MULTIMODAL: number;
14536    DOM_INPUT_METHOD_OPTION: number;
14537    DOM_INPUT_METHOD_PASTE: number;
14538    DOM_INPUT_METHOD_SCRIPT: number;
14539    DOM_INPUT_METHOD_UNKNOWN: number;
14540    DOM_INPUT_METHOD_VOICE: number;
14541}
14542
14543declare var TextEvent: {
14544    prototype: TextEvent;
14545    new(): TextEvent;
14546    DOM_INPUT_METHOD_DROP: number;
14547    DOM_INPUT_METHOD_HANDWRITING: number;
14548    DOM_INPUT_METHOD_IME: number;
14549    DOM_INPUT_METHOD_KEYBOARD: number;
14550    DOM_INPUT_METHOD_MULTIMODAL: number;
14551    DOM_INPUT_METHOD_OPTION: number;
14552    DOM_INPUT_METHOD_PASTE: number;
14553    DOM_INPUT_METHOD_SCRIPT: number;
14554    DOM_INPUT_METHOD_UNKNOWN: number;
14555    DOM_INPUT_METHOD_VOICE: number;
14556}
14557
14558interface TextMetrics {
14559    width: number;
14560}
14561
14562declare var TextMetrics: {
14563    prototype: TextMetrics;
14564    new(): TextMetrics;
14565}
14566
14567interface TextRange {
14568    boundingHeight: number;
14569    boundingLeft: number;
14570    boundingTop: number;
14571    boundingWidth: number;
14572    htmlText: string;
14573    offsetLeft: number;
14574    offsetTop: number;
14575    text: string;
14576    collapse(start?: boolean): void;
14577    compareEndPoints(how: string, sourceRange: TextRange): number;
14578    duplicate(): TextRange;
14579    execCommand(cmdID: string, showUI?: boolean, value?: any): boolean;
14580    execCommandShowHelp(cmdID: string): boolean;
14581    expand(Unit: string): boolean;
14582    findText(string: string, count?: number, flags?: number): boolean;
14583    getBookmark(): string;
14584    getBoundingClientRect(): ClientRect;
14585    getClientRects(): ClientRectList;
14586    inRange(range: TextRange): boolean;
14587    isEqual(range: TextRange): boolean;
14588    move(unit: string, count?: number): number;
14589    moveEnd(unit: string, count?: number): number;
14590    moveStart(unit: string, count?: number): number;
14591    moveToBookmark(bookmark: string): boolean;
14592    moveToElementText(element: Element): void;
14593    moveToPoint(x: number, y: number): void;
14594    parentElement(): Element;
14595    pasteHTML(html: string): void;
14596    queryCommandEnabled(cmdID: string): boolean;
14597    queryCommandIndeterm(cmdID: string): boolean;
14598    queryCommandState(cmdID: string): boolean;
14599    queryCommandSupported(cmdID: string): boolean;
14600    queryCommandText(cmdID: string): string;
14601    queryCommandValue(cmdID: string): any;
14602    scrollIntoView(fStart?: boolean): void;
14603    select(): void;
14604    setEndPoint(how: string, SourceRange: TextRange): void;
14605}
14606
14607declare var TextRange: {
14608    prototype: TextRange;
14609    new(): TextRange;
14610}
14611
14612interface TextRangeCollection {
14613    length: number;
14614    item(index: number): TextRange;
14615    [index: number]: TextRange;
14616}
14617
14618declare var TextRangeCollection: {
14619    prototype: TextRangeCollection;
14620    new(): TextRangeCollection;
14621}
14622
14623interface TextTrack extends EventTarget {
14624    activeCues: TextTrackCueList;
14625    cues: TextTrackCueList;
14626    inBandMetadataTrackDispatchType: string;
14627    kind: string;
14628    label: string;
14629    language: string;
14630    mode: any;
14631    oncuechange: (ev: Event) => any;
14632    onerror: (ev: Event) => any;
14633    onload: (ev: Event) => any;
14634    readyState: number;
14635    addCue(cue: TextTrackCue): void;
14636    removeCue(cue: TextTrackCue): void;
14637    DISABLED: number;
14638    ERROR: number;
14639    HIDDEN: number;
14640    LOADED: number;
14641    LOADING: number;
14642    NONE: number;
14643    SHOWING: number;
14644    addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void;
14645    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
14646    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
14647    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14648}
14649
14650declare var TextTrack: {
14651    prototype: TextTrack;
14652    new(): TextTrack;
14653    DISABLED: number;
14654    ERROR: number;
14655    HIDDEN: number;
14656    LOADED: number;
14657    LOADING: number;
14658    NONE: number;
14659    SHOWING: number;
14660}
14661
14662interface TextTrackCue extends EventTarget {
14663    endTime: number;
14664    id: string;
14665    onenter: (ev: Event) => any;
14666    onexit: (ev: Event) => any;
14667    pauseOnExit: boolean;
14668    startTime: number;
14669    text: string;
14670    track: TextTrack;
14671    getCueAsHTML(): DocumentFragment;
14672    addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void;
14673    addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void;
14674    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14675}
14676
14677declare var TextTrackCue: {
14678    prototype: TextTrackCue;
14679    new(startTime: number, endTime: number, text: string): TextTrackCue;
14680}
14681
14682interface TextTrackCueList {
14683    length: number;
14684    getCueById(id: string): TextTrackCue;
14685    item(index: number): TextTrackCue;
14686    [index: number]: TextTrackCue;
14687}
14688
14689declare var TextTrackCueList: {
14690    prototype: TextTrackCueList;
14691    new(): TextTrackCueList;
14692}
14693
14694interface TextTrackList extends EventTarget {
14695    length: number;
14696    onaddtrack: (ev: TrackEvent) => any;
14697    item(index: number): TextTrack;
14698    addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void;
14699    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14700    [index: number]: TextTrack;
14701}
14702
14703declare var TextTrackList: {
14704    prototype: TextTrackList;
14705    new(): TextTrackList;
14706}
14707
14708interface TimeRanges {
14709    length: number;
14710    end(index: number): number;
14711    start(index: number): number;
14712}
14713
14714declare var TimeRanges: {
14715    prototype: TimeRanges;
14716    new(): TimeRanges;
14717}
14718
14719interface Touch {
14720    clientX: number;
14721    clientY: number;
14722    identifier: number;
14723    pageX: number;
14724    pageY: number;
14725    screenX: number;
14726    screenY: number;
14727    target: EventTarget;
14728}
14729
14730declare var Touch: {
14731    prototype: Touch;
14732    new(): Touch;
14733}
14734
14735interface TouchEvent extends UIEvent {
14736    altKey: boolean;
14737    changedTouches: TouchList;
14738    ctrlKey: boolean;
14739    metaKey: boolean;
14740    shiftKey: boolean;
14741    targetTouches: TouchList;
14742    touches: TouchList;
14743}
14744
14745declare var TouchEvent: {
14746    prototype: TouchEvent;
14747    new(): TouchEvent;
14748}
14749
14750interface TouchList {
14751    length: number;
14752    item(index: number): Touch;
14753    [index: number]: Touch;
14754}
14755
14756declare var TouchList: {
14757    prototype: TouchList;
14758    new(): TouchList;
14759}
14760
14761interface TrackEvent extends Event {
14762    track: any;
14763}
14764
14765declare var TrackEvent: {
14766    prototype: TrackEvent;
14767    new(): TrackEvent;
14768}
14769
14770interface TransitionEvent extends Event {
14771    elapsedTime: number;
14772    propertyName: string;
14773    initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void;
14774}
14775
14776declare var TransitionEvent: {
14777    prototype: TransitionEvent;
14778    new(): TransitionEvent;
14779}
14780
14781interface TreeWalker {
14782    currentNode: Node;
14783    expandEntityReferences: boolean;
14784    filter: NodeFilter;
14785    root: Node;
14786    whatToShow: number;
14787    firstChild(): Node;
14788    lastChild(): Node;
14789    nextNode(): Node;
14790    nextSibling(): Node;
14791    parentNode(): Node;
14792    previousNode(): Node;
14793    previousSibling(): Node;
14794}
14795
14796declare var TreeWalker: {
14797    prototype: TreeWalker;
14798    new(): TreeWalker;
14799}
14800
14801interface UIEvent extends Event {
14802    detail: number;
14803    view: Window;
14804    initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void;
14805}
14806
14807declare var UIEvent: {
14808    prototype: UIEvent;
14809    new(type: string, eventInitDict?: UIEventInit): UIEvent;
14810}
14811
14812interface URL {
14813    createObjectURL(object: any, options?: ObjectURLOptions): string;
14814    revokeObjectURL(url: string): void;
14815}
14816declare var URL: URL;
14817
14818interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer {
14819    mediaType: string;
14820}
14821
14822declare var UnviewableContentIdentifiedEvent: {
14823    prototype: UnviewableContentIdentifiedEvent;
14824    new(): UnviewableContentIdentifiedEvent;
14825}
14826
14827interface ValidityState {
14828    badInput: boolean;
14829    customError: boolean;
14830    patternMismatch: boolean;
14831    rangeOverflow: boolean;
14832    rangeUnderflow: boolean;
14833    stepMismatch: boolean;
14834    tooLong: boolean;
14835    typeMismatch: boolean;
14836    valid: boolean;
14837    valueMissing: boolean;
14838}
14839
14840declare var ValidityState: {
14841    prototype: ValidityState;
14842    new(): ValidityState;
14843}
14844
14845interface VideoPlaybackQuality {
14846    corruptedVideoFrames: number;
14847    creationTime: number;
14848    droppedVideoFrames: number;
14849    totalFrameDelay: number;
14850    totalVideoFrames: number;
14851}
14852
14853declare var VideoPlaybackQuality: {
14854    prototype: VideoPlaybackQuality;
14855    new(): VideoPlaybackQuality;
14856}
14857
14858interface VideoTrack {
14859    id: string;
14860    kind: string;
14861    label: string;
14862    language: string;
14863    selected: boolean;
14864    sourceBuffer: SourceBuffer;
14865}
14866
14867declare var VideoTrack: {
14868    prototype: VideoTrack;
14869    new(): VideoTrack;
14870}
14871
14872interface VideoTrackList extends EventTarget {
14873    length: number;
14874    onaddtrack: (ev: TrackEvent) => any;
14875    onchange: (ev: Event) => any;
14876    onremovetrack: (ev: TrackEvent) => any;
14877    selectedIndex: number;
14878    getTrackById(id: string): VideoTrack;
14879    item(index: number): VideoTrack;
14880    addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void;
14881    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
14882    addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void;
14883    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
14884    [index: number]: VideoTrack;
14885}
14886
14887declare var VideoTrackList: {
14888    prototype: VideoTrackList;
14889    new(): VideoTrackList;
14890}
14891
14892interface WEBGL_compressed_texture_s3tc {
14893    COMPRESSED_RGBA_S3TC_DXT1_EXT: number;
14894    COMPRESSED_RGBA_S3TC_DXT3_EXT: number;
14895    COMPRESSED_RGBA_S3TC_DXT5_EXT: number;
14896    COMPRESSED_RGB_S3TC_DXT1_EXT: number;
14897}
14898
14899declare var WEBGL_compressed_texture_s3tc: {
14900    prototype: WEBGL_compressed_texture_s3tc;
14901    new(): WEBGL_compressed_texture_s3tc;
14902    COMPRESSED_RGBA_S3TC_DXT1_EXT: number;
14903    COMPRESSED_RGBA_S3TC_DXT3_EXT: number;
14904    COMPRESSED_RGBA_S3TC_DXT5_EXT: number;
14905    COMPRESSED_RGB_S3TC_DXT1_EXT: number;
14906}
14907
14908interface WEBGL_debug_renderer_info {
14909    UNMASKED_RENDERER_WEBGL: number;
14910    UNMASKED_VENDOR_WEBGL: number;
14911}
14912
14913declare var WEBGL_debug_renderer_info: {
14914    prototype: WEBGL_debug_renderer_info;
14915    new(): WEBGL_debug_renderer_info;
14916    UNMASKED_RENDERER_WEBGL: number;
14917    UNMASKED_VENDOR_WEBGL: number;
14918}
14919
14920interface WEBGL_depth_texture {
14921    UNSIGNED_INT_24_8_WEBGL: number;
14922}
14923
14924declare var WEBGL_depth_texture: {
14925    prototype: WEBGL_depth_texture;
14926    new(): WEBGL_depth_texture;
14927    UNSIGNED_INT_24_8_WEBGL: number;
14928}
14929
14930interface WaveShaperNode extends AudioNode {
14931    curve: Float32Array;
14932    oversample: string;
14933}
14934
14935declare var WaveShaperNode: {
14936    prototype: WaveShaperNode;
14937    new(): WaveShaperNode;
14938}
14939
14940interface WebGLActiveInfo {
14941    name: string;
14942    size: number;
14943    type: number;
14944}
14945
14946declare var WebGLActiveInfo: {
14947    prototype: WebGLActiveInfo;
14948    new(): WebGLActiveInfo;
14949}
14950
14951interface WebGLBuffer extends WebGLObject {
14952}
14953
14954declare var WebGLBuffer: {
14955    prototype: WebGLBuffer;
14956    new(): WebGLBuffer;
14957}
14958
14959interface WebGLContextEvent extends Event {
14960    statusMessage: string;
14961}
14962
14963declare var WebGLContextEvent: {
14964    prototype: WebGLContextEvent;
14965    new(): WebGLContextEvent;
14966}
14967
14968interface WebGLFramebuffer extends WebGLObject {
14969}
14970
14971declare var WebGLFramebuffer: {
14972    prototype: WebGLFramebuffer;
14973    new(): WebGLFramebuffer;
14974}
14975
14976interface WebGLObject {
14977}
14978
14979declare var WebGLObject: {
14980    prototype: WebGLObject;
14981    new(): WebGLObject;
14982}
14983
14984interface WebGLProgram extends WebGLObject {
14985}
14986
14987declare var WebGLProgram: {
14988    prototype: WebGLProgram;
14989    new(): WebGLProgram;
14990}
14991
14992interface WebGLRenderbuffer extends WebGLObject {
14993}
14994
14995declare var WebGLRenderbuffer: {
14996    prototype: WebGLRenderbuffer;
14997    new(): WebGLRenderbuffer;
14998}
14999
15000interface WebGLRenderingContext {
15001    canvas: HTMLCanvasElement;
15002    drawingBufferHeight: number;
15003    drawingBufferWidth: number;
15004    activeTexture(texture: number): void;
15005    attachShader(program: WebGLProgram, shader: WebGLShader): void;
15006    bindAttribLocation(program: WebGLProgram, index: number, name: string): void;
15007    bindBuffer(target: number, buffer: WebGLBuffer): void;
15008    bindFramebuffer(target: number, framebuffer: WebGLFramebuffer): void;
15009    bindRenderbuffer(target: number, renderbuffer: WebGLRenderbuffer): void;
15010    bindTexture(target: number, texture: WebGLTexture): void;
15011    blendColor(red: number, green: number, blue: number, alpha: number): void;
15012    blendEquation(mode: number): void;
15013    blendEquationSeparate(modeRGB: number, modeAlpha: number): void;
15014    blendFunc(sfactor: number, dfactor: number): void;
15015    blendFuncSeparate(srcRGB: number, dstRGB: number, srcAlpha: number, dstAlpha: number): void;
15016    bufferData(target: number, size: number | ArrayBufferView | ArrayBuffer, usage: number): void;
15017    bufferSubData(target: number, offset: number, data: ArrayBufferView | ArrayBuffer): void;
15018    checkFramebufferStatus(target: number): number;
15019    clear(mask: number): void;
15020    clearColor(red: number, green: number, blue: number, alpha: number): void;
15021    clearDepth(depth: number): void;
15022    clearStencil(s: number): void;
15023    colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void;
15024    compileShader(shader: WebGLShader): void;
15025    compressedTexImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, data: ArrayBufferView): void;
15026    compressedTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, data: ArrayBufferView): void;
15027    copyTexImage2D(target: number, level: number, internalformat: number, x: number, y: number, width: number, height: number, border: number): void;
15028    copyTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, x: number, y: number, width: number, height: number): void;
15029    createBuffer(): WebGLBuffer;
15030    createFramebuffer(): WebGLFramebuffer;
15031    createProgram(): WebGLProgram;
15032    createRenderbuffer(): WebGLRenderbuffer;
15033    createShader(type: number): WebGLShader;
15034    createTexture(): WebGLTexture;
15035    cullFace(mode: number): void;
15036    deleteBuffer(buffer: WebGLBuffer): void;
15037    deleteFramebuffer(framebuffer: WebGLFramebuffer): void;
15038    deleteProgram(program: WebGLProgram): void;
15039    deleteRenderbuffer(renderbuffer: WebGLRenderbuffer): void;
15040    deleteShader(shader: WebGLShader): void;
15041    deleteTexture(texture: WebGLTexture): void;
15042    depthFunc(func: number): void;
15043    depthMask(flag: boolean): void;
15044    depthRange(zNear: number, zFar: number): void;
15045    detachShader(program: WebGLProgram, shader: WebGLShader): void;
15046    disable(cap: number): void;
15047    disableVertexAttribArray(index: number): void;
15048    drawArrays(mode: number, first: number, count: number): void;
15049    drawElements(mode: number, count: number, type: number, offset: number): void;
15050    enable(cap: number): void;
15051    enableVertexAttribArray(index: number): void;
15052    finish(): void;
15053    flush(): void;
15054    framebufferRenderbuffer(target: number, attachment: number, renderbuffertarget: number, renderbuffer: WebGLRenderbuffer): void;
15055    framebufferTexture2D(target: number, attachment: number, textarget: number, texture: WebGLTexture, level: number): void;
15056    frontFace(mode: number): void;
15057    generateMipmap(target: number): void;
15058    getActiveAttrib(program: WebGLProgram, index: number): WebGLActiveInfo;
15059    getActiveUniform(program: WebGLProgram, index: number): WebGLActiveInfo;
15060    getAttachedShaders(program: WebGLProgram): WebGLShader[];
15061    getAttribLocation(program: WebGLProgram, name: string): number;
15062    getBufferParameter(target: number, pname: number): any;
15063    getContextAttributes(): WebGLContextAttributes;
15064    getError(): number;
15065    getExtension(name: string): any;
15066    getFramebufferAttachmentParameter(target: number, attachment: number, pname: number): any;
15067    getParameter(pname: number): any;
15068    getProgramInfoLog(program: WebGLProgram): string;
15069    getProgramParameter(program: WebGLProgram, pname: number): any;
15070    getRenderbufferParameter(target: number, pname: number): any;
15071    getShaderInfoLog(shader: WebGLShader): string;
15072    getShaderParameter(shader: WebGLShader, pname: number): any;
15073    getShaderPrecisionFormat(shadertype: number, precisiontype: number): WebGLShaderPrecisionFormat;
15074    getShaderSource(shader: WebGLShader): string;
15075    getSupportedExtensions(): string[];
15076    getTexParameter(target: number, pname: number): any;
15077    getUniform(program: WebGLProgram, location: WebGLUniformLocation): any;
15078    getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation;
15079    getVertexAttrib(index: number, pname: number): any;
15080    getVertexAttribOffset(index: number, pname: number): number;
15081    hint(target: number, mode: number): void;
15082    isBuffer(buffer: WebGLBuffer): boolean;
15083    isContextLost(): boolean;
15084    isEnabled(cap: number): boolean;
15085    isFramebuffer(framebuffer: WebGLFramebuffer): boolean;
15086    isProgram(program: WebGLProgram): boolean;
15087    isRenderbuffer(renderbuffer: WebGLRenderbuffer): boolean;
15088    isShader(shader: WebGLShader): boolean;
15089    isTexture(texture: WebGLTexture): boolean;
15090    lineWidth(width: number): void;
15091    linkProgram(program: WebGLProgram): void;
15092    pixelStorei(pname: number, param: number): void;
15093    polygonOffset(factor: number, units: number): void;
15094    readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void;
15095    renderbufferStorage(target: number, internalformat: number, width: number, height: number): void;
15096    sampleCoverage(value: number, invert: boolean): void;
15097    scissor(x: number, y: number, width: number, height: number): void;
15098    shaderSource(shader: WebGLShader, source: string): void;
15099    stencilFunc(func: number, ref: number, mask: number): void;
15100    stencilFuncSeparate(face: number, func: number, ref: number, mask: number): void;
15101    stencilMask(mask: number): void;
15102    stencilMaskSeparate(face: number, mask: number): void;
15103    stencilOp(fail: number, zfail: number, zpass: number): void;
15104    stencilOpSeparate(face: number, fail: number, zfail: number, zpass: number): void;
15105    texImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: ArrayBufferView): void;
15106    texImage2D(target: number, level: number, internalformat: number, format: number, type: number, image: HTMLImageElement): void;
15107    texImage2D(target: number, level: number, internalformat: number, format: number, type: number, canvas: HTMLCanvasElement): void;
15108    texImage2D(target: number, level: number, internalformat: number, format: number, type: number, video: HTMLVideoElement): void;
15109    texImage2D(target: number, level: number, internalformat: number, format: number, type: number, pixels: ImageData): void;
15110    texParameterf(target: number, pname: number, param: number): void;
15111    texParameteri(target: number, pname: number, param: number): void;
15112    texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void;
15113    texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, image: HTMLImageElement): void;
15114    texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, canvas: HTMLCanvasElement): void;
15115    texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void;
15116    texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void;
15117    uniform1f(location: WebGLUniformLocation, x: number): void;
15118    uniform1fv(location: WebGLUniformLocation, v: Float32Array): void;
15119    uniform1i(location: WebGLUniformLocation, x: number): void;
15120    uniform1iv(location: WebGLUniformLocation, v: Int32Array): void;
15121    uniform2f(location: WebGLUniformLocation, x: number, y: number): void;
15122    uniform2fv(location: WebGLUniformLocation, v: Float32Array): void;
15123    uniform2i(location: WebGLUniformLocation, x: number, y: number): void;
15124    uniform2iv(location: WebGLUniformLocation, v: Int32Array): void;
15125    uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void;
15126    uniform3fv(location: WebGLUniformLocation, v: Float32Array): void;
15127    uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void;
15128    uniform3iv(location: WebGLUniformLocation, v: Int32Array): void;
15129    uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void;
15130    uniform4fv(location: WebGLUniformLocation, v: Float32Array): void;
15131    uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void;
15132    uniform4iv(location: WebGLUniformLocation, v: Int32Array): void;
15133    uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void;
15134    uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void;
15135    uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void;
15136    useProgram(program: WebGLProgram): void;
15137    validateProgram(program: WebGLProgram): void;
15138    vertexAttrib1f(indx: number, x: number): void;
15139    vertexAttrib1fv(indx: number, values: Float32Array): void;
15140    vertexAttrib2f(indx: number, x: number, y: number): void;
15141    vertexAttrib2fv(indx: number, values: Float32Array): void;
15142    vertexAttrib3f(indx: number, x: number, y: number, z: number): void;
15143    vertexAttrib3fv(indx: number, values: Float32Array): void;
15144    vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void;
15145    vertexAttrib4fv(indx: number, values: Float32Array): void;
15146    vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void;
15147    viewport(x: number, y: number, width: number, height: number): void;
15148    ACTIVE_ATTRIBUTES: number;
15149    ACTIVE_TEXTURE: number;
15150    ACTIVE_UNIFORMS: number;
15151    ALIASED_LINE_WIDTH_RANGE: number;
15152    ALIASED_POINT_SIZE_RANGE: number;
15153    ALPHA: number;
15154    ALPHA_BITS: number;
15155    ALWAYS: number;
15156    ARRAY_BUFFER: number;
15157    ARRAY_BUFFER_BINDING: number;
15158    ATTACHED_SHADERS: number;
15159    BACK: number;
15160    BLEND: number;
15161    BLEND_COLOR: number;
15162    BLEND_DST_ALPHA: number;
15163    BLEND_DST_RGB: number;
15164    BLEND_EQUATION: number;
15165    BLEND_EQUATION_ALPHA: number;
15166    BLEND_EQUATION_RGB: number;
15167    BLEND_SRC_ALPHA: number;
15168    BLEND_SRC_RGB: number;
15169    BLUE_BITS: number;
15170    BOOL: number;
15171    BOOL_VEC2: number;
15172    BOOL_VEC3: number;
15173    BOOL_VEC4: number;
15174    BROWSER_DEFAULT_WEBGL: number;
15175    BUFFER_SIZE: number;
15176    BUFFER_USAGE: number;
15177    BYTE: number;
15178    CCW: number;
15179    CLAMP_TO_EDGE: number;
15180    COLOR_ATTACHMENT0: number;
15181    COLOR_BUFFER_BIT: number;
15182    COLOR_CLEAR_VALUE: number;
15183    COLOR_WRITEMASK: number;
15184    COMPILE_STATUS: number;
15185    COMPRESSED_TEXTURE_FORMATS: number;
15186    CONSTANT_ALPHA: number;
15187    CONSTANT_COLOR: number;
15188    CONTEXT_LOST_WEBGL: number;
15189    CULL_FACE: number;
15190    CULL_FACE_MODE: number;
15191    CURRENT_PROGRAM: number;
15192    CURRENT_VERTEX_ATTRIB: number;
15193    CW: number;
15194    DECR: number;
15195    DECR_WRAP: number;
15196    DELETE_STATUS: number;
15197    DEPTH_ATTACHMENT: number;
15198    DEPTH_BITS: number;
15199    DEPTH_BUFFER_BIT: number;
15200    DEPTH_CLEAR_VALUE: number;
15201    DEPTH_COMPONENT: number;
15202    DEPTH_COMPONENT16: number;
15203    DEPTH_FUNC: number;
15204    DEPTH_RANGE: number;
15205    DEPTH_STENCIL: number;
15206    DEPTH_STENCIL_ATTACHMENT: number;
15207    DEPTH_TEST: number;
15208    DEPTH_WRITEMASK: number;
15209    DITHER: number;
15210    DONT_CARE: number;
15211    DST_ALPHA: number;
15212    DST_COLOR: number;
15213    DYNAMIC_DRAW: number;
15214    ELEMENT_ARRAY_BUFFER: number;
15215    ELEMENT_ARRAY_BUFFER_BINDING: number;
15216    EQUAL: number;
15217    FASTEST: number;
15218    FLOAT: number;
15219    FLOAT_MAT2: number;
15220    FLOAT_MAT3: number;
15221    FLOAT_MAT4: number;
15222    FLOAT_VEC2: number;
15223    FLOAT_VEC3: number;
15224    FLOAT_VEC4: number;
15225    FRAGMENT_SHADER: number;
15226    FRAMEBUFFER: number;
15227    FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number;
15228    FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number;
15229    FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number;
15230    FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number;
15231    FRAMEBUFFER_BINDING: number;
15232    FRAMEBUFFER_COMPLETE: number;
15233    FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number;
15234    FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number;
15235    FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number;
15236    FRAMEBUFFER_UNSUPPORTED: number;
15237    FRONT: number;
15238    FRONT_AND_BACK: number;
15239    FRONT_FACE: number;
15240    FUNC_ADD: number;
15241    FUNC_REVERSE_SUBTRACT: number;
15242    FUNC_SUBTRACT: number;
15243    GENERATE_MIPMAP_HINT: number;
15244    GEQUAL: number;
15245    GREATER: number;
15246    GREEN_BITS: number;
15247    HIGH_FLOAT: number;
15248    HIGH_INT: number;
15249    IMPLEMENTATION_COLOR_READ_FORMAT: number;
15250    IMPLEMENTATION_COLOR_READ_TYPE: number;
15251    INCR: number;
15252    INCR_WRAP: number;
15253    INT: number;
15254    INT_VEC2: number;
15255    INT_VEC3: number;
15256    INT_VEC4: number;
15257    INVALID_ENUM: number;
15258    INVALID_FRAMEBUFFER_OPERATION: number;
15259    INVALID_OPERATION: number;
15260    INVALID_VALUE: number;
15261    INVERT: number;
15262    KEEP: number;
15263    LEQUAL: number;
15264    LESS: number;
15265    LINEAR: number;
15266    LINEAR_MIPMAP_LINEAR: number;
15267    LINEAR_MIPMAP_NEAREST: number;
15268    LINES: number;
15269    LINE_LOOP: number;
15270    LINE_STRIP: number;
15271    LINE_WIDTH: number;
15272    LINK_STATUS: number;
15273    LOW_FLOAT: number;
15274    LOW_INT: number;
15275    LUMINANCE: number;
15276    LUMINANCE_ALPHA: number;
15277    MAX_COMBINED_TEXTURE_IMAGE_UNITS: number;
15278    MAX_CUBE_MAP_TEXTURE_SIZE: number;
15279    MAX_FRAGMENT_UNIFORM_VECTORS: number;
15280    MAX_RENDERBUFFER_SIZE: number;
15281    MAX_TEXTURE_IMAGE_UNITS: number;
15282    MAX_TEXTURE_SIZE: number;
15283    MAX_VARYING_VECTORS: number;
15284    MAX_VERTEX_ATTRIBS: number;
15285    MAX_VERTEX_TEXTURE_IMAGE_UNITS: number;
15286    MAX_VERTEX_UNIFORM_VECTORS: number;
15287    MAX_VIEWPORT_DIMS: number;
15288    MEDIUM_FLOAT: number;
15289    MEDIUM_INT: number;
15290    MIRRORED_REPEAT: number;
15291    NEAREST: number;
15292    NEAREST_MIPMAP_LINEAR: number;
15293    NEAREST_MIPMAP_NEAREST: number;
15294    NEVER: number;
15295    NICEST: number;
15296    NONE: number;
15297    NOTEQUAL: number;
15298    NO_ERROR: number;
15299    ONE: number;
15300    ONE_MINUS_CONSTANT_ALPHA: number;
15301    ONE_MINUS_CONSTANT_COLOR: number;
15302    ONE_MINUS_DST_ALPHA: number;
15303    ONE_MINUS_DST_COLOR: number;
15304    ONE_MINUS_SRC_ALPHA: number;
15305    ONE_MINUS_SRC_COLOR: number;
15306    OUT_OF_MEMORY: number;
15307    PACK_ALIGNMENT: number;
15308    POINTS: number;
15309    POLYGON_OFFSET_FACTOR: number;
15310    POLYGON_OFFSET_FILL: number;
15311    POLYGON_OFFSET_UNITS: number;
15312    RED_BITS: number;
15313    RENDERBUFFER: number;
15314    RENDERBUFFER_ALPHA_SIZE: number;
15315    RENDERBUFFER_BINDING: number;
15316    RENDERBUFFER_BLUE_SIZE: number;
15317    RENDERBUFFER_DEPTH_SIZE: number;
15318    RENDERBUFFER_GREEN_SIZE: number;
15319    RENDERBUFFER_HEIGHT: number;
15320    RENDERBUFFER_INTERNAL_FORMAT: number;
15321    RENDERBUFFER_RED_SIZE: number;
15322    RENDERBUFFER_STENCIL_SIZE: number;
15323    RENDERBUFFER_WIDTH: number;
15324    RENDERER: number;
15325    REPEAT: number;
15326    REPLACE: number;
15327    RGB: number;
15328    RGB565: number;
15329    RGB5_A1: number;
15330    RGBA: number;
15331    RGBA4: number;
15332    SAMPLER_2D: number;
15333    SAMPLER_CUBE: number;
15334    SAMPLES: number;
15335    SAMPLE_ALPHA_TO_COVERAGE: number;
15336    SAMPLE_BUFFERS: number;
15337    SAMPLE_COVERAGE: number;
15338    SAMPLE_COVERAGE_INVERT: number;
15339    SAMPLE_COVERAGE_VALUE: number;
15340    SCISSOR_BOX: number;
15341    SCISSOR_TEST: number;
15342    SHADER_TYPE: number;
15343    SHADING_LANGUAGE_VERSION: number;
15344    SHORT: number;
15345    SRC_ALPHA: number;
15346    SRC_ALPHA_SATURATE: number;
15347    SRC_COLOR: number;
15348    STATIC_DRAW: number;
15349    STENCIL_ATTACHMENT: number;
15350    STENCIL_BACK_FAIL: number;
15351    STENCIL_BACK_FUNC: number;
15352    STENCIL_BACK_PASS_DEPTH_FAIL: number;
15353    STENCIL_BACK_PASS_DEPTH_PASS: number;
15354    STENCIL_BACK_REF: number;
15355    STENCIL_BACK_VALUE_MASK: number;
15356    STENCIL_BACK_WRITEMASK: number;
15357    STENCIL_BITS: number;
15358    STENCIL_BUFFER_BIT: number;
15359    STENCIL_CLEAR_VALUE: number;
15360    STENCIL_FAIL: number;
15361    STENCIL_FUNC: number;
15362    STENCIL_INDEX: number;
15363    STENCIL_INDEX8: number;
15364    STENCIL_PASS_DEPTH_FAIL: number;
15365    STENCIL_PASS_DEPTH_PASS: number;
15366    STENCIL_REF: number;
15367    STENCIL_TEST: number;
15368    STENCIL_VALUE_MASK: number;
15369    STENCIL_WRITEMASK: number;
15370    STREAM_DRAW: number;
15371    SUBPIXEL_BITS: number;
15372    TEXTURE: number;
15373    TEXTURE0: number;
15374    TEXTURE1: number;
15375    TEXTURE10: number;
15376    TEXTURE11: number;
15377    TEXTURE12: number;
15378    TEXTURE13: number;
15379    TEXTURE14: number;
15380    TEXTURE15: number;
15381    TEXTURE16: number;
15382    TEXTURE17: number;
15383    TEXTURE18: number;
15384    TEXTURE19: number;
15385    TEXTURE2: number;
15386    TEXTURE20: number;
15387    TEXTURE21: number;
15388    TEXTURE22: number;
15389    TEXTURE23: number;
15390    TEXTURE24: number;
15391    TEXTURE25: number;
15392    TEXTURE26: number;
15393    TEXTURE27: number;
15394    TEXTURE28: number;
15395    TEXTURE29: number;
15396    TEXTURE3: number;
15397    TEXTURE30: number;
15398    TEXTURE31: number;
15399    TEXTURE4: number;
15400    TEXTURE5: number;
15401    TEXTURE6: number;
15402    TEXTURE7: number;
15403    TEXTURE8: number;
15404    TEXTURE9: number;
15405    TEXTURE_2D: number;
15406    TEXTURE_BINDING_2D: number;
15407    TEXTURE_BINDING_CUBE_MAP: number;
15408    TEXTURE_CUBE_MAP: number;
15409    TEXTURE_CUBE_MAP_NEGATIVE_X: number;
15410    TEXTURE_CUBE_MAP_NEGATIVE_Y: number;
15411    TEXTURE_CUBE_MAP_NEGATIVE_Z: number;
15412    TEXTURE_CUBE_MAP_POSITIVE_X: number;
15413    TEXTURE_CUBE_MAP_POSITIVE_Y: number;
15414    TEXTURE_CUBE_MAP_POSITIVE_Z: number;
15415    TEXTURE_MAG_FILTER: number;
15416    TEXTURE_MIN_FILTER: number;
15417    TEXTURE_WRAP_S: number;
15418    TEXTURE_WRAP_T: number;
15419    TRIANGLES: number;
15420    TRIANGLE_FAN: number;
15421    TRIANGLE_STRIP: number;
15422    UNPACK_ALIGNMENT: number;
15423    UNPACK_COLORSPACE_CONVERSION_WEBGL: number;
15424    UNPACK_FLIP_Y_WEBGL: number;
15425    UNPACK_PREMULTIPLY_ALPHA_WEBGL: number;
15426    UNSIGNED_BYTE: number;
15427    UNSIGNED_INT: number;
15428    UNSIGNED_SHORT: number;
15429    UNSIGNED_SHORT_4_4_4_4: number;
15430    UNSIGNED_SHORT_5_5_5_1: number;
15431    UNSIGNED_SHORT_5_6_5: number;
15432    VALIDATE_STATUS: number;
15433    VENDOR: number;
15434    VERSION: number;
15435    VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number;
15436    VERTEX_ATTRIB_ARRAY_ENABLED: number;
15437    VERTEX_ATTRIB_ARRAY_NORMALIZED: number;
15438    VERTEX_ATTRIB_ARRAY_POINTER: number;
15439    VERTEX_ATTRIB_ARRAY_SIZE: number;
15440    VERTEX_ATTRIB_ARRAY_STRIDE: number;
15441    VERTEX_ATTRIB_ARRAY_TYPE: number;
15442    VERTEX_SHADER: number;
15443    VIEWPORT: number;
15444    ZERO: number;
15445}
15446
15447declare var WebGLRenderingContext: {
15448    prototype: WebGLRenderingContext;
15449    new(): WebGLRenderingContext;
15450    ACTIVE_ATTRIBUTES: number;
15451    ACTIVE_TEXTURE: number;
15452    ACTIVE_UNIFORMS: number;
15453    ALIASED_LINE_WIDTH_RANGE: number;
15454    ALIASED_POINT_SIZE_RANGE: number;
15455    ALPHA: number;
15456    ALPHA_BITS: number;
15457    ALWAYS: number;
15458    ARRAY_BUFFER: number;
15459    ARRAY_BUFFER_BINDING: number;
15460    ATTACHED_SHADERS: number;
15461    BACK: number;
15462    BLEND: number;
15463    BLEND_COLOR: number;
15464    BLEND_DST_ALPHA: number;
15465    BLEND_DST_RGB: number;
15466    BLEND_EQUATION: number;
15467    BLEND_EQUATION_ALPHA: number;
15468    BLEND_EQUATION_RGB: number;
15469    BLEND_SRC_ALPHA: number;
15470    BLEND_SRC_RGB: number;
15471    BLUE_BITS: number;
15472    BOOL: number;
15473    BOOL_VEC2: number;
15474    BOOL_VEC3: number;
15475    BOOL_VEC4: number;
15476    BROWSER_DEFAULT_WEBGL: number;
15477    BUFFER_SIZE: number;
15478    BUFFER_USAGE: number;
15479    BYTE: number;
15480    CCW: number;
15481    CLAMP_TO_EDGE: number;
15482    COLOR_ATTACHMENT0: number;
15483    COLOR_BUFFER_BIT: number;
15484    COLOR_CLEAR_VALUE: number;
15485    COLOR_WRITEMASK: number;
15486    COMPILE_STATUS: number;
15487    COMPRESSED_TEXTURE_FORMATS: number;
15488    CONSTANT_ALPHA: number;
15489    CONSTANT_COLOR: number;
15490    CONTEXT_LOST_WEBGL: number;
15491    CULL_FACE: number;
15492    CULL_FACE_MODE: number;
15493    CURRENT_PROGRAM: number;
15494    CURRENT_VERTEX_ATTRIB: number;
15495    CW: number;
15496    DECR: number;
15497    DECR_WRAP: number;
15498    DELETE_STATUS: number;
15499    DEPTH_ATTACHMENT: number;
15500    DEPTH_BITS: number;
15501    DEPTH_BUFFER_BIT: number;
15502    DEPTH_CLEAR_VALUE: number;
15503    DEPTH_COMPONENT: number;
15504    DEPTH_COMPONENT16: number;
15505    DEPTH_FUNC: number;
15506    DEPTH_RANGE: number;
15507    DEPTH_STENCIL: number;
15508    DEPTH_STENCIL_ATTACHMENT: number;
15509    DEPTH_TEST: number;
15510    DEPTH_WRITEMASK: number;
15511    DITHER: number;
15512    DONT_CARE: number;
15513    DST_ALPHA: number;
15514    DST_COLOR: number;
15515    DYNAMIC_DRAW: number;
15516    ELEMENT_ARRAY_BUFFER: number;
15517    ELEMENT_ARRAY_BUFFER_BINDING: number;
15518    EQUAL: number;
15519    FASTEST: number;
15520    FLOAT: number;
15521    FLOAT_MAT2: number;
15522    FLOAT_MAT3: number;
15523    FLOAT_MAT4: number;
15524    FLOAT_VEC2: number;
15525    FLOAT_VEC3: number;
15526    FLOAT_VEC4: number;
15527    FRAGMENT_SHADER: number;
15528    FRAMEBUFFER: number;
15529    FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number;
15530    FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number;
15531    FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number;
15532    FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number;
15533    FRAMEBUFFER_BINDING: number;
15534    FRAMEBUFFER_COMPLETE: number;
15535    FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number;
15536    FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number;
15537    FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number;
15538    FRAMEBUFFER_UNSUPPORTED: number;
15539    FRONT: number;
15540    FRONT_AND_BACK: number;
15541    FRONT_FACE: number;
15542    FUNC_ADD: number;
15543    FUNC_REVERSE_SUBTRACT: number;
15544    FUNC_SUBTRACT: number;
15545    GENERATE_MIPMAP_HINT: number;
15546    GEQUAL: number;
15547    GREATER: number;
15548    GREEN_BITS: number;
15549    HIGH_FLOAT: number;
15550    HIGH_INT: number;
15551    IMPLEMENTATION_COLOR_READ_FORMAT: number;
15552    IMPLEMENTATION_COLOR_READ_TYPE: number;
15553    INCR: number;
15554    INCR_WRAP: number;
15555    INT: number;
15556    INT_VEC2: number;
15557    INT_VEC3: number;
15558    INT_VEC4: number;
15559    INVALID_ENUM: number;
15560    INVALID_FRAMEBUFFER_OPERATION: number;
15561    INVALID_OPERATION: number;
15562    INVALID_VALUE: number;
15563    INVERT: number;
15564    KEEP: number;
15565    LEQUAL: number;
15566    LESS: number;
15567    LINEAR: number;
15568    LINEAR_MIPMAP_LINEAR: number;
15569    LINEAR_MIPMAP_NEAREST: number;
15570    LINES: number;
15571    LINE_LOOP: number;
15572    LINE_STRIP: number;
15573    LINE_WIDTH: number;
15574    LINK_STATUS: number;
15575    LOW_FLOAT: number;
15576    LOW_INT: number;
15577    LUMINANCE: number;
15578    LUMINANCE_ALPHA: number;
15579    MAX_COMBINED_TEXTURE_IMAGE_UNITS: number;
15580    MAX_CUBE_MAP_TEXTURE_SIZE: number;
15581    MAX_FRAGMENT_UNIFORM_VECTORS: number;
15582    MAX_RENDERBUFFER_SIZE: number;
15583    MAX_TEXTURE_IMAGE_UNITS: number;
15584    MAX_TEXTURE_SIZE: number;
15585    MAX_VARYING_VECTORS: number;
15586    MAX_VERTEX_ATTRIBS: number;
15587    MAX_VERTEX_TEXTURE_IMAGE_UNITS: number;
15588    MAX_VERTEX_UNIFORM_VECTORS: number;
15589    MAX_VIEWPORT_DIMS: number;
15590    MEDIUM_FLOAT: number;
15591    MEDIUM_INT: number;
15592    MIRRORED_REPEAT: number;
15593    NEAREST: number;
15594    NEAREST_MIPMAP_LINEAR: number;
15595    NEAREST_MIPMAP_NEAREST: number;
15596    NEVER: number;
15597    NICEST: number;
15598    NONE: number;
15599    NOTEQUAL: number;
15600    NO_ERROR: number;
15601    ONE: number;
15602    ONE_MINUS_CONSTANT_ALPHA: number;
15603    ONE_MINUS_CONSTANT_COLOR: number;
15604    ONE_MINUS_DST_ALPHA: number;
15605    ONE_MINUS_DST_COLOR: number;
15606    ONE_MINUS_SRC_ALPHA: number;
15607    ONE_MINUS_SRC_COLOR: number;
15608    OUT_OF_MEMORY: number;
15609    PACK_ALIGNMENT: number;
15610    POINTS: number;
15611    POLYGON_OFFSET_FACTOR: number;
15612    POLYGON_OFFSET_FILL: number;
15613    POLYGON_OFFSET_UNITS: number;
15614    RED_BITS: number;
15615    RENDERBUFFER: number;
15616    RENDERBUFFER_ALPHA_SIZE: number;
15617    RENDERBUFFER_BINDING: number;
15618    RENDERBUFFER_BLUE_SIZE: number;
15619    RENDERBUFFER_DEPTH_SIZE: number;
15620    RENDERBUFFER_GREEN_SIZE: number;
15621    RENDERBUFFER_HEIGHT: number;
15622    RENDERBUFFER_INTERNAL_FORMAT: number;
15623    RENDERBUFFER_RED_SIZE: number;
15624    RENDERBUFFER_STENCIL_SIZE: number;
15625    RENDERBUFFER_WIDTH: number;
15626    RENDERER: number;
15627    REPEAT: number;
15628    REPLACE: number;
15629    RGB: number;
15630    RGB565: number;
15631    RGB5_A1: number;
15632    RGBA: number;
15633    RGBA4: number;
15634    SAMPLER_2D: number;
15635    SAMPLER_CUBE: number;
15636    SAMPLES: number;
15637    SAMPLE_ALPHA_TO_COVERAGE: number;
15638    SAMPLE_BUFFERS: number;
15639    SAMPLE_COVERAGE: number;
15640    SAMPLE_COVERAGE_INVERT: number;
15641    SAMPLE_COVERAGE_VALUE: number;
15642    SCISSOR_BOX: number;
15643    SCISSOR_TEST: number;
15644    SHADER_TYPE: number;
15645    SHADING_LANGUAGE_VERSION: number;
15646    SHORT: number;
15647    SRC_ALPHA: number;
15648    SRC_ALPHA_SATURATE: number;
15649    SRC_COLOR: number;
15650    STATIC_DRAW: number;
15651    STENCIL_ATTACHMENT: number;
15652    STENCIL_BACK_FAIL: number;
15653    STENCIL_BACK_FUNC: number;
15654    STENCIL_BACK_PASS_DEPTH_FAIL: number;
15655    STENCIL_BACK_PASS_DEPTH_PASS: number;
15656    STENCIL_BACK_REF: number;
15657    STENCIL_BACK_VALUE_MASK: number;
15658    STENCIL_BACK_WRITEMASK: number;
15659    STENCIL_BITS: number;
15660    STENCIL_BUFFER_BIT: number;
15661    STENCIL_CLEAR_VALUE: number;
15662    STENCIL_FAIL: number;
15663    STENCIL_FUNC: number;
15664    STENCIL_INDEX: number;
15665    STENCIL_INDEX8: number;
15666    STENCIL_PASS_DEPTH_FAIL: number;
15667    STENCIL_PASS_DEPTH_PASS: number;
15668    STENCIL_REF: number;
15669    STENCIL_TEST: number;
15670    STENCIL_VALUE_MASK: number;
15671    STENCIL_WRITEMASK: number;
15672    STREAM_DRAW: number;
15673    SUBPIXEL_BITS: number;
15674    TEXTURE: number;
15675    TEXTURE0: number;
15676    TEXTURE1: number;
15677    TEXTURE10: number;
15678    TEXTURE11: number;
15679    TEXTURE12: number;
15680    TEXTURE13: number;
15681    TEXTURE14: number;
15682    TEXTURE15: number;
15683    TEXTURE16: number;
15684    TEXTURE17: number;
15685    TEXTURE18: number;
15686    TEXTURE19: number;
15687    TEXTURE2: number;
15688    TEXTURE20: number;
15689    TEXTURE21: number;
15690    TEXTURE22: number;
15691    TEXTURE23: number;
15692    TEXTURE24: number;
15693    TEXTURE25: number;
15694    TEXTURE26: number;
15695    TEXTURE27: number;
15696    TEXTURE28: number;
15697    TEXTURE29: number;
15698    TEXTURE3: number;
15699    TEXTURE30: number;
15700    TEXTURE31: number;
15701    TEXTURE4: number;
15702    TEXTURE5: number;
15703    TEXTURE6: number;
15704    TEXTURE7: number;
15705    TEXTURE8: number;
15706    TEXTURE9: number;
15707    TEXTURE_2D: number;
15708    TEXTURE_BINDING_2D: number;
15709    TEXTURE_BINDING_CUBE_MAP: number;
15710    TEXTURE_CUBE_MAP: number;
15711    TEXTURE_CUBE_MAP_NEGATIVE_X: number;
15712    TEXTURE_CUBE_MAP_NEGATIVE_Y: number;
15713    TEXTURE_CUBE_MAP_NEGATIVE_Z: number;
15714    TEXTURE_CUBE_MAP_POSITIVE_X: number;
15715    TEXTURE_CUBE_MAP_POSITIVE_Y: number;
15716    TEXTURE_CUBE_MAP_POSITIVE_Z: number;
15717    TEXTURE_MAG_FILTER: number;
15718    TEXTURE_MIN_FILTER: number;
15719    TEXTURE_WRAP_S: number;
15720    TEXTURE_WRAP_T: number;
15721    TRIANGLES: number;
15722    TRIANGLE_FAN: number;
15723    TRIANGLE_STRIP: number;
15724    UNPACK_ALIGNMENT: number;
15725    UNPACK_COLORSPACE_CONVERSION_WEBGL: number;
15726    UNPACK_FLIP_Y_WEBGL: number;
15727    UNPACK_PREMULTIPLY_ALPHA_WEBGL: number;
15728    UNSIGNED_BYTE: number;
15729    UNSIGNED_INT: number;
15730    UNSIGNED_SHORT: number;
15731    UNSIGNED_SHORT_4_4_4_4: number;
15732    UNSIGNED_SHORT_5_5_5_1: number;
15733    UNSIGNED_SHORT_5_6_5: number;
15734    VALIDATE_STATUS: number;
15735    VENDOR: number;
15736    VERSION: number;
15737    VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number;
15738    VERTEX_ATTRIB_ARRAY_ENABLED: number;
15739    VERTEX_ATTRIB_ARRAY_NORMALIZED: number;
15740    VERTEX_ATTRIB_ARRAY_POINTER: number;
15741    VERTEX_ATTRIB_ARRAY_SIZE: number;
15742    VERTEX_ATTRIB_ARRAY_STRIDE: number;
15743    VERTEX_ATTRIB_ARRAY_TYPE: number;
15744    VERTEX_SHADER: number;
15745    VIEWPORT: number;
15746    ZERO: number;
15747}
15748
15749interface WebGLShader extends WebGLObject {
15750}
15751
15752declare var WebGLShader: {
15753    prototype: WebGLShader;
15754    new(): WebGLShader;
15755}
15756
15757interface WebGLShaderPrecisionFormat {
15758    precision: number;
15759    rangeMax: number;
15760    rangeMin: number;
15761}
15762
15763declare var WebGLShaderPrecisionFormat: {
15764    prototype: WebGLShaderPrecisionFormat;
15765    new(): WebGLShaderPrecisionFormat;
15766}
15767
15768interface WebGLTexture extends WebGLObject {
15769}
15770
15771declare var WebGLTexture: {
15772    prototype: WebGLTexture;
15773    new(): WebGLTexture;
15774}
15775
15776interface WebGLUniformLocation {
15777}
15778
15779declare var WebGLUniformLocation: {
15780    prototype: WebGLUniformLocation;
15781    new(): WebGLUniformLocation;
15782}
15783
15784interface WebKitCSSMatrix {
15785    a: number;
15786    b: number;
15787    c: number;
15788    d: number;
15789    e: number;
15790    f: number;
15791    m11: number;
15792    m12: number;
15793    m13: number;
15794    m14: number;
15795    m21: number;
15796    m22: number;
15797    m23: number;
15798    m24: number;
15799    m31: number;
15800    m32: number;
15801    m33: number;
15802    m34: number;
15803    m41: number;
15804    m42: number;
15805    m43: number;
15806    m44: number;
15807    inverse(): WebKitCSSMatrix;
15808    multiply(secondMatrix: WebKitCSSMatrix): WebKitCSSMatrix;
15809    rotate(angleX: number, angleY?: number, angleZ?: number): WebKitCSSMatrix;
15810    rotateAxisAngle(x: number, y: number, z: number, angle: number): WebKitCSSMatrix;
15811    scale(scaleX: number, scaleY?: number, scaleZ?: number): WebKitCSSMatrix;
15812    setMatrixValue(value: string): void;
15813    skewX(angle: number): WebKitCSSMatrix;
15814    skewY(angle: number): WebKitCSSMatrix;
15815    toString(): string;
15816    translate(x: number, y: number, z?: number): WebKitCSSMatrix;
15817}
15818
15819declare var WebKitCSSMatrix: {
15820    prototype: WebKitCSSMatrix;
15821    new(text?: string): WebKitCSSMatrix;
15822}
15823
15824interface WebKitPoint {
15825    x: number;
15826    y: number;
15827}
15828
15829declare var WebKitPoint: {
15830    prototype: WebKitPoint;
15831    new(x?: number, y?: number): WebKitPoint;
15832}
15833
15834interface WebSocket extends EventTarget {
15835    binaryType: string;
15836    bufferedAmount: number;
15837    extensions: string;
15838    onclose: (ev: CloseEvent) => any;
15839    onerror: (ev: Event) => any;
15840    onmessage: (ev: MessageEvent) => any;
15841    onopen: (ev: Event) => any;
15842    protocol: string;
15843    readyState: number;
15844    url: string;
15845    close(code?: number, reason?: string): void;
15846    send(data: any): void;
15847    CLOSED: number;
15848    CLOSING: number;
15849    CONNECTING: number;
15850    OPEN: number;
15851    addEventListener(type: "close", listener: (ev: CloseEvent) => any, useCapture?: boolean): void;
15852    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
15853    addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
15854    addEventListener(type: "open", listener: (ev: Event) => any, useCapture?: boolean): void;
15855    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
15856}
15857
15858declare var WebSocket: {
15859    prototype: WebSocket;
15860    new(url: string, protocols?: string | string[]): WebSocket;
15861    CLOSED: number;
15862    CLOSING: number;
15863    CONNECTING: number;
15864    OPEN: number;
15865}
15866
15867interface WheelEvent extends MouseEvent {
15868    deltaMode: number;
15869    deltaX: number;
15870    deltaY: number;
15871    deltaZ: number;
15872    getCurrentPoint(element: Element): void;
15873    initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void;
15874    DOM_DELTA_LINE: number;
15875    DOM_DELTA_PAGE: number;
15876    DOM_DELTA_PIXEL: number;
15877}
15878
15879declare var WheelEvent: {
15880    prototype: WheelEvent;
15881    new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent;
15882    DOM_DELTA_LINE: number;
15883    DOM_DELTA_PAGE: number;
15884    DOM_DELTA_PIXEL: number;
15885}
15886
15887interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 {
15888    animationStartTime: number;
15889    applicationCache: ApplicationCache;
15890    clientInformation: Navigator;
15891    closed: boolean;
15892    crypto: Crypto;
15893    defaultStatus: string;
15894    devicePixelRatio: number;
15895    doNotTrack: string;
15896    document: Document;
15897    event: Event;
15898    external: External;
15899    frameElement: Element;
15900    frames: Window;
15901    history: History;
15902    innerHeight: number;
15903    innerWidth: number;
15904    length: number;
15905    location: Location;
15906    locationbar: BarProp;
15907    menubar: BarProp;
15908    msAnimationStartTime: number;
15909    name: string;
15910    navigator: Navigator;
15911    offscreenBuffering: string | boolean;
15912    onabort: (ev: Event) => any;
15913    onafterprint: (ev: Event) => any;
15914    onbeforeprint: (ev: Event) => any;
15915    onbeforeunload: (ev: BeforeUnloadEvent) => any;
15916    onblur: (ev: FocusEvent) => any;
15917    oncanplay: (ev: Event) => any;
15918    oncanplaythrough: (ev: Event) => any;
15919    onchange: (ev: Event) => any;
15920    onclick: (ev: MouseEvent) => any;
15921    oncompassneedscalibration: (ev: Event) => any;
15922    oncontextmenu: (ev: PointerEvent) => any;
15923    ondblclick: (ev: MouseEvent) => any;
15924    ondevicemotion: (ev: DeviceMotionEvent) => any;
15925    ondeviceorientation: (ev: DeviceOrientationEvent) => any;
15926    ondrag: (ev: DragEvent) => any;
15927    ondragend: (ev: DragEvent) => any;
15928    ondragenter: (ev: DragEvent) => any;
15929    ondragleave: (ev: DragEvent) => any;
15930    ondragover: (ev: DragEvent) => any;
15931    ondragstart: (ev: DragEvent) => any;
15932    ondrop: (ev: DragEvent) => any;
15933    ondurationchange: (ev: Event) => any;
15934    onemptied: (ev: Event) => any;
15935    onended: (ev: Event) => any;
15936    onerror: ErrorEventHandler;
15937    onfocus: (ev: FocusEvent) => any;
15938    onhashchange: (ev: HashChangeEvent) => any;
15939    oninput: (ev: Event) => any;
15940    onkeydown: (ev: KeyboardEvent) => any;
15941    onkeypress: (ev: KeyboardEvent) => any;
15942    onkeyup: (ev: KeyboardEvent) => any;
15943    onload: (ev: Event) => any;
15944    onloadeddata: (ev: Event) => any;
15945    onloadedmetadata: (ev: Event) => any;
15946    onloadstart: (ev: Event) => any;
15947    onmessage: (ev: MessageEvent) => any;
15948    onmousedown: (ev: MouseEvent) => any;
15949    onmouseenter: (ev: MouseEvent) => any;
15950    onmouseleave: (ev: MouseEvent) => any;
15951    onmousemove: (ev: MouseEvent) => any;
15952    onmouseout: (ev: MouseEvent) => any;
15953    onmouseover: (ev: MouseEvent) => any;
15954    onmouseup: (ev: MouseEvent) => any;
15955    onmousewheel: (ev: MouseWheelEvent) => any;
15956    onmsgesturechange: (ev: MSGestureEvent) => any;
15957    onmsgesturedoubletap: (ev: MSGestureEvent) => any;
15958    onmsgestureend: (ev: MSGestureEvent) => any;
15959    onmsgesturehold: (ev: MSGestureEvent) => any;
15960    onmsgesturestart: (ev: MSGestureEvent) => any;
15961    onmsgesturetap: (ev: MSGestureEvent) => any;
15962    onmsinertiastart: (ev: MSGestureEvent) => any;
15963    onmspointercancel: (ev: MSPointerEvent) => any;
15964    onmspointerdown: (ev: MSPointerEvent) => any;
15965    onmspointerenter: (ev: MSPointerEvent) => any;
15966    onmspointerleave: (ev: MSPointerEvent) => any;
15967    onmspointermove: (ev: MSPointerEvent) => any;
15968    onmspointerout: (ev: MSPointerEvent) => any;
15969    onmspointerover: (ev: MSPointerEvent) => any;
15970    onmspointerup: (ev: MSPointerEvent) => any;
15971    onoffline: (ev: Event) => any;
15972    ononline: (ev: Event) => any;
15973    onorientationchange: (ev: Event) => any;
15974    onpagehide: (ev: PageTransitionEvent) => any;
15975    onpageshow: (ev: PageTransitionEvent) => any;
15976    onpause: (ev: Event) => any;
15977    onplay: (ev: Event) => any;
15978    onplaying: (ev: Event) => any;
15979    onpopstate: (ev: PopStateEvent) => any;
15980    onprogress: (ev: ProgressEvent) => any;
15981    onratechange: (ev: Event) => any;
15982    onreadystatechange: (ev: ProgressEvent) => any;
15983    onreset: (ev: Event) => any;
15984    onresize: (ev: UIEvent) => any;
15985    onscroll: (ev: UIEvent) => any;
15986    onseeked: (ev: Event) => any;
15987    onseeking: (ev: Event) => any;
15988    onselect: (ev: UIEvent) => any;
15989    onstalled: (ev: Event) => any;
15990    onstorage: (ev: StorageEvent) => any;
15991    onsubmit: (ev: Event) => any;
15992    onsuspend: (ev: Event) => any;
15993    ontimeupdate: (ev: Event) => any;
15994    ontouchcancel: any;
15995    ontouchend: any;
15996    ontouchmove: any;
15997    ontouchstart: any;
15998    onunload: (ev: Event) => any;
15999    onvolumechange: (ev: Event) => any;
16000    onwaiting: (ev: Event) => any;
16001    opener: Window;
16002    orientation: string | number;
16003    outerHeight: number;
16004    outerWidth: number;
16005    pageXOffset: number;
16006    pageYOffset: number;
16007    parent: Window;
16008    performance: Performance;
16009    personalbar: BarProp;
16010    screen: Screen;
16011    screenLeft: number;
16012    screenTop: number;
16013    screenX: number;
16014    screenY: number;
16015    scrollX: number;
16016    scrollY: number;
16017    scrollbars: BarProp;
16018    self: Window;
16019    status: string;
16020    statusbar: BarProp;
16021    styleMedia: StyleMedia;
16022    toolbar: BarProp;
16023    top: Window;
16024    window: Window;
16025    URL: URL;
16026    alert(message?: any): void;
16027    blur(): void;
16028    cancelAnimationFrame(handle: number): void;
16029    captureEvents(): void;
16030    close(): void;
16031    confirm(message?: string): boolean;
16032    focus(): void;
16033    getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration;
16034    getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList;
16035    getSelection(): Selection;
16036    matchMedia(mediaQuery: string): MediaQueryList;
16037    moveBy(x?: number, y?: number): void;
16038    moveTo(x?: number, y?: number): void;
16039    msCancelRequestAnimationFrame(handle: number): void;
16040    msMatchMedia(mediaQuery: string): MediaQueryList;
16041    msRequestAnimationFrame(callback: FrameRequestCallback): number;
16042    msWriteProfilerMark(profilerMarkName: string): void;
16043    open(url?: string, target?: string, features?: string, replace?: boolean): any;
16044    postMessage(message: any, targetOrigin: string, ports?: any): void;
16045    print(): void;
16046    prompt(message?: string, _default?: string): string;
16047    releaseEvents(): void;
16048    requestAnimationFrame(callback: FrameRequestCallback): number;
16049    resizeBy(x?: number, y?: number): void;
16050    resizeTo(x?: number, y?: number): void;
16051    scroll(x?: number, y?: number): void;
16052    scrollBy(x?: number, y?: number): void;
16053    scrollTo(x?: number, y?: number): void;
16054    webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint;
16055    webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint;
16056    addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16057    addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16058    addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16059    addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16060    addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16061    addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16062    addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16063    addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16064    addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16065    addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16066    addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16067    addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16068    addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16069    addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16070    addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16071    addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16072    addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void;
16073    addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void;
16074    addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void;
16075    addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
16076    addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
16077    addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
16078    addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
16079    addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16080    addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void;
16081    addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16082    addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16083    addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void;
16084    addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void;
16085    addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16086    addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16087    addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16088    addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16089    addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16090    addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16091    addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16092    addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
16093    addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
16094    addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
16095    addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
16096    addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void;
16097    addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
16098    addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
16099    addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
16100    addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
16101    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
16102    addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
16103    addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
16104    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
16105    addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
16106    addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16107    addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16108    addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16109    addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16110    addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16111    addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16112    addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16113    addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
16114    addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void;
16115    addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void;
16116    addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
16117    addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
16118    addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
16119    addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
16120    addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
16121    addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
16122    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16123    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16124    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16125    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16126    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16127    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16128    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16129    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16130    addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void;
16131    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16132    addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
16133    addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16134    addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
16135    addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16136    addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16137    addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
16138    addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
16139    addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16140    addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
16141    addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void;
16142    addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
16143    addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
16144    addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
16145    addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void;
16146    addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
16147    addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
16148    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
16149    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16150    [index: number]: Window;
16151}
16152
16153declare var Window: {
16154    prototype: Window;
16155    new(): Window;
16156}
16157
16158interface Worker extends EventTarget, AbstractWorker {
16159    onmessage: (ev: MessageEvent) => any;
16160    postMessage(message: any, ports?: any): void;
16161    terminate(): void;
16162    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
16163    addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
16164    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16165}
16166
16167declare var Worker: {
16168    prototype: Worker;
16169    new(stringUrl: string): Worker;
16170}
16171
16172interface XMLDocument extends Document {
16173}
16174
16175declare var XMLDocument: {
16176    prototype: XMLDocument;
16177    new(): XMLDocument;
16178}
16179
16180interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget {
16181    msCaching: string;
16182    onreadystatechange: (ev: ProgressEvent) => any;
16183    readyState: number;
16184    response: any;
16185    responseBody: any;
16186    responseText: string;
16187    responseType: string;
16188    responseXML: any;
16189    status: number;
16190    statusText: string;
16191    timeout: number;
16192    upload: XMLHttpRequestUpload;
16193    withCredentials: boolean;
16194    abort(): void;
16195    getAllResponseHeaders(): string;
16196    getResponseHeader(header: string): string;
16197    msCachingEnabled(): boolean;
16198    open(method: string, url: string, async?: boolean, user?: string, password?: string): void;
16199    overrideMimeType(mime: string): void;
16200    send(data?: Document): void;
16201    send(data?: string): void;
16202    send(data?: any): void;
16203    setRequestHeader(header: string, value: string): void;
16204    DONE: number;
16205    HEADERS_RECEIVED: number;
16206    LOADING: number;
16207    OPENED: number;
16208    UNSENT: number;
16209    addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
16210    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
16211    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
16212    addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16213    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
16214    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16215    addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16216    addEventListener(type: "timeout", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16217    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16218}
16219
16220declare var XMLHttpRequest: {
16221    prototype: XMLHttpRequest;
16222    new(): XMLHttpRequest;
16223    DONE: number;
16224    HEADERS_RECEIVED: number;
16225    LOADING: number;
16226    OPENED: number;
16227    UNSENT: number;
16228    create(): XMLHttpRequest;
16229}
16230
16231interface XMLHttpRequestUpload extends EventTarget, XMLHttpRequestEventTarget {
16232    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16233}
16234
16235declare var XMLHttpRequestUpload: {
16236    prototype: XMLHttpRequestUpload;
16237    new(): XMLHttpRequestUpload;
16238}
16239
16240interface XMLSerializer {
16241    serializeToString(target: Node): string;
16242}
16243
16244declare var XMLSerializer: {
16245    prototype: XMLSerializer;
16246    new(): XMLSerializer;
16247}
16248
16249interface XPathEvaluator {
16250    createExpression(expression: string, resolver: XPathNSResolver): XPathExpression;
16251    createNSResolver(nodeResolver?: Node): XPathNSResolver;
16252    evaluate(expression: string, contextNode: Node, resolver: XPathNSResolver, type: number, result: XPathResult): XPathResult;
16253}
16254
16255declare var XPathEvaluator: {
16256    prototype: XPathEvaluator;
16257    new(): XPathEvaluator;
16258}
16259
16260interface XPathExpression {
16261    evaluate(contextNode: Node, type: number, result: XPathResult): XPathExpression;
16262}
16263
16264declare var XPathExpression: {
16265    prototype: XPathExpression;
16266    new(): XPathExpression;
16267}
16268
16269interface XPathNSResolver {
16270    lookupNamespaceURI(prefix: string): string;
16271}
16272
16273declare var XPathNSResolver: {
16274    prototype: XPathNSResolver;
16275    new(): XPathNSResolver;
16276}
16277
16278interface XPathResult {
16279    booleanValue: boolean;
16280    invalidIteratorState: boolean;
16281    numberValue: number;
16282    resultType: number;
16283    singleNodeValue: Node;
16284    snapshotLength: number;
16285    stringValue: string;
16286    iterateNext(): Node;
16287    snapshotItem(index: number): Node;
16288    ANY_TYPE: number;
16289    ANY_UNORDERED_NODE_TYPE: number;
16290    BOOLEAN_TYPE: number;
16291    FIRST_ORDERED_NODE_TYPE: number;
16292    NUMBER_TYPE: number;
16293    ORDERED_NODE_ITERATOR_TYPE: number;
16294    ORDERED_NODE_SNAPSHOT_TYPE: number;
16295    STRING_TYPE: number;
16296    UNORDERED_NODE_ITERATOR_TYPE: number;
16297    UNORDERED_NODE_SNAPSHOT_TYPE: number;
16298}
16299
16300declare var XPathResult: {
16301    prototype: XPathResult;
16302    new(): XPathResult;
16303    ANY_TYPE: number;
16304    ANY_UNORDERED_NODE_TYPE: number;
16305    BOOLEAN_TYPE: number;
16306    FIRST_ORDERED_NODE_TYPE: number;
16307    NUMBER_TYPE: number;
16308    ORDERED_NODE_ITERATOR_TYPE: number;
16309    ORDERED_NODE_SNAPSHOT_TYPE: number;
16310    STRING_TYPE: number;
16311    UNORDERED_NODE_ITERATOR_TYPE: number;
16312    UNORDERED_NODE_SNAPSHOT_TYPE: number;
16313}
16314
16315interface XSLTProcessor {
16316    clearParameters(): void;
16317    getParameter(namespaceURI: string, localName: string): any;
16318    importStylesheet(style: Node): void;
16319    removeParameter(namespaceURI: string, localName: string): void;
16320    reset(): void;
16321    setParameter(namespaceURI: string, localName: string, value: any): void;
16322    transformToDocument(source: Node): Document;
16323    transformToFragment(source: Node, document: Document): DocumentFragment;
16324}
16325
16326declare var XSLTProcessor: {
16327    prototype: XSLTProcessor;
16328    new(): XSLTProcessor;
16329}
16330
16331interface AbstractWorker {
16332    onerror: (ev: Event) => any;
16333    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
16334    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16335}
16336
16337interface ChildNode {
16338    remove(): void;
16339}
16340
16341interface DOML2DeprecatedColorProperty {
16342    color: string;
16343}
16344
16345interface DOML2DeprecatedSizeProperty {
16346    size: number;
16347}
16348
16349interface DocumentEvent {
16350    createEvent(eventInterface:"AnimationEvent"): AnimationEvent;
16351    createEvent(eventInterface:"AriaRequestEvent"): AriaRequestEvent;
16352    createEvent(eventInterface:"AudioProcessingEvent"): AudioProcessingEvent;
16353    createEvent(eventInterface:"BeforeUnloadEvent"): BeforeUnloadEvent;
16354    createEvent(eventInterface:"ClipboardEvent"): ClipboardEvent;
16355    createEvent(eventInterface:"CloseEvent"): CloseEvent;
16356    createEvent(eventInterface:"CommandEvent"): CommandEvent;
16357    createEvent(eventInterface:"CompositionEvent"): CompositionEvent;
16358    createEvent(eventInterface:"CustomEvent"): CustomEvent;
16359    createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent;
16360    createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent;
16361    createEvent(eventInterface:"DragEvent"): DragEvent;
16362    createEvent(eventInterface:"ErrorEvent"): ErrorEvent;
16363    createEvent(eventInterface:"Event"): Event;
16364    createEvent(eventInterface:"Events"): Event;
16365    createEvent(eventInterface:"FocusEvent"): FocusEvent;
16366    createEvent(eventInterface:"GamepadEvent"): GamepadEvent;
16367    createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent;
16368    createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent;
16369    createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent;
16370    createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent;
16371    createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent;
16372    createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent;
16373    createEvent(eventInterface:"MSMediaKeyMessageEvent"): MSMediaKeyMessageEvent;
16374    createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent;
16375    createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent;
16376    createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent;
16377    createEvent(eventInterface:"MessageEvent"): MessageEvent;
16378    createEvent(eventInterface:"MouseEvent"): MouseEvent;
16379    createEvent(eventInterface:"MouseEvents"): MouseEvent;
16380    createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent;
16381    createEvent(eventInterface:"MutationEvent"): MutationEvent;
16382    createEvent(eventInterface:"MutationEvents"): MutationEvent;
16383    createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent;
16384    createEvent(eventInterface:"NavigationEvent"): NavigationEvent;
16385    createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer;
16386    createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent;
16387    createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent;
16388    createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent;
16389    createEvent(eventInterface:"PointerEvent"): PointerEvent;
16390    createEvent(eventInterface:"PopStateEvent"): PopStateEvent;
16391    createEvent(eventInterface:"ProgressEvent"): ProgressEvent;
16392    createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent;
16393    createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent;
16394    createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent;
16395    createEvent(eventInterface:"StorageEvent"): StorageEvent;
16396    createEvent(eventInterface:"TextEvent"): TextEvent;
16397    createEvent(eventInterface:"TouchEvent"): TouchEvent;
16398    createEvent(eventInterface:"TrackEvent"): TrackEvent;
16399    createEvent(eventInterface:"TransitionEvent"): TransitionEvent;
16400    createEvent(eventInterface:"UIEvent"): UIEvent;
16401    createEvent(eventInterface:"UIEvents"): UIEvent;
16402    createEvent(eventInterface:"UnviewableContentIdentifiedEvent"): UnviewableContentIdentifiedEvent;
16403    createEvent(eventInterface:"WebGLContextEvent"): WebGLContextEvent;
16404    createEvent(eventInterface:"WheelEvent"): WheelEvent;
16405    createEvent(eventInterface: string): Event;
16406}
16407
16408interface ElementTraversal {
16409    childElementCount: number;
16410    firstElementChild: Element;
16411    lastElementChild: Element;
16412    nextElementSibling: Element;
16413    previousElementSibling: Element;
16414}
16415
16416interface GetSVGDocument {
16417    getSVGDocument(): Document;
16418}
16419
16420interface GlobalEventHandlers {
16421    onpointercancel: (ev: PointerEvent) => any;
16422    onpointerdown: (ev: PointerEvent) => any;
16423    onpointerenter: (ev: PointerEvent) => any;
16424    onpointerleave: (ev: PointerEvent) => any;
16425    onpointermove: (ev: PointerEvent) => any;
16426    onpointerout: (ev: PointerEvent) => any;
16427    onpointerover: (ev: PointerEvent) => any;
16428    onpointerup: (ev: PointerEvent) => any;
16429    onwheel: (ev: WheelEvent) => any;
16430    addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16431    addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16432    addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16433    addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16434    addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16435    addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16436    addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16437    addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16438    addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
16439    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16440}
16441
16442interface HTMLTableAlignment {
16443    /**
16444      * Sets or retrieves a value that you can use to implement your own ch functionality for the object.
16445      */
16446    ch: string;
16447    /**
16448      * Sets or retrieves a value that you can use to implement your own chOff functionality for the object.
16449      */
16450    chOff: string;
16451    /**
16452      * Sets or retrieves how text and other content are vertically aligned within the object that contains them.
16453      */
16454    vAlign: string;
16455}
16456
16457interface IDBEnvironment {
16458    indexedDB: IDBFactory;
16459    msIndexedDB: IDBFactory;
16460}
16461
16462interface LinkStyle {
16463    sheet: StyleSheet;
16464}
16465
16466interface MSBaseReader {
16467    onabort: (ev: Event) => any;
16468    onerror: (ev: Event) => any;
16469    onload: (ev: Event) => any;
16470    onloadend: (ev: ProgressEvent) => any;
16471    onloadstart: (ev: Event) => any;
16472    onprogress: (ev: ProgressEvent) => any;
16473    readyState: number;
16474    result: any;
16475    abort(): void;
16476    DONE: number;
16477    EMPTY: number;
16478    LOADING: number;
16479    addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
16480    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
16481    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
16482    addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16483    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
16484    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16485    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16486}
16487
16488interface MSFileSaver {
16489    msSaveBlob(blob: any, defaultName?: string): boolean;
16490    msSaveOrOpenBlob(blob: any, defaultName?: string): boolean;
16491}
16492
16493interface MSNavigatorDoNotTrack {
16494    confirmSiteSpecificTrackingException(args: ConfirmSiteSpecificExceptionsInformation): boolean;
16495    confirmWebWideTrackingException(args: ExceptionInformation): boolean;
16496    removeSiteSpecificTrackingException(args: ExceptionInformation): void;
16497    removeWebWideTrackingException(args: ExceptionInformation): void;
16498    storeSiteSpecificTrackingException(args: StoreSiteSpecificExceptionsInformation): void;
16499    storeWebWideTrackingException(args: StoreExceptionsInformation): void;
16500}
16501
16502interface NavigatorContentUtils {
16503}
16504
16505interface NavigatorGeolocation {
16506    geolocation: Geolocation;
16507}
16508
16509interface NavigatorID {
16510    appName: string;
16511    appVersion: string;
16512    platform: string;
16513    product: string;
16514    productSub: string;
16515    userAgent: string;
16516    vendor: string;
16517    vendorSub: string;
16518}
16519
16520interface NavigatorOnLine {
16521    onLine: boolean;
16522}
16523
16524interface NavigatorStorageUtils {
16525}
16526
16527interface NodeSelector {
16528    querySelector(selectors: string): Element;
16529    querySelectorAll(selectors: string): NodeListOf<Element>;
16530}
16531
16532interface RandomSource {
16533    getRandomValues(array: ArrayBufferView): ArrayBufferView;
16534}
16535
16536interface SVGAnimatedPathData {
16537    pathSegList: SVGPathSegList;
16538}
16539
16540interface SVGAnimatedPoints {
16541    animatedPoints: SVGPointList;
16542    points: SVGPointList;
16543}
16544
16545interface SVGExternalResourcesRequired {
16546    externalResourcesRequired: SVGAnimatedBoolean;
16547}
16548
16549interface SVGFilterPrimitiveStandardAttributes extends SVGStylable {
16550    height: SVGAnimatedLength;
16551    result: SVGAnimatedString;
16552    width: SVGAnimatedLength;
16553    x: SVGAnimatedLength;
16554    y: SVGAnimatedLength;
16555}
16556
16557interface SVGFitToViewBox {
16558    preserveAspectRatio: SVGAnimatedPreserveAspectRatio;
16559    viewBox: SVGAnimatedRect;
16560}
16561
16562interface SVGLangSpace {
16563    xmllang: string;
16564    xmlspace: string;
16565}
16566
16567interface SVGLocatable {
16568    farthestViewportElement: SVGElement;
16569    nearestViewportElement: SVGElement;
16570    getBBox(): SVGRect;
16571    getCTM(): SVGMatrix;
16572    getScreenCTM(): SVGMatrix;
16573    getTransformToElement(element: SVGElement): SVGMatrix;
16574}
16575
16576interface SVGStylable {
16577    className: any;
16578    style: CSSStyleDeclaration;
16579}
16580
16581interface SVGTests {
16582    requiredExtensions: SVGStringList;
16583    requiredFeatures: SVGStringList;
16584    systemLanguage: SVGStringList;
16585    hasExtension(extension: string): boolean;
16586}
16587
16588interface SVGTransformable extends SVGLocatable {
16589    transform: SVGAnimatedTransformList;
16590}
16591
16592interface SVGURIReference {
16593    href: SVGAnimatedString;
16594}
16595
16596interface WindowBase64 {
16597    atob(encodedString: string): string;
16598    btoa(rawString: string): string;
16599}
16600
16601interface WindowConsole {
16602    console: Console;
16603}
16604
16605interface WindowLocalStorage {
16606    localStorage: Storage;
16607}
16608
16609interface WindowSessionStorage {
16610    sessionStorage: Storage;
16611}
16612
16613interface WindowTimers extends Object, WindowTimersExtension {
16614    clearInterval(handle: number): void;
16615    clearTimeout(handle: number): void;
16616    setInterval(handler: any, timeout?: any, ...args: any[]): number;
16617    setTimeout(handler: any, timeout?: any, ...args: any[]): number;
16618}
16619
16620interface WindowTimersExtension {
16621    clearImmediate(handle: number): void;
16622    msClearImmediate(handle: number): void;
16623    msSetImmediate(expression: any, ...args: any[]): number;
16624    setImmediate(expression: any, ...args: any[]): number;
16625}
16626
16627interface XMLHttpRequestEventTarget {
16628    onabort: (ev: Event) => any;
16629    onerror: (ev: Event) => any;
16630    onload: (ev: Event) => any;
16631    onloadend: (ev: ProgressEvent) => any;
16632    onloadstart: (ev: Event) => any;
16633    onprogress: (ev: ProgressEvent) => any;
16634    ontimeout: (ev: ProgressEvent) => any;
16635    addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
16636    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
16637    addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
16638    addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16639    addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
16640    addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16641    addEventListener(type: "timeout", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16642    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16643}
16644
16645interface NodeListOf<TNode extends Node> extends NodeList {
16646    length: number;
16647    item(index: number): TNode;
16648    [index: number]: TNode;
16649}
16650
16651interface BlobPropertyBag {
16652    type?: string;
16653    endings?: string;
16654}
16655
16656interface FilePropertyBag {
16657    type?: string;
16658    lastModified?: number;
16659}
16660
16661interface EventListenerObject {
16662    handleEvent(evt: Event): void;
16663}
16664
16665interface MessageEventInit extends EventInit {
16666    data?: any;
16667    origin?: string;
16668    lastEventId?: string;
16669    channel?: string;
16670    source?: any;
16671    ports?: MessagePort[];
16672}
16673
16674interface ProgressEventInit extends EventInit {
16675    lengthComputable?: boolean;
16676    loaded?: number;
16677    total?: number;
16678}
16679
16680declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject;
16681
16682interface ErrorEventHandler {
16683    (message: string, filename?: string, lineno?: number, colno?: number, error?:Error): void;
16684}
16685interface PositionCallback {
16686    (position: Position): void;
16687}
16688interface PositionErrorCallback {
16689    (error: PositionError): void;
16690}
16691interface MediaQueryListListener {
16692    (mql: MediaQueryList): void;
16693}
16694interface MSLaunchUriCallback {
16695    (): void;
16696}
16697interface FrameRequestCallback {
16698    (time: number): void;
16699}
16700interface MSUnsafeFunctionCallback {
16701    (): any;
16702}
16703interface MSExecAtPriorityFunctionCallback {
16704    (...args: any[]): any;
16705}
16706interface MutationCallback {
16707    (mutations: MutationRecord[], observer: MutationObserver): void;
16708}
16709interface DecodeSuccessCallback {
16710    (decodedData: AudioBuffer): void;
16711}
16712interface DecodeErrorCallback {
16713    (): void;
16714}
16715interface FunctionStringCallback {
16716    (data: string): void;
16717}
16718declare var Audio: {new(src?: string): HTMLAudioElement; };
16719declare var Image: {new(width?: number, height?: number): HTMLImageElement; };
16720declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; };
16721declare var animationStartTime: number;
16722declare var applicationCache: ApplicationCache;
16723declare var clientInformation: Navigator;
16724declare var closed: boolean;
16725declare var crypto: Crypto;
16726declare var defaultStatus: string;
16727declare var devicePixelRatio: number;
16728declare var doNotTrack: string;
16729declare var document: Document;
16730declare var event: Event;
16731declare var external: External;
16732declare var frameElement: Element;
16733declare var frames: Window;
16734declare var history: History;
16735declare var innerHeight: number;
16736declare var innerWidth: number;
16737declare var length: number;
16738declare var location: Location;
16739declare var locationbar: BarProp;
16740declare var menubar: BarProp;
16741declare var msAnimationStartTime: number;
16742declare var name: string;
16743declare var navigator: Navigator;
16744declare var offscreenBuffering: string | boolean;
16745declare var onabort: (ev: Event) => any;
16746declare var onafterprint: (ev: Event) => any;
16747declare var onbeforeprint: (ev: Event) => any;
16748declare var onbeforeunload: (ev: BeforeUnloadEvent) => any;
16749declare var onblur: (ev: FocusEvent) => any;
16750declare var oncanplay: (ev: Event) => any;
16751declare var oncanplaythrough: (ev: Event) => any;
16752declare var onchange: (ev: Event) => any;
16753declare var onclick: (ev: MouseEvent) => any;
16754declare var oncompassneedscalibration: (ev: Event) => any;
16755declare var oncontextmenu: (ev: PointerEvent) => any;
16756declare var ondblclick: (ev: MouseEvent) => any;
16757declare var ondevicemotion: (ev: DeviceMotionEvent) => any;
16758declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any;
16759declare var ondrag: (ev: DragEvent) => any;
16760declare var ondragend: (ev: DragEvent) => any;
16761declare var ondragenter: (ev: DragEvent) => any;
16762declare var ondragleave: (ev: DragEvent) => any;
16763declare var ondragover: (ev: DragEvent) => any;
16764declare var ondragstart: (ev: DragEvent) => any;
16765declare var ondrop: (ev: DragEvent) => any;
16766declare var ondurationchange: (ev: Event) => any;
16767declare var onemptied: (ev: Event) => any;
16768declare var onended: (ev: Event) => any;
16769declare var onerror: ErrorEventHandler;
16770declare var onfocus: (ev: FocusEvent) => any;
16771declare var onhashchange: (ev: HashChangeEvent) => any;
16772declare var oninput: (ev: Event) => any;
16773declare var onkeydown: (ev: KeyboardEvent) => any;
16774declare var onkeypress: (ev: KeyboardEvent) => any;
16775declare var onkeyup: (ev: KeyboardEvent) => any;
16776declare var onload: (ev: Event) => any;
16777declare var onloadeddata: (ev: Event) => any;
16778declare var onloadedmetadata: (ev: Event) => any;
16779declare var onloadstart: (ev: Event) => any;
16780declare var onmessage: (ev: MessageEvent) => any;
16781declare var onmousedown: (ev: MouseEvent) => any;
16782declare var onmouseenter: (ev: MouseEvent) => any;
16783declare var onmouseleave: (ev: MouseEvent) => any;
16784declare var onmousemove: (ev: MouseEvent) => any;
16785declare var onmouseout: (ev: MouseEvent) => any;
16786declare var onmouseover: (ev: MouseEvent) => any;
16787declare var onmouseup: (ev: MouseEvent) => any;
16788declare var onmousewheel: (ev: MouseWheelEvent) => any;
16789declare var onmsgesturechange: (ev: MSGestureEvent) => any;
16790declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any;
16791declare var onmsgestureend: (ev: MSGestureEvent) => any;
16792declare var onmsgesturehold: (ev: MSGestureEvent) => any;
16793declare var onmsgesturestart: (ev: MSGestureEvent) => any;
16794declare var onmsgesturetap: (ev: MSGestureEvent) => any;
16795declare var onmsinertiastart: (ev: MSGestureEvent) => any;
16796declare var onmspointercancel: (ev: MSPointerEvent) => any;
16797declare var onmspointerdown: (ev: MSPointerEvent) => any;
16798declare var onmspointerenter: (ev: MSPointerEvent) => any;
16799declare var onmspointerleave: (ev: MSPointerEvent) => any;
16800declare var onmspointermove: (ev: MSPointerEvent) => any;
16801declare var onmspointerout: (ev: MSPointerEvent) => any;
16802declare var onmspointerover: (ev: MSPointerEvent) => any;
16803declare var onmspointerup: (ev: MSPointerEvent) => any;
16804declare var onoffline: (ev: Event) => any;
16805declare var ononline: (ev: Event) => any;
16806declare var onorientationchange: (ev: Event) => any;
16807declare var onpagehide: (ev: PageTransitionEvent) => any;
16808declare var onpageshow: (ev: PageTransitionEvent) => any;
16809declare var onpause: (ev: Event) => any;
16810declare var onplay: (ev: Event) => any;
16811declare var onplaying: (ev: Event) => any;
16812declare var onpopstate: (ev: PopStateEvent) => any;
16813declare var onprogress: (ev: ProgressEvent) => any;
16814declare var onratechange: (ev: Event) => any;
16815declare var onreadystatechange: (ev: ProgressEvent) => any;
16816declare var onreset: (ev: Event) => any;
16817declare var onresize: (ev: UIEvent) => any;
16818declare var onscroll: (ev: UIEvent) => any;
16819declare var onseeked: (ev: Event) => any;
16820declare var onseeking: (ev: Event) => any;
16821declare var onselect: (ev: UIEvent) => any;
16822declare var onstalled: (ev: Event) => any;
16823declare var onstorage: (ev: StorageEvent) => any;
16824declare var onsubmit: (ev: Event) => any;
16825declare var onsuspend: (ev: Event) => any;
16826declare var ontimeupdate: (ev: Event) => any;
16827declare var ontouchcancel: any;
16828declare var ontouchend: any;
16829declare var ontouchmove: any;
16830declare var ontouchstart: any;
16831declare var onunload: (ev: Event) => any;
16832declare var onvolumechange: (ev: Event) => any;
16833declare var onwaiting: (ev: Event) => any;
16834declare var opener: Window;
16835declare var orientation: string | number;
16836declare var outerHeight: number;
16837declare var outerWidth: number;
16838declare var pageXOffset: number;
16839declare var pageYOffset: number;
16840declare var parent: Window;
16841declare var performance: Performance;
16842declare var personalbar: BarProp;
16843declare var screen: Screen;
16844declare var screenLeft: number;
16845declare var screenTop: number;
16846declare var screenX: number;
16847declare var screenY: number;
16848declare var scrollX: number;
16849declare var scrollY: number;
16850declare var scrollbars: BarProp;
16851declare var self: Window;
16852declare var status: string;
16853declare var statusbar: BarProp;
16854declare var styleMedia: StyleMedia;
16855declare var toolbar: BarProp;
16856declare var top: Window;
16857declare var window: Window;
16858declare var URL: URL;
16859declare function alert(message?: any): void;
16860declare function blur(): void;
16861declare function cancelAnimationFrame(handle: number): void;
16862declare function captureEvents(): void;
16863declare function close(): void;
16864declare function confirm(message?: string): boolean;
16865declare function focus(): void;
16866declare function getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration;
16867declare function getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList;
16868declare function getSelection(): Selection;
16869declare function matchMedia(mediaQuery: string): MediaQueryList;
16870declare function moveBy(x?: number, y?: number): void;
16871declare function moveTo(x?: number, y?: number): void;
16872declare function msCancelRequestAnimationFrame(handle: number): void;
16873declare function msMatchMedia(mediaQuery: string): MediaQueryList;
16874declare function msRequestAnimationFrame(callback: FrameRequestCallback): number;
16875declare function msWriteProfilerMark(profilerMarkName: string): void;
16876declare function open(url?: string, target?: string, features?: string, replace?: boolean): any;
16877declare function postMessage(message: any, targetOrigin: string, ports?: any): void;
16878declare function print(): void;
16879declare function prompt(message?: string, _default?: string): string;
16880declare function releaseEvents(): void;
16881declare function requestAnimationFrame(callback: FrameRequestCallback): number;
16882declare function resizeBy(x?: number, y?: number): void;
16883declare function resizeTo(x?: number, y?: number): void;
16884declare function scroll(x?: number, y?: number): void;
16885declare function scrollBy(x?: number, y?: number): void;
16886declare function scrollTo(x?: number, y?: number): void;
16887declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint;
16888declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint;
16889declare function toString(): string;
16890declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16891declare function dispatchEvent(evt: Event): boolean;
16892declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
16893declare function clearInterval(handle: number): void;
16894declare function clearTimeout(handle: number): void;
16895declare function setInterval(handler: any, timeout?: any, ...args: any[]): number;
16896declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number;
16897declare function clearImmediate(handle: number): void;
16898declare function msClearImmediate(handle: number): void;
16899declare function msSetImmediate(expression: any, ...args: any[]): number;
16900declare function setImmediate(expression: any, ...args: any[]): number;
16901declare var sessionStorage: Storage;
16902declare var localStorage: Storage;
16903declare var console: Console;
16904declare var onpointercancel: (ev: PointerEvent) => any;
16905declare var onpointerdown: (ev: PointerEvent) => any;
16906declare var onpointerenter: (ev: PointerEvent) => any;
16907declare var onpointerleave: (ev: PointerEvent) => any;
16908declare var onpointermove: (ev: PointerEvent) => any;
16909declare var onpointerout: (ev: PointerEvent) => any;
16910declare var onpointerover: (ev: PointerEvent) => any;
16911declare var onpointerup: (ev: PointerEvent) => any;
16912declare var onwheel: (ev: WheelEvent) => any;
16913declare var indexedDB: IDBFactory;
16914declare var msIndexedDB: IDBFactory;
16915declare function atob(encodedString: string): string;
16916declare function btoa(rawString: string): string;
16917declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16918declare function addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16919declare function addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16920declare function addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16921declare function addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16922declare function addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16923declare function addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void;
16924declare function addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16925declare function addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16926declare function addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16927declare function addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16928declare function addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16929declare function addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16930declare function addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16931declare function addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void;
16932declare function addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16933declare function addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void;
16934declare function addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void;
16935declare function addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void;
16936declare function addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
16937declare function addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void;
16938declare function addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void;
16939declare function addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void;
16940declare function addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16941declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void;
16942declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16943declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16944declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void;
16945declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void;
16946declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16947declare function addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16948declare function addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16949declare function addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16950declare function addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16951declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16952declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void;
16953declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
16954declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void;
16955declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void;
16956declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void;
16957declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void;
16958declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void;
16959declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
16960declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
16961declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;
16962declare function addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
16963declare function addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void;
16964declare function addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void;
16965declare function addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
16966declare function addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
16967declare function addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16968declare function addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16969declare function addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16970declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16971declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16972declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16973declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void;
16974declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void;
16975declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void;
16976declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void;
16977declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void;
16978declare function addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
16979declare function addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void;
16980declare function addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void;
16981declare function addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void;
16982declare function addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void;
16983declare function addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16984declare function addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16985declare function addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16986declare function addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16987declare function addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16988declare function addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16989declare function addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16990declare function addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void;
16991declare function addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void;
16992declare function addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16993declare function addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void;
16994declare function addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
16995declare function addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void;
16996declare function addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16997declare function addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
16998declare function addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void;
16999declare function addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void;
17000declare function addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void;
17001declare function addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void;
17002declare function addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void;
17003declare function addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void;
17004declare function addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void;
17005declare function addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void;
17006declare function addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void;
17007declare function addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void;
17008declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void;
17009declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void;
17010declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
17011/////////////////////////////
17012/// WorkerGlobalScope APIs
17013/////////////////////////////
17014// These are only available in a Web Worker
17015declare function importScripts(...urls: string[]): void;
17016
17017
17018/////////////////////////////
17019/// Windows Script Host APIS
17020/////////////////////////////
17021
17022
17023interface ActiveXObject {
17024    new (s: string): any;
17025}
17026declare var ActiveXObject: ActiveXObject;
17027
17028interface ITextWriter {
17029    Write(s: string): void;
17030    WriteLine(s: string): void;
17031    Close(): void;
17032}
17033
17034interface TextStreamBase {
17035    /**
17036     * The column number of the current character position in an input stream.
17037     */
17038    Column: number;
17039
17040    /**
17041     * The current line number in an input stream.
17042     */
17043    Line: number;
17044
17045    /**
17046     * Closes a text stream.
17047     * It is not necessary to close standard streams; they close automatically when the process ends. If
17048     * you close a standard stream, be aware that any other pointers to that standard stream become invalid.
17049     */
17050    Close(): void;
17051}
17052
17053interface TextStreamWriter extends TextStreamBase {
17054    /**
17055     * Sends a string to an output stream.
17056     */
17057    Write(s: string): void;
17058
17059    /**
17060     * Sends a specified number of blank lines (newline characters) to an output stream.
17061     */
17062    WriteBlankLines(intLines: number): void;
17063
17064    /**
17065     * Sends a string followed by a newline character to an output stream.
17066     */
17067    WriteLine(s: string): void;
17068}
17069
17070interface TextStreamReader extends TextStreamBase {
17071    /**
17072     * Returns a specified number of characters from an input stream, starting at the current pointer position.
17073     * Does not return until the ENTER key is pressed.
17074     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.
17075     */
17076    Read(characters: number): string;
17077
17078    /**
17079     * Returns all characters from an input stream.
17080     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.
17081     */
17082    ReadAll(): string;
17083
17084    /**
17085     * Returns an entire line from an input stream.
17086     * Although this method extracts the newline character, it does not add it to the returned string.
17087     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.
17088     */
17089    ReadLine(): string;
17090
17091    /**
17092     * Skips a specified number of characters when reading from an input text stream.
17093     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.
17094     * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.)
17095     */
17096    Skip(characters: number): void;
17097
17098    /**
17099     * Skips the next line when reading from an input text stream.
17100     * Can only be used on a stream in reading mode, not writing or appending mode.
17101     */
17102    SkipLine(): void;
17103
17104    /**
17105     * Indicates whether the stream pointer position is at the end of a line.
17106     */
17107    AtEndOfLine: boolean;
17108
17109    /**
17110     * Indicates whether the stream pointer position is at the end of a stream.
17111     */
17112    AtEndOfStream: boolean;
17113}
17114
17115declare var WScript: {
17116    /**
17117    * Outputs text to either a message box (under WScript.exe) or the command console window followed by
17118    * a newline (under CScript.exe).
17119    */
17120    Echo(s: any): void;
17121
17122    /**
17123     * Exposes the write-only error output stream for the current script.
17124     * Can be accessed only while using CScript.exe.
17125     */
17126    StdErr: TextStreamWriter;
17127
17128    /**
17129     * Exposes the write-only output stream for the current script.
17130     * Can be accessed only while using CScript.exe.
17131     */
17132    StdOut: TextStreamWriter;
17133    Arguments: { length: number; Item(n: number): string; };
17134
17135    /**
17136     *  The full path of the currently running script.
17137     */
17138    ScriptFullName: string;
17139
17140    /**
17141     * Forces the script to stop immediately, with an optional exit code.
17142     */
17143    Quit(exitCode?: number): number;
17144
17145    /**
17146     * The Windows Script Host build version number.
17147     */
17148    BuildVersion: number;
17149
17150    /**
17151     * Fully qualified path of the host executable.
17152     */
17153    FullName: string;
17154
17155    /**
17156     * Gets/sets the script mode - interactive(true) or batch(false).
17157     */
17158    Interactive: boolean;
17159
17160    /**
17161     * The name of the host executable (WScript.exe or CScript.exe).
17162     */
17163    Name: string;
17164
17165    /**
17166     * Path of the directory containing the host executable.
17167     */
17168    Path: string;
17169
17170    /**
17171     * The filename of the currently running script.
17172     */
17173    ScriptName: string;
17174
17175    /**
17176     * Exposes the read-only input stream for the current script.
17177     * Can be accessed only while using CScript.exe.
17178     */
17179    StdIn: TextStreamReader;
17180
17181    /**
17182     * Windows Script Host version
17183     */
17184    Version: string;
17185
17186    /**
17187     * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event.
17188     */
17189    ConnectObject(objEventSource: any, strPrefix: string): void;
17190
17191    /**
17192     * Creates a COM object.
17193     * @param strProgiID
17194     * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events.
17195     */
17196    CreateObject(strProgID: string, strPrefix?: string): any;
17197
17198    /**
17199     * Disconnects a COM object from its event sources.
17200     */
17201    DisconnectObject(obj: any): void;
17202
17203    /**
17204     * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file.
17205     * @param strPathname Fully qualified path to the file containing the object persisted to disk.
17206     *                       For objects in memory, pass a zero-length string.
17207     * @param strProgID
17208     * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events.
17209     */
17210    GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any;
17211
17212    /**
17213     * Suspends script execution for a specified length of time, then continues execution.
17214     * @param intTime Interval (in milliseconds) to suspend script execution.
17215     */
17216    Sleep(intTime: number): void;
17217};
17218
17219/**
17220 * Allows enumerating over a COM collection, which may not have indexed item access.
17221 */
17222interface Enumerator<T> {
17223    /**
17224     * Returns true if the current item is the last one in the collection, or the collection is empty,
17225     * or the current item is undefined.
17226     */
17227    atEnd(): boolean;
17228
17229    /**
17230     * Returns the current item in the collection
17231     */
17232    item(): T;
17233
17234    /**
17235     * Resets the current item in the collection to the first item. If there are no items in the collection,
17236     * the current item is set to undefined.
17237     */
17238    moveFirst(): void;
17239
17240    /**
17241     * Moves the current item to the next item in the collection. If the enumerator is at the end of
17242     * the collection or the collection is empty, the current item is set to undefined.
17243     */
17244    moveNext(): void;
17245}
17246
17247interface EnumeratorConstructor {
17248    new <T>(collection: any): Enumerator<T>;
17249    new (collection: any): Enumerator<any>;
17250}
17251
17252declare var Enumerator: EnumeratorConstructor;
17253
17254/**
17255 * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions.
17256 */
17257interface VBArray<T> {
17258    /**
17259     * Returns the number of dimensions (1-based).
17260     */
17261    dimensions(): number;
17262
17263    /**
17264     * Takes an index for each dimension in the array, and returns the item at the corresponding location.
17265     */
17266    getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T;
17267
17268    /**
17269     * Returns the smallest available index for a given dimension.
17270     * @param dimension 1-based dimension (defaults to 1)
17271     */
17272    lbound(dimension?: number): number;
17273
17274    /**
17275     * Returns the largest available index for a given dimension.
17276     * @param dimension 1-based dimension (defaults to 1)
17277     */
17278    ubound(dimension?: number): number;
17279
17280    /**
17281     * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions,
17282     * each successive dimension is appended to the end of the array.
17283     * Example: [[1,2,3],[4,5,6]] becomes [1,2,3,4,5,6]
17284     */
17285    toArray(): T[];
17286}
17287
17288interface VBArrayConstructor {
17289    new <T>(safeArray: any): VBArray<T>;
17290    new (safeArray: any): VBArray<any>;
17291}
17292
17293declare var VBArray: VBArrayConstructor;
17294