2016-08-31 18:55:13 -04:00
// This file is used for internal testing with Karma only, it should not be used in real applications.
2015-08-20 04:02:42 -04:00
// function.name (all IE)
/*! @source http://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie*/
if ( ! Object . hasOwnProperty ( 'name' ) ) {
Object . defineProperty ( Function . prototype , 'name' , {
get : function ( ) {
2016-02-07 19:20:00 -05:00
var matches = this . toString ( ) . match ( /^\s*function\s*((?![0-9])[a-zA-Z0-9_$]*)\s*\(/ ) ;
2015-09-08 06:38:19 -04:00
var name = matches && matches . length > 1 ? matches [ 1 ] : "" ;
2015-08-20 04:02:42 -04:00
// For better performance only parse once, and then cache the
// result through a new accessor for repeated access.
Object . defineProperty ( this , 'name' , { value : name } ) ;
return name ;
}
} ) ;
}
// URL polyfill for SystemJS (all IE)
/*! @source https://github.com/ModuleLoader/es6-module-loader/blob/master/src/url-polyfill.js*/
// from https://gist.github.com/Yaffle/1088850
( function ( global ) {
function URLPolyfill ( url , baseURL ) {
if ( typeof url != 'string' ) {
throw new TypeError ( 'URL must be a string' ) ;
}
var m = String ( url ) . replace ( /^\s+|\s+$/g , "" ) . match ( /^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/ ) ;
if ( ! m ) {
throw new RangeError ( ) ;
}
var protocol = m [ 1 ] || "" ;
var username = m [ 2 ] || "" ;
var password = m [ 3 ] || "" ;
var host = m [ 4 ] || "" ;
var hostname = m [ 5 ] || "" ;
var port = m [ 6 ] || "" ;
var pathname = m [ 7 ] || "" ;
var search = m [ 8 ] || "" ;
var hash = m [ 9 ] || "" ;
if ( baseURL !== undefined ) {
var base = baseURL instanceof URLPolyfill ? baseURL : new URLPolyfill ( baseURL ) ;
var flag = protocol === "" && host === "" && username === "" ;
if ( flag && pathname === "" && search === "" ) {
search = base . search ;
}
if ( flag && pathname . charAt ( 0 ) !== "/" ) {
pathname = ( pathname !== "" ? ( ( ( base . host !== "" || base . username !== "" ) && base . pathname === "" ? "/" : "" ) + base . pathname . slice ( 0 , base . pathname . lastIndexOf ( "/" ) + 1 ) + pathname ) : base . pathname ) ;
}
// dot segments removal
var output = [ ] ;
pathname . replace ( /^(\.\.?(\/|$))+/ , "" )
. replace ( /\/(\.(\/|$))+/g , "/" )
. replace ( /\/\.\.$/ , "/../" )
. replace ( /\/?[^\/]*/g , function ( p ) {
if ( p === "/.." ) {
output . pop ( ) ;
} else {
output . push ( p ) ;
}
} ) ;
pathname = output . join ( "" ) . replace ( /^\// , pathname . charAt ( 0 ) === "/" ? "/" : "" ) ;
if ( flag ) {
port = base . port ;
hostname = base . hostname ;
host = base . host ;
password = base . password ;
username = base . username ;
}
if ( protocol === "" ) {
protocol = base . protocol ;
}
}
// convert windows file URLs to use /
if ( protocol == 'file:' )
pathname = pathname . replace ( /\\/g , '/' ) ;
this . origin = protocol + ( protocol !== "" || host !== "" ? "//" : "" ) + host ;
this . href = protocol + ( protocol !== "" || host !== "" ? "//" : "" ) + ( username !== "" ? username + ( password !== "" ? ":" + password : "" ) + "@" : "" ) + host + pathname + search + hash ;
this . protocol = protocol ;
this . username = username ;
this . password = password ;
this . host = host ;
this . hostname = hostname ;
this . port = port ;
this . pathname = pathname ;
this . search = search ;
this . hash = hash ;
}
global . URLPolyfill = URLPolyfill ;
2015-08-20 08:34:01 -04:00
} ) ( typeof self != 'undefined' ? self : global ) ;
//classList (IE9)
/*! @license please refer to http://unlicense.org/ */
/*! @author Eli Grey */
/*! @source https://github.com/eligrey/classList.js */
; if ( "document" in self && ! ( "classList" in document . createElement ( "_" ) ) ) { ( function ( j ) { "use strict" ; if ( ! ( "Element" in j ) ) { return } var a = "classList" , f = "prototype" , m = j . Element [ f ] , b = Object , k = String [ f ] . trim || function ( ) { return this . replace ( /^\s+|\s+$/g , "" ) } , c = Array [ f ] . indexOf || function ( q ) { var p = 0 , o = this . length ; for ( ; p < o ; p ++ ) { if ( p in this && this [ p ] === q ) { return p } } return - 1 } , n = function ( o , p ) { this . name = o ; this . code = DOMException [ o ] ; this . message = p } , g = function ( p , o ) { if ( o === "" ) { throw new n ( "SYNTAX_ERR" , "An invalid or illegal string was specified" ) } if ( /\s/ . test ( o ) ) { throw new n ( "INVALID_CHARACTER_ERR" , "String contains an invalid character" ) } return c . call ( p , o ) } , d = function ( s ) { var r = k . call ( s . getAttribute ( "class" ) || "" ) , q = r ? r . split ( /\s+/ ) : [ ] , p = 0 , o = q . length ; for ( ; p < o ; p ++ ) { this . push ( q [ p ] ) } this . _updateClassName = function ( ) { s . setAttribute ( "class" , this . toString ( ) ) } } , e = d [ f ] = [ ] , i = function ( ) { return new d ( this ) } ; n [ f ] = Error [ f ] ; e . item = function ( o ) { return this [ o ] || null } ; e . contains = function ( o ) { o += "" ; return g ( this , o ) !== - 1 } ; e . add = function ( ) { var s = arguments , r = 0 , p = s . length , q , o = false ; do { q = s [ r ] + "" ; if ( g ( this , q ) === - 1 ) { this . push ( q ) ; o = true } } while ( ++ r < p ) ; if ( o ) { this . _updateClassName ( ) } } ; e . remove = function ( ) { var t = arguments , s = 0 , p = t . length , r , o = false ; do { r = t [ s ] + "" ; var q = g ( this , r ) ; if ( q !== - 1 ) { this . splice ( q , 1 ) ; o = true } } while ( ++ s < p ) ; if ( o ) { this . _updateClassName ( ) } } ; e . toggle = function ( p , q ) { p += "" ; var o = this . contains ( p ) , r = o ? q !== true && "remove" : q !== false && "add" ; if ( r ) { this [ r ] ( p ) } return ! o } ; e . toString = function ( ) { return this . join ( " " ) } ; if ( b . defineProperty ) { var l = { get : i , enumerable : true , configurable : true } ; try { b . defineProperty ( m , a , l ) } catch ( h ) { if ( h . number === - 2146823252 ) { l . enumerable = false ; b . defineProperty ( m , a , l ) } } } else { if ( b [ f ] . _ _defineGetter _ _ ) { m . _ _defineGetter _ _ ( a , i ) } } } ( self ) ) } ;
//console mock (IE9)
if ( ! window . console ) window . console = { } ;
if ( ! window . console . log ) window . console . log = function ( ) { } ;
if ( ! window . console . error ) window . console . error = function ( ) { } ;
if ( ! window . console . warn ) window . console . warn = function ( ) { } ;
if ( ! window . console . assert ) window . console . assert = function ( ) { } ;
2015-09-17 18:49:10 -04:00
2016-07-29 08:30:35 -04:00
//Typed Array (IE9)
/*! @source https://github.com/inexorabletash/polyfill/blob/master/typedarray.js */
/ *
Copyright ( c ) 2010 , Linden Research , Inc .
Copyright ( c ) 2014 , Joshua Bell
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the "Software" ) , to deal
in the Software without restriction , including without limitation the rights
to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED "AS IS" , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE .
$ / LicenseInfo$
* /
// Original can be found at:
// https://bitbucket.org/lindenlab/llsd
// Modifications by Joshua Bell inexorabletash@gmail.com
// https://github.com/inexorabletash/polyfill
// ES3/ES5 implementation of the Krhonos Typed Array Specification
// Ref: http://www.khronos.org/registry/typedarray/specs/latest/
// Date: 2011-02-01
//
// Variations:
// * Allows typed_array.get/set() as alias for subscripts (typed_array[])
// * Gradually migrating structure from Khronos spec to ES2015 spec
//
// Caveats:
// * Beyond 10000 or so entries, polyfilled array accessors (ta[0],
// etc) become memory-prohibitive, so array creation will fail. Set
// self.TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS=true to disable
// creation of accessors. Your code will need to use the
// non-standard get()/set() instead, and will need to add those to
// native arrays for interop.
( function ( global ) {
'use strict' ;
var undefined = ( void 0 ) ; // Paranoia
// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to
// create, and consume so much memory, that the browser appears frozen.
var MAX _ARRAY _LENGTH = 1e5 ;
// Approximations of internal ECMAScript conversion functions
function Type ( v ) {
switch ( typeof v ) {
case 'undefined' : return 'undefined' ;
case 'boolean' : return 'boolean' ;
case 'number' : return 'number' ;
case 'string' : return 'string' ;
default : return v === null ? 'null' : 'object' ;
}
}
// Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:
function Class ( v ) { return Object . prototype . toString . call ( v ) . replace ( /^\[object *|\]$/g , '' ) ; }
function IsCallable ( o ) { return typeof o === 'function' ; }
function ToObject ( v ) {
if ( v === null || v === undefined ) throw TypeError ( ) ;
return Object ( v ) ;
}
function ToInt32 ( v ) { return v >> 0 ; }
function ToUint32 ( v ) { return v >>> 0 ; }
// Snapshot intrinsics
var LN2 = Math . LN2 ,
abs = Math . abs ,
floor = Math . floor ,
log = Math . log ,
max = Math . max ,
min = Math . min ,
pow = Math . pow ,
round = Math . round ;
// emulate ES5 getter/setter API using legacy APIs
// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx
// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but
// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)
( function ( ) {
var orig = Object . defineProperty ;
var dom _only = ! ( function ( ) { try { return Object . defineProperty ( { } , 'x' , { } ) ; } catch ( _ ) { return false ; } } ( ) ) ;
if ( ! orig || dom _only ) {
Object . defineProperty = function ( o , prop , desc ) {
// In IE8 try built-in implementation for defining properties on DOM prototypes.
if ( orig )
try { return orig ( o , prop , desc ) ; } catch ( _ ) { }
if ( o !== Object ( o ) )
throw TypeError ( 'Object.defineProperty called on non-object' ) ;
if ( Object . prototype . _ _defineGetter _ _ && ( 'get' in desc ) )
Object . prototype . _ _defineGetter _ _ . call ( o , prop , desc . get ) ;
if ( Object . prototype . _ _defineSetter _ _ && ( 'set' in desc ) )
Object . prototype . _ _defineSetter _ _ . call ( o , prop , desc . set ) ;
if ( 'value' in desc )
o [ prop ] = desc . value ;
return o ;
} ;
}
} ( ) ) ;
// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)
// for index in 0 ... obj.length
function makeArrayAccessors ( obj ) {
if ( 'TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS' in global )
return ;
if ( obj . length > MAX _ARRAY _LENGTH ) throw RangeError ( 'Array too large for polyfill' ) ;
function makeArrayAccessor ( index ) {
Object . defineProperty ( obj , index , {
'get' : function ( ) { return obj . _getter ( index ) ; } ,
'set' : function ( v ) { obj . _setter ( index , v ) ; } ,
enumerable : true ,
configurable : false
} ) ;
}
var i ;
for ( i = 0 ; i < obj . length ; i += 1 ) {
makeArrayAccessor ( i ) ;
}
}
// Internal conversion functions:
// pack<Type>() - take a number (interpreted as Type), output a byte array
// unpack<Type>() - take a byte array, output a Type-like number
function as _signed ( value , bits ) { var s = 32 - bits ; return ( value << s ) >> s ; }
function as _unsigned ( value , bits ) { var s = 32 - bits ; return ( value << s ) >>> s ; }
function packI8 ( n ) { return [ n & 0xff ] ; }
function unpackI8 ( bytes ) { return as _signed ( bytes [ 0 ] , 8 ) ; }
function packU8 ( n ) { return [ n & 0xff ] ; }
function unpackU8 ( bytes ) { return as _unsigned ( bytes [ 0 ] , 8 ) ; }
function packU8Clamped ( n ) { n = round ( Number ( n ) ) ; return [ n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff ] ; }
function packI16 ( n ) { return [ n & 0xff , ( n >> 8 ) & 0xff ] ; }
function unpackI16 ( bytes ) { return as _signed ( bytes [ 1 ] << 8 | bytes [ 0 ] , 16 ) ; }
function packU16 ( n ) { return [ n & 0xff , ( n >> 8 ) & 0xff ] ; }
function unpackU16 ( bytes ) { return as _unsigned ( bytes [ 1 ] << 8 | bytes [ 0 ] , 16 ) ; }
function packI32 ( n ) { return [ n & 0xff , ( n >> 8 ) & 0xff , ( n >> 16 ) & 0xff , ( n >> 24 ) & 0xff ] ; }
function unpackI32 ( bytes ) { return as _signed ( bytes [ 3 ] << 24 | bytes [ 2 ] << 16 | bytes [ 1 ] << 8 | bytes [ 0 ] , 32 ) ; }
function packU32 ( n ) { return [ n & 0xff , ( n >> 8 ) & 0xff , ( n >> 16 ) & 0xff , ( n >> 24 ) & 0xff ] ; }
function unpackU32 ( bytes ) { return as _unsigned ( bytes [ 3 ] << 24 | bytes [ 2 ] << 16 | bytes [ 1 ] << 8 | bytes [ 0 ] , 32 ) ; }
function packIEEE754 ( v , ebits , fbits ) {
var bias = ( 1 << ( ebits - 1 ) ) - 1 ;
function roundToEven ( n ) {
var w = floor ( n ) , f = n - w ;
if ( f < 0.5 )
return w ;
if ( f > 0.5 )
return w + 1 ;
return w % 2 ? w + 1 : w ;
}
// Compute sign, exponent, fraction
var s , e , f ;
if ( v !== v ) {
// NaN
// http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
e = ( 1 << ebits ) - 1 ; f = pow ( 2 , fbits - 1 ) ; s = 0 ;
} else if ( v === Infinity || v === - Infinity ) {
e = ( 1 << ebits ) - 1 ; f = 0 ; s = ( v < 0 ) ? 1 : 0 ;
} else if ( v === 0 ) {
e = 0 ; f = 0 ; s = ( 1 / v === - Infinity ) ? 1 : 0 ;
} else {
s = v < 0 ;
v = abs ( v ) ;
if ( v >= pow ( 2 , 1 - bias ) ) {
// Normalized
e = min ( floor ( log ( v ) / LN2 ) , 1023 ) ;
var significand = v / pow ( 2 , e ) ;
if ( significand < 1 ) {
e -= 1 ;
significand *= 2 ;
}
if ( significand >= 2 ) {
e += 1 ;
significand /= 2 ;
}
var d = pow ( 2 , fbits ) ;
f = roundToEven ( significand * d ) - d ;
e += bias ;
if ( f / d >= 1 ) {
e += 1 ;
f = 0 ;
}
if ( e > 2 * bias ) {
// Overflow
e = ( 1 << ebits ) - 1 ;
f = 0 ;
}
} else {
// Denormalized
e = 0 ;
f = roundToEven ( v / pow ( 2 , 1 - bias - fbits ) ) ;
}
}
// Pack sign, exponent, fraction
var bits = [ ] , i ;
for ( i = fbits ; i ; i -= 1 ) { bits . push ( f % 2 ? 1 : 0 ) ; f = floor ( f / 2 ) ; }
for ( i = ebits ; i ; i -= 1 ) { bits . push ( e % 2 ? 1 : 0 ) ; e = floor ( e / 2 ) ; }
bits . push ( s ? 1 : 0 ) ;
bits . reverse ( ) ;
var str = bits . join ( '' ) ;
// Bits to bytes
var bytes = [ ] ;
while ( str . length ) {
bytes . unshift ( parseInt ( str . substring ( 0 , 8 ) , 2 ) ) ;
str = str . substring ( 8 ) ;
}
return bytes ;
}
function unpackIEEE754 ( bytes , ebits , fbits ) {
// Bytes to bits
var bits = [ ] , i , j , b , str ,
bias , s , e , f ;
for ( i = 0 ; i < bytes . length ; ++ i ) {
b = bytes [ i ] ;
for ( j = 8 ; j ; j -= 1 ) {
bits . push ( b % 2 ? 1 : 0 ) ; b = b >> 1 ;
}
}
bits . reverse ( ) ;
str = bits . join ( '' ) ;
// Unpack sign, exponent, fraction
bias = ( 1 << ( ebits - 1 ) ) - 1 ;
s = parseInt ( str . substring ( 0 , 1 ) , 2 ) ? - 1 : 1 ;
e = parseInt ( str . substring ( 1 , 1 + ebits ) , 2 ) ;
f = parseInt ( str . substring ( 1 + ebits ) , 2 ) ;
// Produce number
if ( e === ( 1 << ebits ) - 1 ) {
return f !== 0 ? NaN : s * Infinity ;
} else if ( e > 0 ) {
// Normalized
return s * pow ( 2 , e - bias ) * ( 1 + f / pow ( 2 , fbits ) ) ;
} else if ( f !== 0 ) {
// Denormalized
return s * pow ( 2 , - ( bias - 1 ) ) * ( f / pow ( 2 , fbits ) ) ;
} else {
return s < 0 ? - 0 : 0 ;
}
}
function unpackF64 ( b ) { return unpackIEEE754 ( b , 11 , 52 ) ; }
function packF64 ( v ) { return packIEEE754 ( v , 11 , 52 ) ; }
function unpackF32 ( b ) { return unpackIEEE754 ( b , 8 , 23 ) ; }
function packF32 ( v ) { return packIEEE754 ( v , 8 , 23 ) ; }
//
// 3 The ArrayBuffer Type
//
( function ( ) {
function ArrayBuffer ( length ) {
length = ToInt32 ( length ) ;
if ( length < 0 ) throw RangeError ( 'ArrayBuffer size is not a small enough positive integer.' ) ;
Object . defineProperty ( this , 'byteLength' , { value : length } ) ;
Object . defineProperty ( this , '_bytes' , { value : Array ( length ) } ) ;
for ( var i = 0 ; i < length ; i += 1 )
this . _bytes [ i ] = 0 ;
}
global . ArrayBuffer = global . ArrayBuffer || ArrayBuffer ;
//
// 5 The Typed Array View Types
//
function $TypedArray$ ( ) {
// %TypedArray% ( length )
if ( ! arguments . length || typeof arguments [ 0 ] !== 'object' ) {
return ( function ( length ) {
length = ToInt32 ( length ) ;
if ( length < 0 ) throw RangeError ( 'length is not a small enough positive integer.' ) ;
Object . defineProperty ( this , 'length' , { value : length } ) ;
Object . defineProperty ( this , 'byteLength' , { value : length * this . BYTES _PER _ELEMENT } ) ;
Object . defineProperty ( this , 'buffer' , { value : new ArrayBuffer ( this . byteLength ) } ) ;
Object . defineProperty ( this , 'byteOffset' , { value : 0 } ) ;
} ) . apply ( this , arguments ) ;
}
// %TypedArray% ( typedArray )
if ( arguments . length >= 1 &&
Type ( arguments [ 0 ] ) === 'object' &&
arguments [ 0 ] instanceof $TypedArray$ ) {
return ( function ( typedArray ) {
if ( this . constructor !== typedArray . constructor ) throw TypeError ( ) ;
var byteLength = typedArray . length * this . BYTES _PER _ELEMENT ;
Object . defineProperty ( this , 'buffer' , { value : new ArrayBuffer ( byteLength ) } ) ;
Object . defineProperty ( this , 'byteLength' , { value : byteLength } ) ;
Object . defineProperty ( this , 'byteOffset' , { value : 0 } ) ;
Object . defineProperty ( this , 'length' , { value : typedArray . length } ) ;
for ( var i = 0 ; i < this . length ; i += 1 )
this . _setter ( i , typedArray . _getter ( i ) ) ;
} ) . apply ( this , arguments ) ;
}
// %TypedArray% ( array )
if ( arguments . length >= 1 &&
Type ( arguments [ 0 ] ) === 'object' &&
! ( arguments [ 0 ] instanceof $TypedArray$ ) &&
! ( arguments [ 0 ] instanceof ArrayBuffer || Class ( arguments [ 0 ] ) === 'ArrayBuffer' ) ) {
return ( function ( array ) {
var byteLength = array . length * this . BYTES _PER _ELEMENT ;
Object . defineProperty ( this , 'buffer' , { value : new ArrayBuffer ( byteLength ) } ) ;
Object . defineProperty ( this , 'byteLength' , { value : byteLength } ) ;
Object . defineProperty ( this , 'byteOffset' , { value : 0 } ) ;
Object . defineProperty ( this , 'length' , { value : array . length } ) ;
for ( var i = 0 ; i < this . length ; i += 1 ) {
var s = array [ i ] ;
this . _setter ( i , Number ( s ) ) ;
}
} ) . apply ( this , arguments ) ;
}
// %TypedArray% ( buffer, byteOffset=0, length=undefined )
if ( arguments . length >= 1 &&
Type ( arguments [ 0 ] ) === 'object' &&
( arguments [ 0 ] instanceof ArrayBuffer || Class ( arguments [ 0 ] ) === 'ArrayBuffer' ) ) {
return ( function ( buffer , byteOffset , length ) {
byteOffset = ToUint32 ( byteOffset ) ;
if ( byteOffset > buffer . byteLength )
throw RangeError ( 'byteOffset out of range' ) ;
// The given byteOffset must be a multiple of the element
// size of the specific type, otherwise an exception is raised.
if ( byteOffset % this . BYTES _PER _ELEMENT )
throw RangeError ( 'buffer length minus the byteOffset is not a multiple of the element size.' ) ;
if ( length === undefined ) {
var byteLength = buffer . byteLength - byteOffset ;
if ( byteLength % this . BYTES _PER _ELEMENT )
throw RangeError ( 'length of buffer minus byteOffset not a multiple of the element size' ) ;
length = byteLength / this . BYTES _PER _ELEMENT ;
} else {
length = ToUint32 ( length ) ;
byteLength = length * this . BYTES _PER _ELEMENT ;
}
if ( ( byteOffset + byteLength ) > buffer . byteLength )
throw RangeError ( 'byteOffset and length reference an area beyond the end of the buffer' ) ;
Object . defineProperty ( this , 'buffer' , { value : buffer } ) ;
Object . defineProperty ( this , 'byteLength' , { value : byteLength } ) ;
Object . defineProperty ( this , 'byteOffset' , { value : byteOffset } ) ;
Object . defineProperty ( this , 'length' , { value : length } ) ;
} ) . apply ( this , arguments ) ;
}
// %TypedArray% ( all other argument combinations )
throw TypeError ( ) ;
}
// Properties of the %TypedArray Instrinsic Object
// %TypedArray%.from ( source , mapfn=undefined, thisArg=undefined )
Object . defineProperty ( $TypedArray$ , 'from' , { value : function ( iterable ) {
return new this ( iterable ) ;
} } ) ;
// %TypedArray%.of ( ...items )
Object . defineProperty ( $TypedArray$ , 'of' , { value : function ( /*...items*/ ) {
return new this ( arguments ) ;
} } ) ;
// %TypedArray%.prototype
var $TypedArrayPrototype$ = { } ;
$TypedArray$ . prototype = $TypedArrayPrototype$ ;
// WebIDL: getter type (unsigned long index);
Object . defineProperty ( $TypedArray$ . prototype , '_getter' , { value : function ( index ) {
if ( arguments . length < 1 ) throw SyntaxError ( 'Not enough arguments' ) ;
index = ToUint32 ( index ) ;
if ( index >= this . length )
return undefined ;
var bytes = [ ] , i , o ;
for ( i = 0 , o = this . byteOffset + index * this . BYTES _PER _ELEMENT ;
i < this . BYTES _PER _ELEMENT ;
i += 1 , o += 1 ) {
bytes . push ( this . buffer . _bytes [ o ] ) ;
}
return this . _unpack ( bytes ) ;
} } ) ;
// NONSTANDARD: convenience alias for getter: type get(unsigned long index);
Object . defineProperty ( $TypedArray$ . prototype , 'get' , { value : $TypedArray$ . prototype . _getter } ) ;
// WebIDL: setter void (unsigned long index, type value);
Object . defineProperty ( $TypedArray$ . prototype , '_setter' , { value : function ( index , value ) {
if ( arguments . length < 2 ) throw SyntaxError ( 'Not enough arguments' ) ;
index = ToUint32 ( index ) ;
if ( index >= this . length )
return ;
var bytes = this . _pack ( value ) , i , o ;
for ( i = 0 , o = this . byteOffset + index * this . BYTES _PER _ELEMENT ;
i < this . BYTES _PER _ELEMENT ;
i += 1 , o += 1 ) {
this . buffer . _bytes [ o ] = bytes [ i ] ;
}
} } ) ;
// get %TypedArray%.prototype.buffer
// get %TypedArray%.prototype.byteLength
// get %TypedArray%.prototype.byteOffset
// -- applied directly to the object in the constructor
// %TypedArray%.prototype.constructor
Object . defineProperty ( $TypedArray$ . prototype , 'constructor' , { value : $TypedArray$ } ) ;
// %TypedArray%.prototype.copyWithin (target, start, end = this.length )
Object . defineProperty ( $TypedArray$ . prototype , 'copyWithin' , { value : function ( target , start ) {
var end = arguments [ 2 ] ;
var o = ToObject ( this ) ;
var lenVal = o . length ;
var len = ToUint32 ( lenVal ) ;
len = max ( len , 0 ) ;
var relativeTarget = ToInt32 ( target ) ;
var to ;
if ( relativeTarget < 0 )
to = max ( len + relativeTarget , 0 ) ;
else
to = min ( relativeTarget , len ) ;
var relativeStart = ToInt32 ( start ) ;
var from ;
if ( relativeStart < 0 )
from = max ( len + relativeStart , 0 ) ;
else
from = min ( relativeStart , len ) ;
var relativeEnd ;
if ( end === undefined )
relativeEnd = len ;
else
relativeEnd = ToInt32 ( end ) ;
var final ;
if ( relativeEnd < 0 )
final = max ( len + relativeEnd , 0 ) ;
else
final = min ( relativeEnd , len ) ;
var count = min ( final - from , len - to ) ;
var direction ;
if ( from < to && to < from + count ) {
direction = - 1 ;
from = from + count - 1 ;
to = to + count - 1 ;
} else {
direction = 1 ;
}
while ( count > 0 ) {
o . _setter ( to , o . _getter ( from ) ) ;
from = from + direction ;
to = to + direction ;
count = count - 1 ;
}
return o ;
} } ) ;
// %TypedArray%.prototype.entries ( )
// -- defined in es6.js to shim browsers w/ native TypedArrays
// %TypedArray%.prototype.every ( callbackfn, thisArg = undefined )
Object . defineProperty ( $TypedArray$ . prototype , 'every' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
var thisArg = arguments [ 1 ] ;
for ( var i = 0 ; i < len ; i ++ ) {
if ( ! callbackfn . call ( thisArg , t . _getter ( i ) , i , t ) )
return false ;
}
return true ;
} } ) ;
// %TypedArray%.prototype.fill (value, start = 0, end = this.length )
Object . defineProperty ( $TypedArray$ . prototype , 'fill' , { value : function ( value ) {
var start = arguments [ 1 ] ,
end = arguments [ 2 ] ;
var o = ToObject ( this ) ;
var lenVal = o . length ;
var len = ToUint32 ( lenVal ) ;
len = max ( len , 0 ) ;
var relativeStart = ToInt32 ( start ) ;
var k ;
if ( relativeStart < 0 )
k = max ( ( len + relativeStart ) , 0 ) ;
else
k = min ( relativeStart , len ) ;
var relativeEnd ;
if ( end === undefined )
relativeEnd = len ;
else
relativeEnd = ToInt32 ( end ) ;
var final ;
if ( relativeEnd < 0 )
final = max ( ( len + relativeEnd ) , 0 ) ;
else
final = min ( relativeEnd , len ) ;
while ( k < final ) {
o . _setter ( k , value ) ;
k += 1 ;
}
return o ;
} } ) ;
// %TypedArray%.prototype.filter ( callbackfn, thisArg = undefined )
Object . defineProperty ( $TypedArray$ . prototype , 'filter' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
var res = [ ] ;
var thisp = arguments [ 1 ] ;
for ( var i = 0 ; i < len ; i ++ ) {
var val = t . _getter ( i ) ; // in case fun mutates this
if ( callbackfn . call ( thisp , val , i , t ) )
res . push ( val ) ;
}
return new this . constructor ( res ) ;
} } ) ;
// %TypedArray%.prototype.find (predicate, thisArg = undefined)
Object . defineProperty ( $TypedArray$ . prototype , 'find' , { value : function ( predicate ) {
var o = ToObject ( this ) ;
var lenValue = o . length ;
var len = ToUint32 ( lenValue ) ;
if ( ! IsCallable ( predicate ) ) throw TypeError ( ) ;
var t = arguments . length > 1 ? arguments [ 1 ] : undefined ;
var k = 0 ;
while ( k < len ) {
var kValue = o . _getter ( k ) ;
var testResult = predicate . call ( t , kValue , k , o ) ;
if ( Boolean ( testResult ) )
return kValue ;
++ k ;
}
return undefined ;
} } ) ;
// %TypedArray%.prototype.findIndex ( predicate, thisArg = undefined )
Object . defineProperty ( $TypedArray$ . prototype , 'findIndex' , { value : function ( predicate ) {
var o = ToObject ( this ) ;
var lenValue = o . length ;
var len = ToUint32 ( lenValue ) ;
if ( ! IsCallable ( predicate ) ) throw TypeError ( ) ;
var t = arguments . length > 1 ? arguments [ 1 ] : undefined ;
var k = 0 ;
while ( k < len ) {
var kValue = o . _getter ( k ) ;
var testResult = predicate . call ( t , kValue , k , o ) ;
if ( Boolean ( testResult ) )
return k ;
++ k ;
}
return - 1 ;
} } ) ;
// %TypedArray%.prototype.forEach ( callbackfn, thisArg = undefined )
Object . defineProperty ( $TypedArray$ . prototype , 'forEach' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
var thisp = arguments [ 1 ] ;
for ( var i = 0 ; i < len ; i ++ )
callbackfn . call ( thisp , t . _getter ( i ) , i , t ) ;
} } ) ;
// %TypedArray%.prototype.indexOf (searchElement, fromIndex = 0 )
Object . defineProperty ( $TypedArray$ . prototype , 'indexOf' , { value : function ( searchElement ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( len === 0 ) return - 1 ;
var n = 0 ;
if ( arguments . length > 0 ) {
n = Number ( arguments [ 1 ] ) ;
if ( n !== n ) {
n = 0 ;
} else if ( n !== 0 && n !== ( 1 / 0 ) && n !== - ( 1 / 0 ) ) {
n = ( n > 0 || - 1 ) * floor ( abs ( n ) ) ;
}
}
if ( n >= len ) return - 1 ;
var k = n >= 0 ? n : max ( len - abs ( n ) , 0 ) ;
for ( ; k < len ; k ++ ) {
if ( t . _getter ( k ) === searchElement ) {
return k ;
}
}
return - 1 ;
} } ) ;
// %TypedArray%.prototype.join ( separator )
Object . defineProperty ( $TypedArray$ . prototype , 'join' , { value : function ( separator ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
var tmp = Array ( len ) ;
for ( var i = 0 ; i < len ; ++ i )
tmp [ i ] = t . _getter ( i ) ;
return tmp . join ( separator === undefined ? ',' : separator ) ; // Hack for IE7
} } ) ;
// %TypedArray%.prototype.keys ( )
// -- defined in es6.js to shim browsers w/ native TypedArrays
// %TypedArray%.prototype.lastIndexOf ( searchElement, fromIndex = this.length-1 )
Object . defineProperty ( $TypedArray$ . prototype , 'lastIndexOf' , { value : function ( searchElement ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( len === 0 ) return - 1 ;
var n = len ;
if ( arguments . length > 1 ) {
n = Number ( arguments [ 1 ] ) ;
if ( n !== n ) {
n = 0 ;
} else if ( n !== 0 && n !== ( 1 / 0 ) && n !== - ( 1 / 0 ) ) {
n = ( n > 0 || - 1 ) * floor ( abs ( n ) ) ;
}
}
var k = n >= 0 ? min ( n , len - 1 ) : len - abs ( n ) ;
for ( ; k >= 0 ; k -- ) {
if ( t . _getter ( k ) === searchElement )
return k ;
}
return - 1 ;
} } ) ;
// get %TypedArray%.prototype.length
// -- applied directly to the object in the constructor
// %TypedArray%.prototype.map ( callbackfn, thisArg = undefined )
Object . defineProperty ( $TypedArray$ . prototype , 'map' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
var res = [ ] ; res . length = len ;
var thisp = arguments [ 1 ] ;
for ( var i = 0 ; i < len ; i ++ )
res [ i ] = callbackfn . call ( thisp , t . _getter ( i ) , i , t ) ;
return new this . constructor ( res ) ;
} } ) ;
// %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
Object . defineProperty ( $TypedArray$ . prototype , 'reduce' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
// no value to return if no initial value and an empty array
if ( len === 0 && arguments . length === 1 ) throw TypeError ( ) ;
var k = 0 ;
var accumulator ;
if ( arguments . length >= 2 ) {
accumulator = arguments [ 1 ] ;
} else {
accumulator = t . _getter ( k ++ ) ;
}
while ( k < len ) {
accumulator = callbackfn . call ( undefined , accumulator , t . _getter ( k ) , k , t ) ;
k ++ ;
}
return accumulator ;
} } ) ;
// %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
Object . defineProperty ( $TypedArray$ . prototype , 'reduceRight' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
// no value to return if no initial value, empty array
if ( len === 0 && arguments . length === 1 ) throw TypeError ( ) ;
var k = len - 1 ;
var accumulator ;
if ( arguments . length >= 2 ) {
accumulator = arguments [ 1 ] ;
} else {
accumulator = t . _getter ( k -- ) ;
}
while ( k >= 0 ) {
accumulator = callbackfn . call ( undefined , accumulator , t . _getter ( k ) , k , t ) ;
k -- ;
}
return accumulator ;
} } ) ;
// %TypedArray%.prototype.reverse ( )
Object . defineProperty ( $TypedArray$ . prototype , 'reverse' , { value : function ( ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
var half = floor ( len / 2 ) ;
for ( var i = 0 , j = len - 1 ; i < half ; ++ i , -- j ) {
var tmp = t . _getter ( i ) ;
t . _setter ( i , t . _getter ( j ) ) ;
t . _setter ( j , tmp ) ;
}
return t ;
} } ) ;
// %TypedArray%.prototype.set(array, offset = 0 )
// %TypedArray%.prototype.set(typedArray, offset = 0 )
// WebIDL: void set(TypedArray array, optional unsigned long offset);
// WebIDL: void set(sequence<type> array, optional unsigned long offset);
Object . defineProperty ( $TypedArray$ . prototype , 'set' , { value : function ( index , value ) {
if ( arguments . length < 1 ) throw SyntaxError ( 'Not enough arguments' ) ;
var array , sequence , offset , len ,
i , s , d ,
byteOffset , byteLength , tmp ;
if ( typeof arguments [ 0 ] === 'object' && arguments [ 0 ] . constructor === this . constructor ) {
// void set(TypedArray array, optional unsigned long offset);
array = arguments [ 0 ] ;
offset = ToUint32 ( arguments [ 1 ] ) ;
if ( offset + array . length > this . length ) {
throw RangeError ( 'Offset plus length of array is out of range' ) ;
}
byteOffset = this . byteOffset + offset * this . BYTES _PER _ELEMENT ;
byteLength = array . length * this . BYTES _PER _ELEMENT ;
if ( array . buffer === this . buffer ) {
tmp = [ ] ;
for ( i = 0 , s = array . byteOffset ; i < byteLength ; i += 1 , s += 1 ) {
tmp [ i ] = array . buffer . _bytes [ s ] ;
}
for ( i = 0 , d = byteOffset ; i < byteLength ; i += 1 , d += 1 ) {
this . buffer . _bytes [ d ] = tmp [ i ] ;
}
} else {
for ( i = 0 , s = array . byteOffset , d = byteOffset ;
i < byteLength ; i += 1 , s += 1 , d += 1 ) {
this . buffer . _bytes [ d ] = array . buffer . _bytes [ s ] ;
}
}
} else if ( typeof arguments [ 0 ] === 'object' && typeof arguments [ 0 ] . length !== 'undefined' ) {
// void set(sequence<type> array, optional unsigned long offset);
sequence = arguments [ 0 ] ;
len = ToUint32 ( sequence . length ) ;
offset = ToUint32 ( arguments [ 1 ] ) ;
if ( offset + len > this . length ) {
throw RangeError ( 'Offset plus length of array is out of range' ) ;
}
for ( i = 0 ; i < len ; i += 1 ) {
s = sequence [ i ] ;
this . _setter ( offset + i , Number ( s ) ) ;
}
} else {
throw TypeError ( 'Unexpected argument type(s)' ) ;
}
} } ) ;
// %TypedArray%.prototype.slice ( start, end )
Object . defineProperty ( $TypedArray$ . prototype , 'slice' , { value : function ( start , end ) {
var o = ToObject ( this ) ;
var lenVal = o . length ;
var len = ToUint32 ( lenVal ) ;
var relativeStart = ToInt32 ( start ) ;
var k = ( relativeStart < 0 ) ? max ( len + relativeStart , 0 ) : min ( relativeStart , len ) ;
var relativeEnd = ( end === undefined ) ? len : ToInt32 ( end ) ;
var final = ( relativeEnd < 0 ) ? max ( len + relativeEnd , 0 ) : min ( relativeEnd , len ) ;
var count = final - k ;
var c = o . constructor ;
var a = new c ( count ) ;
var n = 0 ;
while ( k < final ) {
var kValue = o . _getter ( k ) ;
a . _setter ( n , kValue ) ;
++ k ;
++ n ;
}
return a ;
} } ) ;
// %TypedArray%.prototype.some ( callbackfn, thisArg = undefined )
Object . defineProperty ( $TypedArray$ . prototype , 'some' , { value : function ( callbackfn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
if ( ! IsCallable ( callbackfn ) ) throw TypeError ( ) ;
var thisp = arguments [ 1 ] ;
for ( var i = 0 ; i < len ; i ++ ) {
if ( callbackfn . call ( thisp , t . _getter ( i ) , i , t ) ) {
return true ;
}
}
return false ;
} } ) ;
// %TypedArray%.prototype.sort ( comparefn )
Object . defineProperty ( $TypedArray$ . prototype , 'sort' , { value : function ( comparefn ) {
if ( this === undefined || this === null ) throw TypeError ( ) ;
var t = Object ( this ) ;
var len = ToUint32 ( t . length ) ;
var tmp = Array ( len ) ;
for ( var i = 0 ; i < len ; ++ i )
tmp [ i ] = t . _getter ( i ) ;
if ( comparefn ) tmp . sort ( comparefn ) ; else tmp . sort ( ) ; // Hack for IE8/9
for ( i = 0 ; i < len ; ++ i )
t . _setter ( i , tmp [ i ] ) ;
return t ;
} } ) ;
// %TypedArray%.prototype.subarray(begin = 0, end = this.length )
// WebIDL: TypedArray subarray(long begin, optional long end);
Object . defineProperty ( $TypedArray$ . prototype , 'subarray' , { value : function ( start , end ) {
function clamp ( v , min , max ) { return v < min ? min : v > max ? max : v ; }
start = ToInt32 ( start ) ;
end = ToInt32 ( end ) ;
if ( arguments . length < 1 ) { start = 0 ; }
if ( arguments . length < 2 ) { end = this . length ; }
if ( start < 0 ) { start = this . length + start ; }
if ( end < 0 ) { end = this . length + end ; }
start = clamp ( start , 0 , this . length ) ;
end = clamp ( end , 0 , this . length ) ;
var len = end - start ;
if ( len < 0 ) {
len = 0 ;
}
return new this . constructor (
this . buffer , this . byteOffset + start * this . BYTES _PER _ELEMENT , len ) ;
} } ) ;
// %TypedArray%.prototype.toLocaleString ( )
// %TypedArray%.prototype.toString ( )
// %TypedArray%.prototype.values ( )
// %TypedArray%.prototype [ @@iterator ] ( )
// get %TypedArray%.prototype [ @@toStringTag ]
// -- defined in es6.js to shim browsers w/ native TypedArrays
function makeTypedArray ( elementSize , pack , unpack ) {
// Each TypedArray type requires a distinct constructor instance with
// identical logic, which this produces.
var TypedArray = function ( ) {
Object . defineProperty ( this , 'constructor' , { value : TypedArray } ) ;
$TypedArray$ . apply ( this , arguments ) ;
makeArrayAccessors ( this ) ;
} ;
if ( '__proto__' in TypedArray ) {
TypedArray . _ _proto _ _ = $TypedArray$ ;
} else {
TypedArray . from = $TypedArray$ . from ;
TypedArray . of = $TypedArray$ . of ;
}
TypedArray . BYTES _PER _ELEMENT = elementSize ;
var TypedArrayPrototype = function ( ) { } ;
TypedArrayPrototype . prototype = $TypedArrayPrototype$ ;
TypedArray . prototype = new TypedArrayPrototype ( ) ;
Object . defineProperty ( TypedArray . prototype , 'BYTES_PER_ELEMENT' , { value : elementSize } ) ;
Object . defineProperty ( TypedArray . prototype , '_pack' , { value : pack } ) ;
Object . defineProperty ( TypedArray . prototype , '_unpack' , { value : unpack } ) ;
return TypedArray ;
}
var Int8Array = makeTypedArray ( 1 , packI8 , unpackI8 ) ;
var Uint8Array = makeTypedArray ( 1 , packU8 , unpackU8 ) ;
var Uint8ClampedArray = makeTypedArray ( 1 , packU8Clamped , unpackU8 ) ;
var Int16Array = makeTypedArray ( 2 , packI16 , unpackI16 ) ;
var Uint16Array = makeTypedArray ( 2 , packU16 , unpackU16 ) ;
var Int32Array = makeTypedArray ( 4 , packI32 , unpackI32 ) ;
var Uint32Array = makeTypedArray ( 4 , packU32 , unpackU32 ) ;
var Float32Array = makeTypedArray ( 4 , packF32 , unpackF32 ) ;
var Float64Array = makeTypedArray ( 8 , packF64 , unpackF64 ) ;
global . Int8Array = global . Int8Array || Int8Array ;
global . Uint8Array = global . Uint8Array || Uint8Array ;
global . Uint8ClampedArray = global . Uint8ClampedArray || Uint8ClampedArray ;
global . Int16Array = global . Int16Array || Int16Array ;
global . Uint16Array = global . Uint16Array || Uint16Array ;
global . Int32Array = global . Int32Array || Int32Array ;
global . Uint32Array = global . Uint32Array || Uint32Array ;
global . Float32Array = global . Float32Array || Float32Array ;
global . Float64Array = global . Float64Array || Float64Array ;
} ( ) ) ;
//
// 6 The DataView View Type
//
( function ( ) {
function r ( array , index ) {
return IsCallable ( array . get ) ? array . get ( index ) : array [ index ] ;
}
var IS _BIG _ENDIAN = ( function ( ) {
var u16array = new Uint16Array ( [ 0x1234 ] ) ,
u8array = new Uint8Array ( u16array . buffer ) ;
return r ( u8array , 0 ) === 0x12 ;
} ( ) ) ;
// DataView(buffer, byteOffset=0, byteLength=undefined)
// WebIDL: Constructor(ArrayBuffer buffer,
// optional unsigned long byteOffset,
// optional unsigned long byteLength)
function DataView ( buffer , byteOffset , byteLength ) {
if ( ! ( buffer instanceof ArrayBuffer || Class ( buffer ) === 'ArrayBuffer' ) ) throw TypeError ( ) ;
byteOffset = ToUint32 ( byteOffset ) ;
if ( byteOffset > buffer . byteLength )
throw RangeError ( 'byteOffset out of range' ) ;
if ( byteLength === undefined )
byteLength = buffer . byteLength - byteOffset ;
else
byteLength = ToUint32 ( byteLength ) ;
if ( ( byteOffset + byteLength ) > buffer . byteLength )
throw RangeError ( 'byteOffset and length reference an area beyond the end of the buffer' ) ;
Object . defineProperty ( this , 'buffer' , { value : buffer } ) ;
Object . defineProperty ( this , 'byteLength' , { value : byteLength } ) ;
Object . defineProperty ( this , 'byteOffset' , { value : byteOffset } ) ;
} ;
// get DataView.prototype.buffer
// get DataView.prototype.byteLength
// get DataView.prototype.byteOffset
// -- applied directly to instances by the constructor
function makeGetter ( arrayType ) {
return function GetViewValue ( byteOffset , littleEndian ) {
byteOffset = ToUint32 ( byteOffset ) ;
if ( byteOffset + arrayType . BYTES _PER _ELEMENT > this . byteLength )
throw RangeError ( 'Array index out of range' ) ;
byteOffset += this . byteOffset ;
var uint8Array = new Uint8Array ( this . buffer , byteOffset , arrayType . BYTES _PER _ELEMENT ) ,
bytes = [ ] ;
for ( var i = 0 ; i < arrayType . BYTES _PER _ELEMENT ; i += 1 )
bytes . push ( r ( uint8Array , i ) ) ;
if ( Boolean ( littleEndian ) === Boolean ( IS _BIG _ENDIAN ) )
bytes . reverse ( ) ;
return r ( new arrayType ( new Uint8Array ( bytes ) . buffer ) , 0 ) ;
} ;
}
Object . defineProperty ( DataView . prototype , 'getUint8' , { value : makeGetter ( Uint8Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getInt8' , { value : makeGetter ( Int8Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getUint16' , { value : makeGetter ( Uint16Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getInt16' , { value : makeGetter ( Int16Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getUint32' , { value : makeGetter ( Uint32Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getInt32' , { value : makeGetter ( Int32Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getFloat32' , { value : makeGetter ( Float32Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'getFloat64' , { value : makeGetter ( Float64Array ) } ) ;
function makeSetter ( arrayType ) {
return function SetViewValue ( byteOffset , value , littleEndian ) {
byteOffset = ToUint32 ( byteOffset ) ;
if ( byteOffset + arrayType . BYTES _PER _ELEMENT > this . byteLength )
throw RangeError ( 'Array index out of range' ) ;
// Get bytes
var typeArray = new arrayType ( [ value ] ) ,
byteArray = new Uint8Array ( typeArray . buffer ) ,
bytes = [ ] , i , byteView ;
for ( i = 0 ; i < arrayType . BYTES _PER _ELEMENT ; i += 1 )
bytes . push ( r ( byteArray , i ) ) ;
// Flip if necessary
if ( Boolean ( littleEndian ) === Boolean ( IS _BIG _ENDIAN ) )
bytes . reverse ( ) ;
// Write them
byteView = new Uint8Array ( this . buffer , byteOffset , arrayType . BYTES _PER _ELEMENT ) ;
byteView . set ( bytes ) ;
} ;
}
Object . defineProperty ( DataView . prototype , 'setUint8' , { value : makeSetter ( Uint8Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setInt8' , { value : makeSetter ( Int8Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setUint16' , { value : makeSetter ( Uint16Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setInt16' , { value : makeSetter ( Int16Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setUint32' , { value : makeSetter ( Uint32Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setInt32' , { value : makeSetter ( Int32Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setFloat32' , { value : makeSetter ( Float32Array ) } ) ;
Object . defineProperty ( DataView . prototype , 'setFloat64' , { value : makeSetter ( Float64Array ) } ) ;
global . DataView = global . DataView || DataView ;
} ( ) ) ;
} ( self ) ) ;
2016-08-12 13:35:19 -04:00
//Blob (IE9)
/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
/ * B l o b . j s
* A Blob implementation .
* 2014 - 07 - 24
*
* By Eli Grey , http : //eligrey.com
* By Devin Samarin , https : //github.com/dsamarin
* License : MIT
* See https : //github.com/eligrey/Blob.js/blob/master/LICENSE.md
* /
/*global self, unescape */
/ * j s l i n t b i t w i s e : t r u e , r e g e x p : t r u e , c o n f u s i o n : t r u e , e s 5 : t r u e , v a r s : t r u e , w h i t e : t r u e ,
plusplus : true * /
/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
( function ( view ) {
"use strict" ;
view . URL = view . URL || view . webkitURL ;
if ( view . Blob && view . URL ) {
try {
new Blob ;
return ;
} catch ( e ) { }
}
// Internally we use a BlobBuilder implementation to base Blob off of
// in order to support older browsers that only have BlobBuilder
var BlobBuilder = view . BlobBuilder || view . WebKitBlobBuilder || view . MozBlobBuilder || ( function ( view ) {
var
get _class = function ( object ) {
return Object . prototype . toString . call ( object ) . match ( /^\[object\s(.*)\]$/ ) [ 1 ] ;
}
, FakeBlobBuilder = function BlobBuilder ( ) {
this . data = [ ] ;
}
, FakeBlob = function Blob ( data , type , encoding ) {
this . data = data ;
this . size = data . length ;
this . type = type ;
this . encoding = encoding ;
}
, FBB _proto = FakeBlobBuilder . prototype
, FB _proto = FakeBlob . prototype
, FileReaderSync = view . FileReaderSync
, FileException = function ( type ) {
this . code = this [ this . name = type ] ;
}
, file _ex _codes = (
"NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
+ "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
) . split ( " " )
, file _ex _code = file _ex _codes . length
, real _URL = view . URL || view . webkitURL || view
, real _create _object _URL = real _URL . createObjectURL
, real _revoke _object _URL = real _URL . revokeObjectURL
, URL = real _URL
, btoa = view . btoa
, atob = view . atob
, ArrayBuffer = view . ArrayBuffer
, Uint8Array = view . Uint8Array
, origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/
;
FakeBlob . fake = FB _proto . fake = true ;
while ( file _ex _code -- ) {
FileException . prototype [ file _ex _codes [ file _ex _code ] ] = file _ex _code + 1 ;
}
// Polyfill URL
if ( ! real _URL . createObjectURL ) {
URL = view . URL = function ( uri ) {
var
uri _info = document . createElementNS ( "http://www.w3.org/1999/xhtml" , "a" )
, uri _origin
;
uri _info . href = uri ;
if ( ! ( "origin" in uri _info ) ) {
if ( uri _info . protocol . toLowerCase ( ) === "data:" ) {
uri _info . origin = null ;
} else {
uri _origin = uri . match ( origin ) ;
uri _info . origin = uri _origin && uri _origin [ 1 ] ;
}
}
return uri _info ;
} ;
}
URL . createObjectURL = function ( blob ) {
var
type = blob . type
, data _URI _header
;
if ( type === null ) {
type = "application/octet-stream" ;
}
if ( blob instanceof FakeBlob ) {
data _URI _header = "data:" + type ;
if ( blob . encoding === "base64" ) {
return data _URI _header + ";base64," + blob . data ;
} else if ( blob . encoding === "URI" ) {
return data _URI _header + "," + decodeURIComponent ( blob . data ) ;
} if ( btoa ) {
return data _URI _header + ";base64," + btoa ( blob . data ) ;
} else {
return data _URI _header + "," + encodeURIComponent ( blob . data ) ;
}
} else if ( real _create _object _URL ) {
return real _create _object _URL . call ( real _URL , blob ) ;
}
} ;
URL . revokeObjectURL = function ( object _URL ) {
if ( object _URL . substring ( 0 , 5 ) !== "data:" && real _revoke _object _URL ) {
real _revoke _object _URL . call ( real _URL , object _URL ) ;
}
} ;
FBB _proto . append = function ( data /*, endings*/ ) {
var bb = this . data ;
// decode data to a binary string
if ( Uint8Array && ( data instanceof ArrayBuffer || data instanceof Uint8Array ) ) {
var
str = ""
, buf = new Uint8Array ( data )
, i = 0
, buf _len = buf . length
;
for ( ; i < buf _len ; i ++ ) {
str += String . fromCharCode ( buf [ i ] ) ;
}
bb . push ( str ) ;
} else if ( get _class ( data ) === "Blob" || get _class ( data ) === "File" ) {
if ( FileReaderSync ) {
var fr = new FileReaderSync ;
bb . push ( fr . readAsBinaryString ( data ) ) ;
} else {
// async FileReader won't work as BlobBuilder is sync
throw new FileException ( "NOT_READABLE_ERR" ) ;
}
} else if ( data instanceof FakeBlob ) {
if ( data . encoding === "base64" && atob ) {
bb . push ( atob ( data . data ) ) ;
} else if ( data . encoding === "URI" ) {
bb . push ( decodeURIComponent ( data . data ) ) ;
} else if ( data . encoding === "raw" ) {
bb . push ( data . data ) ;
}
} else {
if ( typeof data !== "string" ) {
data += "" ; // convert unsupported types to strings
}
// decode UTF-16 to binary string
bb . push ( unescape ( encodeURIComponent ( data ) ) ) ;
}
} ;
FBB _proto . getBlob = function ( type ) {
if ( ! arguments . length ) {
type = null ;
}
return new FakeBlob ( this . data . join ( "" ) , type , "raw" ) ;
} ;
FBB _proto . toString = function ( ) {
return "[object BlobBuilder]" ;
} ;
FB _proto . slice = function ( start , end , type ) {
var args = arguments . length ;
if ( args < 3 ) {
type = null ;
}
return new FakeBlob (
this . data . slice ( start , args > 1 ? end : this . data . length )
, type
, this . encoding
) ;
} ;
FB _proto . toString = function ( ) {
return "[object Blob]" ;
} ;
FB _proto . close = function ( ) {
this . size = 0 ;
delete this . data ;
} ;
return FakeBlobBuilder ;
} ( view ) ) ;
view . Blob = function ( blobParts , options ) {
var type = options ? ( options . type || "" ) : "" ;
var builder = new BlobBuilder ( ) ;
if ( blobParts ) {
for ( var i = 0 , len = blobParts . length ; i < len ; i ++ ) {
if ( Uint8Array && blobParts [ i ] instanceof Uint8Array ) {
builder . append ( blobParts [ i ] . buffer ) ;
}
else {
builder . append ( blobParts [ i ] ) ;
}
}
}
var blob = builder . getBlob ( type ) ;
if ( ! blob . slice && blob . webkitSlice ) {
blob . slice = blob . webkitSlice ;
}
return blob ;
} ;
var getPrototypeOf = Object . getPrototypeOf || function ( object ) {
return object . _ _proto _ _ ;
} ;
view . Blob . prototype = getPrototypeOf ( new view . Blob ( ) ) ;
} ( typeof self !== "undefined" && self || typeof window !== "undefined" && window || this . content || this ) ) ;
//FormData (IE9)
/*! @source https://github.com/francois2metz/html5-formdata/blob/master/formdata.js */
/ * *
* Emulate FormData for some browsers
* MIT License
* ( c ) 2010 François de Metz
* /
( function ( w ) {
if ( w . FormData )
return ;
function FormData ( ) {
this . fake = true ;
this . boundary = "--------FormData" + Math . random ( ) ;
this . _fields = [ ] ;
}
FormData . prototype . append = function ( key , value ) {
this . _fields . push ( [ key , value ] ) ;
}
FormData . prototype . toString = function ( ) {
var boundary = this . boundary ;
var body = "" ;
this . _fields . forEach ( function ( field ) {
body += "--" + boundary + "\r\n" ;
// file upload
if ( field [ 1 ] . name ) {
var file = field [ 1 ] ;
body += "Content-Disposition: form-data; name=\"" + field [ 0 ] + "\"; filename=\"" + file . name + "\"\r\n" ;
body += "Content-Type: " + file . type + "\r\n\r\n" ;
body += file . getAsBinary ( ) + "\r\n" ;
} else {
body += "Content-Disposition: form-data; name=\"" + field [ 0 ] + "\";\r\n\r\n" ;
body += field [ 1 ] + "\r\n" ;
}
} ) ;
body += "--" + boundary + "--" ;
return body ;
}
w . FormData = FormData ;
} ) ( window ) ;
2016-08-31 18:55:13 -04:00
// Intl (IE9, IE10, all Safari, all Android)
/*! @source https://github.com/andyearnshaw/Intl.js */
/*! @licence https://github.com/andyearnshaw/Intl.js/blob/master/LICENSE.txt */
! function ( e , r ) { "object" == typeof exports && "undefined" != typeof module ? module . exports = r ( ) : "function" == typeof define && define . amd ? define ( r ) : e . IntlPolyfill = r ( ) } ( this , function ( ) { "use strict" ; function e ( e ) { if ( "function" == typeof Math . log10 ) return Math . floor ( Math . log10 ( e ) ) ; var r = Math . round ( Math . log ( e ) * Math . LOG10E ) ; return r - ( Number ( "1e" + r ) > e ) } function r ( e ) { for ( var t in e ) ( e instanceof r || ee . call ( e , t ) ) && re ( this , t , { value : e [ t ] , enumerable : ! 0 , writable : ! 0 , configurable : ! 0 } ) } function t ( ) { re ( this , "length" , { writable : ! 0 , value : 0 } ) , arguments . length && oe . apply ( this , ae . call ( arguments ) ) } function n ( ) { if ( ue . disableRegExpRestore ) return function ( ) { } ; for ( var e = { lastMatch : RegExp . lastMatch || "" , leftContext : RegExp . leftContext , multiline : RegExp . multiline , input : RegExp . input } , r = ! 1 , n = 1 ; n <= 9 ; n ++ ) r = ( e [ "$" + n ] = RegExp [ "$" + n ] ) || r ; return function ( ) { var n = /[.?*+^$[\]\\(){}|-]/g , a = e . lastMatch . replace ( n , "\\$&" ) , i = new t ; if ( r ) for ( var o = 1 ; o <= 9 ; o ++ ) { var s = e [ "$" + o ] ; s ? ( s = s . replace ( n , "\\$&" ) , a = a . replace ( s , "(" + s + ")" ) ) : a = "()" + a , oe . call ( i , a . slice ( 0 , a . indexOf ( "(" ) + 1 ) ) , a = a . slice ( a . indexOf ( "(" ) + 1 ) } var l = se . call ( i , "" ) + a ; l = l . replace ( /(\\\(|\\\)|[^()])+/g , function ( e ) { return "[\\s\\S]{" + e . replace ( "\\" , "" ) . length + "}" } ) ; var c = new RegExp ( l , e . multiline ? "gm" : "g" ) ; c . lastIndex = e . leftContext . length , c . exec ( e . input ) } } function a ( e ) { if ( null === e ) throw new TypeError ( "Cannot convert null or undefined to object" ) ; return Object ( e ) } function i ( e ) { return ee . call ( e , "__getInternalProperties" ) ? e . _ _getInternalProperties ( ge ) : ne ( null ) } function o ( e ) { Se = e } function s ( e ) { for ( var r = e . length ; r -- ; ) { var t = e . charAt ( r ) ; t >= "a" && t <= "z" && ( e = e . slice ( 0 , r ) + t . toUpperCase ( ) + e . slice ( r + 1 ) ) } return e } function l ( e ) { return ! ! ze . test ( e ) && ( ! ke . test ( e ) && ! Fe . test ( e ) ) } function c ( e ) { var r = void 0 , t = void 0 ; e = e . toLowerCase ( ) , t = e . split ( "-" ) ; for ( var n = 1 , a = t . length ; n < a ; n ++ ) if ( 2 === t [ n ] . length ) t [ n ] = t [ n ] . toUpperCase ( ) ; else if ( 4 === t [ n ] . length ) t [ n ] = t [ n ] . charAt ( 0 ) . toUpperCase ( ) + t [ n ] . slice ( 1 ) ; else if ( 1 === t [ n ] . length && "x" !== t [ n ] ) break ; e = se . call ( t , "-" ) , ( r = e . match ( Oe ) ) && r . length > 1 && ( r . sort ( ) , e = e . replace ( RegExp ( "(?:" + Oe . source + ")+" , "i" ) , se . call ( r , "" ) ) ) , ee . call ( Ee . tags , e ) && ( e = Ee . tags [ e ] ) , t = e . split ( "-" ) ; for ( var i = 1 , o = t . length ; i < o ; i ++ ) ee . call ( Ee . subtags , t [ i ] ) ? t [ i ] = Ee . subtags [ t [ i ] ] : ee . call ( Ee . extLang , t [ i ] ) && ( t [ i ] = Ee . extLang [ t [ i ] ] [ 0 ] , 1 === i && Ee . extLang [ t [ 1 ] ] [ 1 ] === t [ 0 ] && ( t = ae . call ( t , i ++ ) , o -= 1 ) ) ; return se . call ( t , "-" ) } function u ( ) { return Se } function g ( e ) { var r = String ( e ) , t = s ( r ) ; return Le . test ( t ) !== ! 1 } function f ( e ) { if ( void 0 === e ) return new t ; var r = new t ; e = "string" == typeof e ? [ e ] : e ; for ( var n = a ( e ) , i = n . length , o = 0 ; o < i ; ) { var s = String ( o ) , u = s in n ; if ( u ) { var g = n [ s ] ; if ( null === g || "string" != typeof g && "object" !== ( "undefined" == typeof g ? "undefined" : ir . typeof ( g ) ) ) throw new TypeError ( "String or Object type expected" ) ; var f = String ( g ) ; if ( ! l ( f ) ) throw new RangeError ( "'" + f + "' is not a structurally valid language tag" ) ; f = c ( f ) , te . call ( r , f ) === - 1 && oe . call ( r , f ) } o ++ } return r } function m ( e , r ) { for ( var t = r ; t ; ) { if ( te . call ( e , t ) > - 1 ) return t ; var n = t . lastIndexOf ( "-" ) ; if ( n < 0 ) return ; n >= 2 && "-" === t . charAt ( n - 2 ) && ( n -= 2 ) , t = t . substring ( 0 , n ) } } function v ( e , t ) { for ( var n = 0 , a = t . length , i = void 0 , o = void 0 , s = void 0 ; n < a && ! i ; ) o = t [ n ] , s = String ( o ) . replace ( or , "" ) , i = m ( e , s ) , n ++ ; var l = new r ; if ( void 0 !== i ) { if ( l [ "[[locale]]" ] = i , String ( o ) !== String ( s ) ) { var c = o . match ( or ) [ 0 ] , g = o . indexOf ( "-u-" ) ; l [ "[[extension]]" ] = c , l [ "[[extensionIndex]]" ] = g } } else l [ "[[locale]]" ] = u ( ) ; return l } function d ( e , r ) { return v ( e , r ) } function h ( e , t , n , a , i ) { if ( 0 === e . length ) throw new ReferenceError ( "No locale data has been provided for this object yet." ) ; var o = n [ "[[localeMatcher]]" ] , s = void 0 ; s = "lookup" === o ? v ( e , t ) : d ( e , t ) ; var l = s [ "[[locale]]" ] , u = void 0 , g = void 0 ; if ( ee . call ( s , "[[extension]]" ) ) { var f = s [ "[[extension]]" ] , m = String . prototype . split ; u = m . call ( f , "-" ) , g = u . length } var h = new r ; h [ "[[dataLocale]]" ] = l ; for ( var p = "-u" , y = 0 , b = a . length ; y < b ; ) { var w = a [ y ] , x = i [ l ] , D = x [ w ] , j = D [ 0 ] , z = "" , k = te ; if ( void 0 !== u ) { var F = k . call ( u , w ) ; if ( F !== - 1 ) if ( F + 1 < g && u [ F + 1 ] . length > 2 ) { var O = u [ F + 1 ] , S = k . call ( D , O ) ; S !== - 1 && ( j = O , z = "-" + w + "-" + j ) } else { var E = k ( D , "true" ) ; E !== - 1 && ( j = "true" ) } } if ( ee . call ( n , "[[" + w + "]]" ) ) { var L = n [ "[[" + w + "]]" ] ; k . call ( D , L ) !== - 1 && L !== j && ( j = L , z = "" ) } h [ "[[" + w + "]]" ] = j , p += z , y ++ } if ( p . length > 2 ) { var P = l . in
! r || n . length !== r ) ; ) ; return n } throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) } , Qe = function ( e , r ) { return Object . freeze ( Object . defineProperties ( e , { raw : { value : Object . freeze ( r ) } } ) ) } , er = function ( e , r ) { return e . raw = r , e } , rr = function ( e , r , t ) { if ( e === t ) throw new ReferenceError ( r + " is not defined - temporal dead zone" ) ; return e } , tr = { } , nr = function ( e ) { return Array . isArray ( e ) ? e : Array . from ( e ) } , ar = function ( e ) { if ( Array . isArray ( e ) ) { for ( var r = 0 , t = Array ( e . length ) ; r < e . length ; r ++ ) t [ r ] = e [ r ] ; return t } return Array . from ( e ) } , ir = Object . freeze ( { jsx : Ne , asyncToGenerator : Te , classCallCheck : _e , createClass : Ie , defineEnumerableProperties : Ae , defaults : Me , defineProperty : Re , get : Ce , inherits : Ge , interopRequireDefault : Be , interopRequireWildcard : Ue , newArrowCheck : $e , objectDestructuringEmpty : Ke , objectWithoutProperties : Ye , possibleConstructorReturn : He , selfGlobal : We , set : Xe , slicedToArray : Ve , slicedToArrayLoose : Je , taggedTemplateLiteral : Qe , taggedTemplateLiteralLoose : er , temporalRef : rr , temporalUndefined : tr , toArray : nr , toConsumableArray : ar , t ypeof : Pe , extends : qe , instanceof : Ze } ) , or = /-u(?:-[0-9a-z]{2,8})+/gi , sr = { } ; sr . getCanonicalLocales = function ( e ) { var r = f ( e ) , t = [ ] ; for ( var n in r ) t . push ( r [ n ] ) ; return t } ; var lr = { BHD : 3 , BYR : 0 , XOF : 0 , BIF : 0 , XAF : 0 , CLF : 4 , CLP : 0 , KMF : 0 , DJF : 0 , XPF : 0 , GNF : 0 , ISK : 0 , IQD : 3 , JPY : 0 , JOD : 3 , KRW : 0 , KWD : 3 , LYD : 3 , OMR : 3 , PYG : 0 , RWF : 0 , TND : 3 , UGX : 0 , UYI : 0 , VUV : 0 , VND : 0 } ; re ( sr , "NumberFormat" , { configurable : ! 0 , writable : ! 0 , value : D } ) , re ( sr . NumberFormat , "prototype" , { writable : ! 1 } ) , ue . NumberFormat = { "[[availableLocales]]" : [ ] , "[[relevantExtensionKeys]]" : [ "nu" ] , "[[localeData]]" : { } } , re ( sr . NumberFormat , "supportedLocalesOf" , { configurable : ! 0 , writable : ! 0 , value : ce . call ( function ( e ) { if ( ! ee . call ( this , "[[availableLocales]]" ) ) throw new TypeError ( "supportedLocalesOf() is not a constructor" ) ; var r = n ( ) , t = arguments [ 1 ] , a = this [ "[[availableLocales]]" ] , i = f ( e ) ; return r ( ) , b ( a , i , t ) } , ue . NumberFormat ) } ) , re ( sr . NumberFormat . prototype , "format" , { configurable : ! 0 , get : k } ) , sr . NumberFormat . prototype . formatToParts = function ( e ) { var r = null !== this && "object" === ir . typeof ( this ) && i ( this ) ; if ( ! r || ! r [ "[[initializedNumberFormat]]" ] ) throw new TypeError ( "`this` value for formatToParts() is not an initialized Intl.NumberFormat object." ) ; var t = Number ( e ) ; return F ( this , t ) } ; var cr = { arab : [ "٠ " , "١ " , "٢" , "٣" , "٤" , "٥ " , "٦" , "٧ " , "٨" , "٩" ] , arabext : [ "۰ " , "۱ " , "۲" , "۳" , "۴" , "۵ " , "۶" , "۷ " , "۸" , "۹" ] , bali : [ "᭐" , "᭑" , "᭒" , "᭓" , "᭔" , "᭕" , "᭖" , "᭗" , "᭘" , "᭙" ] , beng : [ "০ " , "১" , "২" , "৩" , "৪ " , "৫" , "৬" , "৭ " , "৮" , "৯" ] , deva : [ "० " , "१" , "२" , "३" , "४" , "५" , "६" , "७" , "८" , "९" ] , fullwide : [ "0 " , "1 " , "2 " , "3 " , "4 " , "5 " , "6 " , "7 " , "8 " , "9 " ] , gujr : [ "૦ " , "૧" , "૨" , "૩" , "૪" , "૫" , "૬" , "૭" , "૮" , "૯" ] , guru : [ "੦ " , "੧ " , "੨" , "੩" , "੪ " , "੫" , "੬" , "੭" , "੮" , "੯" ] , hanidec : [ "〇 " , "一" , "二" , "三" , "四" , "五" , "六" , "七" , "八" , "九" ] , khmr : [ "០" , "១" , "២" , "៣" , "៤" , "៥" , "៦" , "៧" , "៨" , "៩" ] , knda : [ "೦ " , "೧" , "೨" , "೩" , "೪" , "೫" , "೬" , "೭" , "೮" , "೯" ] , laoo : [ "໐ " , "໑" , "໒" , "໓" , "໔" , "໕" , "໖" , "໗" , "໘" , "໙" ] , latn : [ "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ] , limb : [ "᥆" , "᥇" , "᥈" , "᥉" , "᥊" , "᥋" , "᥌" , "᥍" , "᥎" , "᥏" ] , mlym : [ "൦ " , "൧" , "൨" , "൩" , "൪" , "൫" , "൬" , "൭ " , "൮" , "൯" ] , mong : [ "᠐" , "᠑" , "᠒" , "᠓" , "᠔" , "᠕" , "᠖" , "᠗" , "᠘" , "᠙" ] , mymr : [ "၀ " , "၁" , "၂" , "၃" , "၄" , "၅" , "၆" , "၇" , "၈" , "၉" ] , orya : [ "୦ " , "୧" , "୨ " , "୩" , "୪" , "୫" , "୬" , "୭" , "୮" , "୯" ] , tamldec : [ "௦ " , "௧" , "௨" , "௩" , "௪" , "௫" , "௬" , "௭" , "௮" , "௯" ] , telu : [ "౦ " , "౧" , "౨" , "౩" , "౪" , "౫" , "౬" , "౭" , "౮" , "౯" ] , thai : [ "๐ " , "๑" , "๒" , "๓" , "๔" , "๕" , "๖" , "๗" , "๘" , "๙" ] , tibt : [ "༠" , "༡" , "༢" , "༣" , "༤" , "༥" , "༦" , "༧" , "༨" , "༩" ] } ; re ( sr . NumberFormat . prototype , "resolvedOptions" , { configurable : ! 0 , writable : ! 0 , value : function ( ) { var e = void 0 , t = new r , n = [ "locale" , "numberingSystem" , "style" , "currency" , "currencyDisplay" , "minimumIntegerDigits" , "minimumFractionDigits" , "maximumFractionDigits" , "minimumSignificantDigits" , "maximumSignificantDigits" , "useGrouping" ] , a = null !== this && "object" === ir . typeof ( this ) && i ( this ) ; if ( ! a || ! a [ "[[initializedNumberFormat]]" ] ) throw new TypeError ( " `
IntlPolyfill . _ _addLocaleData ( { locale : "en-US" , date : { ca : [ "gregory" , "buddhist" , "chinese" , "coptic" , "dangi" , "ethioaa" , "ethiopic" , "generic" , "hebrew" , "indian" , "islamic" , "islamicc" , "japanese" , "persian" , "roc" ] , hourNo0 : true , hour12 : true , formats : { short : "{1}, {0}" , medium : "{1}, {0}" , full : "{1} 'at' {0}" , long : "{1} 'at' {0}" , availableFormats : { "d" : "d" , "E" : "ccc" , Ed : "d E" , Ehm : "E h:mm a" , EHm : "E HH:mm" , Ehms : "E h:mm:ss a" , EHms : "E HH:mm:ss" , Gy : "y G" , GyMMM : "MMM y G" , GyMMMd : "MMM d, y G" , GyMMMEd : "E, MMM d, y G" , "h" : "h a" , "H" : "HH" , hm : "h:mm a" , Hm : "HH:mm" , hms : "h:mm:ss a" , Hms : "HH:mm:ss" , hmsv : "h:mm:ss a v" , Hmsv : "HH:mm:ss v" , hmv : "h:mm a v" , Hmv : "HH:mm v" , "M" : "L" , Md : "M/d" , MEd : "E, M/d" , MMM : "LLL" , MMMd : "MMM d" , MMMEd : "E, MMM d" , MMMMd : "MMMM d" , ms : "mm:ss" , "y" : "y" , yM : "M/y" , yMd : "M/d/y" , yMEd : "E, M/d/y" , yMMM : "MMM y" , yMMMd : "MMM d, y" , yMMMEd : "E, MMM d, y" , yMMMM : "MMMM y" , yQQQ : "QQQ y" , yQQQQ : "QQQQ y" } , dateFormats : { yMMMMEEEEd : "EEEE, MMMM d, y" , yMMMMd : "MMMM d, y" , yMMMd : "MMM d, y" , yMd : "M/d/yy" } , timeFormats : { hmmsszzzz : "h:mm:ss a zzzz" , hmsz : "h:mm:ss a z" , hms : "h:mm:ss a" , hm : "h:mm a" } } , calendars : { buddhist : { months : { narrow : [ "J" , "F" , "M" , "A" , "M" , "J" , "J" , "A" , "S" , "O" , "N" , "D" ] , short : [ "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ] , long : [ "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , eras : { narrow : [ "BE" ] , short : [ "BE" ] , long : [ "BE" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , chinese : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" ] , short : [ "Mo1" , "Mo2" , "Mo3" , "Mo4" , "Mo5" , "Mo6" , "Mo7" , "Mo8" , "Mo9" , "Mo10" , "Mo11" , "Mo12" ] , long : [ "Month1" , "Month2" , "Month3" , "Month4" , "Month5" , "Month6" , "Month7" , "Month8" , "Month9" , "Month10" , "Month11" , "Month12" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , coptic : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" , "13" ] , short : [ "Tout" , "Baba" , "Hator" , "Kiahk" , "Toba" , "Amshir" , "Baramhat" , "Baramouda" , "Bashans" , "Paona" , "Epep" , "Mesra" , "Nasie" ] , long : [ "Tout" , "Baba" , "Hator" , "Kiahk" , "Toba" , "Amshir" , "Baramhat" , "Baramouda" , "Bashans" , "Paona" , "Epep" , "Mesra" , "Nasie" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , eras : { narrow : [ "ERA0" , "ERA1" ] , short : [ "ERA0" , "ERA1" ] , long : [ "ERA0" , "ERA1" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , dangi : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" ] , short : [ "Mo1" , "Mo2" , "Mo3" , "Mo4" , "Mo5" , "Mo6" , "Mo7" , "Mo8" , "Mo9" , "Mo10" , "Mo11" , "Mo12" ] , long : [ "Month1" , "Month2" , "Month3" , "Month4" , "Month5" , "Month6" , "Month7" , "Month8" , "Month9" , "Month10" , "Month11" , "Month12" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , ethiopic : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" , "13" ] , short : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] , long : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , eras : { narrow : [ "ERA0" , "ERA1" ] , short : [ "ERA0" , "ERA1" ] , long : [ "ERA0" , "ERA1" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , ethioaa : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" , "13" ] , short : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] , long : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] } , days : { narrow : [ "S" , "M" , "T" , "W"