| 'use strict'; | 
| var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection'); | 
| var DESCRIPTORS = require('../internals/descriptors'); | 
| var globalThis = require('../internals/global-this'); | 
| var isCallable = require('../internals/is-callable'); | 
| var isObject = require('../internals/is-object'); | 
| var hasOwn = require('../internals/has-own-property'); | 
| var classof = require('../internals/classof'); | 
| var tryToString = require('../internals/try-to-string'); | 
| var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); | 
| var defineBuiltIn = require('../internals/define-built-in'); | 
| var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); | 
| var isPrototypeOf = require('../internals/object-is-prototype-of'); | 
| var getPrototypeOf = require('../internals/object-get-prototype-of'); | 
| var setPrototypeOf = require('../internals/object-set-prototype-of'); | 
| var wellKnownSymbol = require('../internals/well-known-symbol'); | 
| var uid = require('../internals/uid'); | 
| var InternalStateModule = require('../internals/internal-state'); | 
|   | 
| var enforceInternalState = InternalStateModule.enforce; | 
| var getInternalState = InternalStateModule.get; | 
| var Int8Array = globalThis.Int8Array; | 
| var Int8ArrayPrototype = Int8Array && Int8Array.prototype; | 
| var Uint8ClampedArray = globalThis.Uint8ClampedArray; | 
| var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; | 
| var TypedArray = Int8Array && getPrototypeOf(Int8Array); | 
| var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); | 
| var ObjectPrototype = Object.prototype; | 
| var TypeError = globalThis.TypeError; | 
|   | 
| var TO_STRING_TAG = wellKnownSymbol('toStringTag'); | 
| var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); | 
| var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; | 
| // Fixing native typed arrays in Opera Presto crashes the browser, see #595 | 
| var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera'; | 
| var TYPED_ARRAY_TAG_REQUIRED = false; | 
| var NAME, Constructor, Prototype; | 
|   | 
| var TypedArrayConstructorsList = { | 
|   Int8Array: 1, | 
|   Uint8Array: 1, | 
|   Uint8ClampedArray: 1, | 
|   Int16Array: 2, | 
|   Uint16Array: 2, | 
|   Int32Array: 4, | 
|   Uint32Array: 4, | 
|   Float32Array: 4, | 
|   Float64Array: 8 | 
| }; | 
|   | 
| var BigIntArrayConstructorsList = { | 
|   BigInt64Array: 8, | 
|   BigUint64Array: 8 | 
| }; | 
|   | 
| var isView = function isView(it) { | 
|   if (!isObject(it)) return false; | 
|   var klass = classof(it); | 
|   return klass === 'DataView' | 
|     || hasOwn(TypedArrayConstructorsList, klass) | 
|     || hasOwn(BigIntArrayConstructorsList, klass); | 
| }; | 
|   | 
| var getTypedArrayConstructor = function (it) { | 
|   var proto = getPrototypeOf(it); | 
|   if (!isObject(proto)) return; | 
|   var state = getInternalState(proto); | 
|   return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); | 
| }; | 
|   | 
| var isTypedArray = function (it) { | 
|   if (!isObject(it)) return false; | 
|   var klass = classof(it); | 
|   return hasOwn(TypedArrayConstructorsList, klass) | 
|     || hasOwn(BigIntArrayConstructorsList, klass); | 
| }; | 
|   | 
| var aTypedArray = function (it) { | 
|   if (isTypedArray(it)) return it; | 
|   throw new TypeError('Target is not a typed array'); | 
| }; | 
|   | 
| var aTypedArrayConstructor = function (C) { | 
|   if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C; | 
|   throw new TypeError(tryToString(C) + ' is not a typed array constructor'); | 
| }; | 
|   | 
| var exportTypedArrayMethod = function (KEY, property, forced, options) { | 
|   if (!DESCRIPTORS) return; | 
|   if (forced) for (var ARRAY in TypedArrayConstructorsList) { | 
|     var TypedArrayConstructor = globalThis[ARRAY]; | 
|     if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try { | 
|       delete TypedArrayConstructor.prototype[KEY]; | 
|     } catch (error) { | 
|       // old WebKit bug - some methods are non-configurable | 
|       try { | 
|         TypedArrayConstructor.prototype[KEY] = property; | 
|       } catch (error2) { /* empty */ } | 
|     } | 
|   } | 
|   if (!TypedArrayPrototype[KEY] || forced) { | 
|     defineBuiltIn(TypedArrayPrototype, KEY, forced ? property | 
|       : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); | 
|   } | 
| }; | 
|   | 
| var exportTypedArrayStaticMethod = function (KEY, property, forced) { | 
|   var ARRAY, TypedArrayConstructor; | 
|   if (!DESCRIPTORS) return; | 
|   if (setPrototypeOf) { | 
|     if (forced) for (ARRAY in TypedArrayConstructorsList) { | 
|       TypedArrayConstructor = globalThis[ARRAY]; | 
|       if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try { | 
|         delete TypedArrayConstructor[KEY]; | 
|       } catch (error) { /* empty */ } | 
|     } | 
|     if (!TypedArray[KEY] || forced) { | 
|       // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable | 
|       try { | 
|         return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); | 
|       } catch (error) { /* empty */ } | 
|     } else return; | 
|   } | 
|   for (ARRAY in TypedArrayConstructorsList) { | 
|     TypedArrayConstructor = globalThis[ARRAY]; | 
|     if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { | 
|       defineBuiltIn(TypedArrayConstructor, KEY, property); | 
|     } | 
|   } | 
| }; | 
|   | 
| for (NAME in TypedArrayConstructorsList) { | 
|   Constructor = globalThis[NAME]; | 
|   Prototype = Constructor && Constructor.prototype; | 
|   if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; | 
|   else NATIVE_ARRAY_BUFFER_VIEWS = false; | 
| } | 
|   | 
| for (NAME in BigIntArrayConstructorsList) { | 
|   Constructor = globalThis[NAME]; | 
|   Prototype = Constructor && Constructor.prototype; | 
|   if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; | 
| } | 
|   | 
| // WebKit bug - typed arrays constructors prototype is Object.prototype | 
| if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { | 
|   // eslint-disable-next-line no-shadow -- safe | 
|   TypedArray = function TypedArray() { | 
|     throw new TypeError('Incorrect invocation'); | 
|   }; | 
|   if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { | 
|     if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray); | 
|   } | 
| } | 
|   | 
| if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { | 
|   TypedArrayPrototype = TypedArray.prototype; | 
|   if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { | 
|     if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype); | 
|   } | 
| } | 
|   | 
| // WebKit bug - one more object in Uint8ClampedArray prototype chain | 
| if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { | 
|   setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); | 
| } | 
|   | 
| if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) { | 
|   TYPED_ARRAY_TAG_REQUIRED = true; | 
|   defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, { | 
|     configurable: true, | 
|     get: function () { | 
|       return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; | 
|     } | 
|   }); | 
|   for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) { | 
|     createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME); | 
|   } | 
| } | 
|   | 
| module.exports = { | 
|   NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, | 
|   TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, | 
|   aTypedArray: aTypedArray, | 
|   aTypedArrayConstructor: aTypedArrayConstructor, | 
|   exportTypedArrayMethod: exportTypedArrayMethod, | 
|   exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, | 
|   getTypedArrayConstructor: getTypedArrayConstructor, | 
|   isView: isView, | 
|   isTypedArray: isTypedArray, | 
|   TypedArray: TypedArray, | 
|   TypedArrayPrototype: TypedArrayPrototype | 
| }; |