'use strict'; 
 | 
var $ = require('../internals/export'); 
 | 
var globalThis = require('../internals/global-this'); 
 | 
var call = require('../internals/function-call'); 
 | 
var uncurryThis = require('../internals/function-uncurry-this'); 
 | 
var IS_PURE = require('../internals/is-pure'); 
 | 
var DESCRIPTORS = require('../internals/descriptors'); 
 | 
var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); 
 | 
var fails = require('../internals/fails'); 
 | 
var hasOwn = require('../internals/has-own-property'); 
 | 
var isPrototypeOf = require('../internals/object-is-prototype-of'); 
 | 
var anObject = require('../internals/an-object'); 
 | 
var toIndexedObject = require('../internals/to-indexed-object'); 
 | 
var toPropertyKey = require('../internals/to-property-key'); 
 | 
var $toString = require('../internals/to-string'); 
 | 
var createPropertyDescriptor = require('../internals/create-property-descriptor'); 
 | 
var nativeObjectCreate = require('../internals/object-create'); 
 | 
var objectKeys = require('../internals/object-keys'); 
 | 
var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); 
 | 
var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external'); 
 | 
var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); 
 | 
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); 
 | 
var definePropertyModule = require('../internals/object-define-property'); 
 | 
var definePropertiesModule = require('../internals/object-define-properties'); 
 | 
var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); 
 | 
var defineBuiltIn = require('../internals/define-built-in'); 
 | 
var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); 
 | 
var shared = require('../internals/shared'); 
 | 
var sharedKey = require('../internals/shared-key'); 
 | 
var hiddenKeys = require('../internals/hidden-keys'); 
 | 
var uid = require('../internals/uid'); 
 | 
var wellKnownSymbol = require('../internals/well-known-symbol'); 
 | 
var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped'); 
 | 
var defineWellKnownSymbol = require('../internals/well-known-symbol-define'); 
 | 
var defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive'); 
 | 
var setToStringTag = require('../internals/set-to-string-tag'); 
 | 
var InternalStateModule = require('../internals/internal-state'); 
 | 
var $forEach = require('../internals/array-iteration').forEach; 
 | 
  
 | 
var HIDDEN = sharedKey('hidden'); 
 | 
var SYMBOL = 'Symbol'; 
 | 
var PROTOTYPE = 'prototype'; 
 | 
  
 | 
var setInternalState = InternalStateModule.set; 
 | 
var getInternalState = InternalStateModule.getterFor(SYMBOL); 
 | 
  
 | 
var ObjectPrototype = Object[PROTOTYPE]; 
 | 
var $Symbol = globalThis.Symbol; 
 | 
var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE]; 
 | 
var RangeError = globalThis.RangeError; 
 | 
var TypeError = globalThis.TypeError; 
 | 
var QObject = globalThis.QObject; 
 | 
var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 
 | 
var nativeDefineProperty = definePropertyModule.f; 
 | 
var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; 
 | 
var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; 
 | 
var push = uncurryThis([].push); 
 | 
  
 | 
var AllSymbols = shared('symbols'); 
 | 
var ObjectPrototypeSymbols = shared('op-symbols'); 
 | 
var WellKnownSymbolsStore = shared('wks'); 
 | 
  
 | 
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 
 | 
var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; 
 | 
  
 | 
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 
 | 
var fallbackDefineProperty = function (O, P, Attributes) { 
 | 
  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); 
 | 
  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; 
 | 
  nativeDefineProperty(O, P, Attributes); 
 | 
  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { 
 | 
    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); 
 | 
  } 
 | 
}; 
 | 
  
 | 
var setSymbolDescriptor = DESCRIPTORS && fails(function () { 
 | 
  return nativeObjectCreate(nativeDefineProperty({}, 'a', { 
 | 
    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } 
 | 
  })).a !== 7; 
 | 
}) ? fallbackDefineProperty : nativeDefineProperty; 
 | 
  
 | 
var wrap = function (tag, description) { 
 | 
  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype); 
 | 
  setInternalState(symbol, { 
 | 
    type: SYMBOL, 
 | 
    tag: tag, 
 | 
    description: description 
 | 
  }); 
 | 
  if (!DESCRIPTORS) symbol.description = description; 
 | 
  return symbol; 
 | 
}; 
 | 
  
 | 
var $defineProperty = function defineProperty(O, P, Attributes) { 
 | 
  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); 
 | 
  anObject(O); 
 | 
  var key = toPropertyKey(P); 
 | 
  anObject(Attributes); 
 | 
  if (hasOwn(AllSymbols, key)) { 
 | 
    if (!Attributes.enumerable) { 
 | 
      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null))); 
 | 
      O[HIDDEN][key] = true; 
 | 
    } else { 
 | 
      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; 
 | 
      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); 
 | 
    } return setSymbolDescriptor(O, key, Attributes); 
 | 
  } return nativeDefineProperty(O, key, Attributes); 
 | 
}; 
 | 
  
 | 
var $defineProperties = function defineProperties(O, Properties) { 
 | 
  anObject(O); 
 | 
  var properties = toIndexedObject(Properties); 
 | 
  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); 
 | 
  $forEach(keys, function (key) { 
 | 
    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); 
 | 
  }); 
 | 
  return O; 
 | 
}; 
 | 
  
 | 
var $create = function create(O, Properties) { 
 | 
  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); 
 | 
}; 
 | 
  
 | 
var $propertyIsEnumerable = function propertyIsEnumerable(V) { 
 | 
  var P = toPropertyKey(V); 
 | 
  var enumerable = call(nativePropertyIsEnumerable, this, P); 
 | 
  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false; 
 | 
  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] 
 | 
    ? enumerable : true; 
 | 
}; 
 | 
  
 | 
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { 
 | 
  var it = toIndexedObject(O); 
 | 
  var key = toPropertyKey(P); 
 | 
  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return; 
 | 
  var descriptor = nativeGetOwnPropertyDescriptor(it, key); 
 | 
  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) { 
 | 
    descriptor.enumerable = true; 
 | 
  } 
 | 
  return descriptor; 
 | 
}; 
 | 
  
 | 
var $getOwnPropertyNames = function getOwnPropertyNames(O) { 
 | 
  var names = nativeGetOwnPropertyNames(toIndexedObject(O)); 
 | 
  var result = []; 
 | 
  $forEach(names, function (key) { 
 | 
    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key); 
 | 
  }); 
 | 
  return result; 
 | 
}; 
 | 
  
 | 
var $getOwnPropertySymbols = function (O) { 
 | 
  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; 
 | 
  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); 
 | 
  var result = []; 
 | 
  $forEach(names, function (key) { 
 | 
    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) { 
 | 
      push(result, AllSymbols[key]); 
 | 
    } 
 | 
  }); 
 | 
  return result; 
 | 
}; 
 | 
  
 | 
// `Symbol` constructor 
 | 
// https://tc39.es/ecma262/#sec-symbol-constructor 
 | 
if (!NATIVE_SYMBOL) { 
 | 
  $Symbol = function Symbol() { 
 | 
    if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor'); 
 | 
    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]); 
 | 
    var tag = uid(description); 
 | 
    var setter = function (value) { 
 | 
      var $this = this === undefined ? globalThis : this; 
 | 
      if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value); 
 | 
      if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false; 
 | 
      var descriptor = createPropertyDescriptor(1, value); 
 | 
      try { 
 | 
        setSymbolDescriptor($this, tag, descriptor); 
 | 
      } catch (error) { 
 | 
        if (!(error instanceof RangeError)) throw error; 
 | 
        fallbackDefineProperty($this, tag, descriptor); 
 | 
      } 
 | 
    }; 
 | 
    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); 
 | 
    return wrap(tag, description); 
 | 
  }; 
 | 
  
 | 
  SymbolPrototype = $Symbol[PROTOTYPE]; 
 | 
  
 | 
  defineBuiltIn(SymbolPrototype, 'toString', function toString() { 
 | 
    return getInternalState(this).tag; 
 | 
  }); 
 | 
  
 | 
  defineBuiltIn($Symbol, 'withoutSetter', function (description) { 
 | 
    return wrap(uid(description), description); 
 | 
  }); 
 | 
  
 | 
  propertyIsEnumerableModule.f = $propertyIsEnumerable; 
 | 
  definePropertyModule.f = $defineProperty; 
 | 
  definePropertiesModule.f = $defineProperties; 
 | 
  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; 
 | 
  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; 
 | 
  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; 
 | 
  
 | 
  wrappedWellKnownSymbolModule.f = function (name) { 
 | 
    return wrap(wellKnownSymbol(name), name); 
 | 
  }; 
 | 
  
 | 
  if (DESCRIPTORS) { 
 | 
    // https://github.com/tc39/proposal-Symbol-description 
 | 
    defineBuiltInAccessor(SymbolPrototype, 'description', { 
 | 
      configurable: true, 
 | 
      get: function description() { 
 | 
        return getInternalState(this).description; 
 | 
      } 
 | 
    }); 
 | 
    if (!IS_PURE) { 
 | 
      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { 
 | 
  Symbol: $Symbol 
 | 
}); 
 | 
  
 | 
$forEach(objectKeys(WellKnownSymbolsStore), function (name) { 
 | 
  defineWellKnownSymbol(name); 
 | 
}); 
 | 
  
 | 
$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { 
 | 
  useSetter: function () { USE_SETTER = true; }, 
 | 
  useSimple: function () { USE_SETTER = false; } 
 | 
}); 
 | 
  
 | 
$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { 
 | 
  // `Object.create` method 
 | 
  // https://tc39.es/ecma262/#sec-object.create 
 | 
  create: $create, 
 | 
  // `Object.defineProperty` method 
 | 
  // https://tc39.es/ecma262/#sec-object.defineproperty 
 | 
  defineProperty: $defineProperty, 
 | 
  // `Object.defineProperties` method 
 | 
  // https://tc39.es/ecma262/#sec-object.defineproperties 
 | 
  defineProperties: $defineProperties, 
 | 
  // `Object.getOwnPropertyDescriptor` method 
 | 
  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors 
 | 
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor 
 | 
}); 
 | 
  
 | 
$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { 
 | 
  // `Object.getOwnPropertyNames` method 
 | 
  // https://tc39.es/ecma262/#sec-object.getownpropertynames 
 | 
  getOwnPropertyNames: $getOwnPropertyNames 
 | 
}); 
 | 
  
 | 
// `Symbol.prototype[@@toPrimitive]` method 
 | 
// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive 
 | 
defineSymbolToPrimitive(); 
 | 
  
 | 
// `Symbol.prototype[@@toStringTag]` property 
 | 
// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag 
 | 
setToStringTag($Symbol, SYMBOL); 
 | 
  
 | 
hiddenKeys[HIDDEN] = true; 
 |