| 'use strict'; | 
| /* eslint-disable es/no-symbol -- required for testing */ | 
| var V8_VERSION = require('../internals/environment-v8-version'); | 
| var fails = require('../internals/fails'); | 
| var globalThis = require('../internals/global-this'); | 
|   | 
| var $String = globalThis.String; | 
|   | 
| // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing | 
| module.exports = !!Object.getOwnPropertySymbols && !fails(function () { | 
|   var symbol = Symbol('symbol detection'); | 
|   // Chrome 38 Symbol has incorrect toString conversion | 
|   // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances | 
|   // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, | 
|   // of course, fail. | 
|   return !$String(symbol) || !(Object(symbol) instanceof Symbol) || | 
|     // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances | 
|     !Symbol.sham && V8_VERSION && V8_VERSION < 41; | 
| }); |