Socket
Socket
Sign inDemoInstall

detect-gpu

Package Overview
Dependencies
Maintainers
1
Versions
194
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

detect-gpu - npm Package Compare versions

Comparing version 0.0.3 to 0.0.4

2

dist/detect-gpu.js

@@ -131,3 +131,3 @@ (function webpackUniversalModuleDefinition(root, factory) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony import */ var _benchmark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./benchmark */ \"./benchmark.js\");\n/* harmony import */ var _device__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./device */ \"./device.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./utilities.js\");\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n// Data\n\n\n// Device\n\n\n// Utilities\n\n\nvar device = new _device__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\nvar gl = Object(_utilities__WEBPACK_IMPORTED_MODULE_2__[\"isWebGLSupported\"])();\nvar glExtensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');\nvar unmaskedRenderer = glExtensionDebugRendererInfo && gl.getParameter(glExtensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL).toLowerCase();\nvar renderer = unmaskedRenderer || gl.getParameter(gl.SHADING_LANGUAGE_VERSION).toLowerCase();\nvar versionNumber = parseInt(renderer.slice().replace(/[\\D]/g, ''), 10);\n\n// Blacklisted GPU\n// const renderer = 'radeon hd 6970m';\n\n// Example GTX 1080 Ti\n// const renderer = 'NVIDIA GeForce GTX 1080 Ti (Desktop)'.toLowerCase();\n\n// S6\n// const renderer = 'Mali-T760'.toLowerCase();\n\n// S8\n// const renderer = 'Mali-G72'.toLowerCase();\n\n// Pixel 2\n// const renderer = 'Adreno (TM) 540'.toLowerCase();\n\n// iPhone 5s\n// const renderer = 'WebGL 1.0 (OpenGL ES 2.0 Apple A8 GPU - 50.6.11)'.toLowerCase();\n\n// iPhone 6S\n// const renderer = 'Apple A11 GPU'.toLowerCase();\n\nfunction getGPUTier(mobileBenchmarkPercentages, desktopBenchmarkPercentages) {\n var mobileBenchmarkTiers = Object(_utilities__WEBPACK_IMPORTED_MODULE_2__[\"getBenchmarkByPercentage\"])(_benchmark__WEBPACK_IMPORTED_MODULE_0__[\"BENCHMARK_SCORE_MOBILE\"], mobileBenchmarkPercentages);\n\n var desktopBenchmarkTiers = Object(_utilities__WEBPACK_IMPORTED_MODULE_2__[\"getBenchmarkByPercentage\"])(_benchmark__WEBPACK_IMPORTED_MODULE_0__[\"BENCHMARK_SCORE_DESKTOP\"], desktopBenchmarkPercentages);\n\n // GPU_BLACKLIST\n // - https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers\n // - https://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists\n // - https://chromium.googlesource.com/chromium/src/gpu/+/master/config/software_rendering_list.json\n var GPU_BLACKLIST = /(radeon hd 6970m|radeon hd 6770m|radeon hd 6490m|radeon hd 6630m|radeon hd 6750m|radeon hd 5750|radeon hd 5670|radeon hd 4850|radeon hd 4870|radeon hd 4670|geforce 9400m|geforce 320m|geforce 330m|geforce gt 130|geforce gt 120|geforce gtx 285|geforce 8600|geforce 9600m|geforce 9400m|geforce 8800 gs|geforce 8800 gt|quadro fx 5|quadro fx 4|radeon hd 2600|radeon hd 2400|radeon hd 2600|radeon r9 200|mali-4|mali-3|mali-2)/.test(renderer);\n\n if (!gl || GPU_BLACKLIST) {\n if (device.mobile || device.tablet) {\n return 'GPU_MOBILE_TIER_0';\n }\n\n return 'GPU_DESKTOP_TIER_0';\n }\n\n if (device.mobile || device.tablet) {\n // Mobile\n var isRendererAdreno = renderer.includes('adreno');\n var isRendererApple = renderer.includes('apple');\n var isRendererMali = renderer.includes('mali') && !renderer.includes('mali-t');\n var isRendererMaliT = renderer.includes('mali-t');\n var _isRendererNVIDIA = renderer.includes('nvidia');\n var isRendererPowerVR = renderer.includes('powervr');\n\n var mobileTier = void 0;\n\n mobileBenchmarkTiers.some(function (rawTier, i) {\n return rawTier.some(function (rawEntry) {\n var entry = rawEntry.toLowerCase().split('- ')[1];\n\n if (entry.includes('adreno') && isRendererAdreno || entry.includes('apple') && isRendererApple || entry.includes('mali') && !entry.includes('mali-t') && isRendererMali || entry.includes('mali-t') && isRendererMaliT || entry.includes('nvidia') && _isRendererNVIDIA || entry.includes('powervr') && isRendererPowerVR) {\n if (entry.includes(versionNumber)) {\n mobileTier = 'GPU_MOBILE_TIER_' + i;\n }\n }\n });\n });\n\n if (mobileTier === undefined) {\n console.log('Matching GPU tier could not be found, using fallback: GPU_MOBILE_TIER_1');\n mobileTier = 'GPU_MOBILE_TIER_1';\n }\n\n return mobileTier;\n }\n\n // Desktop\n var isRendererIntel = renderer.includes('intel');\n var isRendererAMD = renderer.includes('amd');\n var isRendererNVIDIA = renderer.includes('nvidia');\n var desktopTier = void 0;\n\n desktopBenchmarkTiers.forEach(function (rawTier, i) {\n return rawTier.forEach(function (rawEntry) {\n var entry = rawEntry.toLowerCase().split('- ')[1];\n\n if (entry.includes('intel') && isRendererIntel || entry.includes('amd') && isRendererAMD || entry.includes('nvidia') && isRendererNVIDIA) {\n if (entry.includes(versionNumber)) {\n desktopTier = 'GPU_DESKTOP_TIER_' + i;\n }\n }\n });\n });\n\n if (desktopTier === undefined) {\n console.log('Matching GPU tier could not be found, using fallback: GPU_DESKTOP_TIER_1');\n desktopTier = 'GPU_DESKTOP_TIER_1';\n }\n\n return desktopTier;\n}\n\nfunction register() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _extends(this, options);\n\n // Benchmark listing is reversed so that if multiple instances of a GPU is found the highest one is used\n // Take for example G72, it is reported only as G72 to the browser but can mean G72 MP3, G72 MP12 and G72 MP18.\n // It will in this case take the highest tier in order to be future proof (assuming G72 becomes more powerful over time)\n\n // Desktop GPU percentages\n // 15% TIER_0\n // 35% TIER_1\n // 30% TIER_2\n // 20% TIER_3\n this.BENCHMARK_TIER_PERCENTAGES_MOBILE = [15, 35, 30, 20];\n\n // Mobile GPU percentages\n // 15% TIER_0\n // 35% TIER_1\n // 30% TIER_2\n // 20% TIER_3\n this.BENCHMARK_TIER_PERCENTAGES_DESKTOP = [15, 35, 30, 20];\n\n var GPU_TIER = getGPUTier(this.BENCHMARK_TIER_PERCENTAGES_MOBILE, this.BENCHMARK_TIER_PERCENTAGES_DESKTOP);\n\n return {\n GPU_TIER: GPU_TIER,\n DETECTED_RENDERER: renderer\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0RldGVjdEdQVS9zcmMvaW5kZXguanM/MTJkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEYXRhXG5pbXBvcnQgeyBCRU5DSE1BUktfU0NPUkVfREVTS1RPUCwgQkVOQ0hNQVJLX1NDT1JFX01PQklMRSB9IGZyb20gJy4vYmVuY2htYXJrJztcblxuLy8gRGV2aWNlXG5pbXBvcnQgRGV2aWNlIGZyb20gJy4vZGV2aWNlJztcblxuLy8gVXRpbGl0aWVzXG5pbXBvcnQgeyBpc1dlYkdMU3VwcG9ydGVkLCBnZXRCZW5jaG1hcmtCeVBlcmNlbnRhZ2UgfSBmcm9tICcuL3V0aWxpdGllcyc7XG5cbmNvbnN0IGRldmljZSA9IG5ldyBEZXZpY2UoKTtcbmNvbnN0IGdsID0gaXNXZWJHTFN1cHBvcnRlZCgpO1xuY29uc3QgZ2xFeHRlbnNpb25EZWJ1Z1JlbmRlcmVySW5mbyA9IGdsLmdldEV4dGVuc2lvbignV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbycpO1xuY29uc3QgdW5tYXNrZWRSZW5kZXJlciA9IGdsRXh0ZW5zaW9uRGVidWdSZW5kZXJlckluZm9cbiAgJiYgZ2wuZ2V0UGFyYW1ldGVyKGdsRXh0ZW5zaW9uRGVidWdSZW5kZXJlckluZm8uVU5NQVNLRURfUkVOREVSRVJfV0VCR0wpLnRvTG93ZXJDYXNlKCk7XG5jb25zdCByZW5kZXJlciA9IHVubWFza2VkUmVuZGVyZXIgfHwgZ2wuZ2V0UGFyYW1ldGVyKGdsLlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTikudG9Mb3dlckNhc2UoKTtcbmNvbnN0IHZlcnNpb25OdW1iZXIgPSBwYXJzZUludChyZW5kZXJlci5zbGljZSgpLnJlcGxhY2UoL1tcXERdL2csICcnKSwgMTApO1xuXG4vLyBCbGFja2xpc3RlZCBHUFVcbi8vIGNvbnN0IHJlbmRlcmVyID0gJ3JhZGVvbiBoZCA2OTcwbSc7XG5cbi8vIEV4YW1wbGUgR1RYIDEwODAgVGlcbi8vIGNvbnN0IHJlbmRlcmVyID0gJ05WSURJQSBHZUZvcmNlIEdUWCAxMDgwIFRpIChEZXNrdG9wKScudG9Mb3dlckNhc2UoKTtcblxuLy8gUzZcbi8vIGNvbnN0IHJlbmRlcmVyID0gJ01hbGktVDc2MCcudG9Mb3dlckNhc2UoKTtcblxuLy8gUzhcbi8vIGNvbnN0IHJlbmRlcmVyID0gJ01hbGktRzcyJy50b0xvd2VyQ2FzZSgpO1xuXG4vLyBQaXhlbCAyXG4vLyBjb25zdCByZW5kZXJlciA9ICdBZHJlbm8gKFRNKSA1NDAnLnRvTG93ZXJDYXNlKCk7XG5cbi8vIGlQaG9uZSA1c1xuLy8gY29uc3QgcmVuZGVyZXIgPSAnV2ViR0wgMS4wIChPcGVuR0wgRVMgMi4wIEFwcGxlIEE4IEdQVSAtIDUwLjYuMTEpJy50b0xvd2VyQ2FzZSgpO1xuXG4vLyBpUGhvbmUgNlNcbi8vIGNvbnN0IHJlbmRlcmVyID0gJ0FwcGxlIEExMSBHUFUnLnRvTG93ZXJDYXNlKCk7XG5cbmZ1bmN0aW9uIGdldEdQVVRpZXIobW9iaWxlQmVuY2htYXJrUGVyY2VudGFnZXMsIGRlc2t0b3BCZW5jaG1hcmtQZXJjZW50YWdlcykge1xuICBjb25zdCBtb2JpbGVCZW5jaG1hcmtUaWVycyA9IGdldEJlbmNobWFya0J5UGVyY2VudGFnZShcbiAgICBCRU5DSE1BUktfU0NPUkVfTU9CSUxFLFxuICAgIG1vYmlsZUJlbmNobWFya1BlcmNlbnRhZ2VzLFxuICApO1xuXG4gIGNvbnN0IGRlc2t0b3BCZW5jaG1hcmtUaWVycyA9IGdldEJlbmNobWFya0J5UGVyY2VudGFnZShcbiAgICBCRU5DSE1BUktfU0NPUkVfREVTS1RPUCxcbiAgICBkZXNrdG9wQmVuY2htYXJrUGVyY2VudGFnZXMsXG4gICk7XG5cbiAgLy8gR1BVX0JMQUNLTElTVFxuICAvLyAtIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9CbG9ja2xpc3RpbmcvQmxvY2tlZF9HcmFwaGljc19Ecml2ZXJzXG4gIC8vIC0gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvd2ViZ2wvd2lraS9CbGFja2xpc3RzQW5kV2hpdGVsaXN0c1xuICAvLyAtIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvZ3B1LysvbWFzdGVyL2NvbmZpZy9zb2Z0d2FyZV9yZW5kZXJpbmdfbGlzdC5qc29uXG4gIGNvbnN0IEdQVV9CTEFDS0xJU1QgPSAvKHJhZGVvbiBoZCA2OTcwbXxyYWRlb24gaGQgNjc3MG18cmFkZW9uIGhkIDY0OTBtfHJhZGVvbiBoZCA2NjMwbXxyYWRlb24gaGQgNjc1MG18cmFkZW9uIGhkIDU3NTB8cmFkZW9uIGhkIDU2NzB8cmFkZW9uIGhkIDQ4NTB8cmFkZW9uIGhkIDQ4NzB8cmFkZW9uIGhkIDQ2NzB8Z2Vmb3JjZSA5NDAwbXxnZWZvcmNlIDMyMG18Z2Vmb3JjZSAzMzBtfGdlZm9yY2UgZ3QgMTMwfGdlZm9yY2UgZ3QgMTIwfGdlZm9yY2UgZ3R4IDI4NXxnZWZvcmNlIDg2MDB8Z2Vmb3JjZSA5NjAwbXxnZWZvcmNlIDk0MDBtfGdlZm9yY2UgODgwMCBnc3xnZWZvcmNlIDg4MDAgZ3R8cXVhZHJvIGZ4IDV8cXVhZHJvIGZ4IDR8cmFkZW9uIGhkIDI2MDB8cmFkZW9uIGhkIDI0MDB8cmFkZW9uIGhkIDI2MDB8cmFkZW9uIHI5IDIwMHxtYWxpLTR8bWFsaS0zfG1hbGktMikvLnRlc3QoXG4gICAgcmVuZGVyZXIsXG4gICk7XG5cbiAgaWYgKCFnbCB8fCBHUFVfQkxBQ0tMSVNUKSB7XG4gICAgaWYgKGRldmljZS5tb2JpbGUgfHwgZGV2aWNlLnRhYmxldCkge1xuICAgICAgcmV0dXJuICdHUFVfTU9CSUxFX1RJRVJfMCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdHUFVfREVTS1RPUF9USUVSXzAnO1xuICB9XG5cbiAgaWYgKGRldmljZS5tb2JpbGUgfHwgZGV2aWNlLnRhYmxldCkge1xuICAgIC8vIE1vYmlsZVxuICAgIGNvbnN0IGlzUmVuZGVyZXJBZHJlbm8gPSByZW5kZXJlci5pbmNsdWRlcygnYWRyZW5vJyk7XG4gICAgY29uc3QgaXNSZW5kZXJlckFwcGxlID0gcmVuZGVyZXIuaW5jbHVkZXMoJ2FwcGxlJyk7XG4gICAgY29uc3QgaXNSZW5kZXJlck1hbGkgPSByZW5kZXJlci5pbmNsdWRlcygnbWFsaScpICYmICFyZW5kZXJlci5pbmNsdWRlcygnbWFsaS10Jyk7XG4gICAgY29uc3QgaXNSZW5kZXJlck1hbGlUID0gcmVuZGVyZXIuaW5jbHVkZXMoJ21hbGktdCcpO1xuICAgIGNvbnN0IGlzUmVuZGVyZXJOVklESUEgPSByZW5kZXJlci5pbmNsdWRlcygnbnZpZGlhJyk7XG4gICAgY29uc3QgaXNSZW5kZXJlclBvd2VyVlIgPSByZW5kZXJlci5pbmNsdWRlcygncG93ZXJ2cicpO1xuXG4gICAgbGV0IG1vYmlsZVRpZXI7XG5cbiAgICBtb2JpbGVCZW5jaG1hcmtUaWVycy5zb21lKChyYXdUaWVyLCBpKSA9PiByYXdUaWVyLnNvbWUoKHJhd0VudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmF3RW50cnkudG9Mb3dlckNhc2UoKS5zcGxpdCgnLSAnKVsxXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGVudHJ5LmluY2x1ZGVzKCdhZHJlbm8nKSAmJiBpc1JlbmRlcmVyQWRyZW5vKVxuICAgICAgICAgIHx8IChlbnRyeS5pbmNsdWRlcygnYXBwbGUnKSAmJiBpc1JlbmRlcmVyQXBwbGUpXG4gICAgICAgICAgfHwgKGVudHJ5LmluY2x1ZGVzKCdtYWxpJykgJiYgIWVudHJ5LmluY2x1ZGVzKCdtYWxpLXQnKSAmJiBpc1JlbmRlcmVyTWFsaSlcbiAgICAgICAgICB8fCAoZW50cnkuaW5jbHVkZXMoJ21hbGktdCcpICYmIGlzUmVuZGVyZXJNYWxpVClcbiAgICAgICAgICB8fCAoZW50cnkuaW5jbHVkZXMoJ252aWRpYScpICYmIGlzUmVuZGVyZXJOVklESUEpXG4gICAgICAgICAgfHwgKGVudHJ5LmluY2x1ZGVzKCdwb3dlcnZyJykgJiYgaXNSZW5kZXJlclBvd2VyVlIpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChlbnRyeS5pbmNsdWRlcyh2ZXJzaW9uTnVtYmVyKSkge1xuICAgICAgICAgICAgbW9iaWxlVGllciA9IGBHUFVfTU9CSUxFX1RJRVJfJHtpfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICBpZiAobW9iaWxlVGllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnTWF0Y2hpbmcgR1BVIHRpZXIgY291bGQgbm90IGJlIGZvdW5kLCB1c2luZyBmYWxsYmFjazogR1BVX01PQklMRV9USUVSXzEnKTtcbiAgICAgIG1vYmlsZVRpZXIgPSAnR1BVX01PQklMRV9USUVSXzEnO1xuICAgIH1cblxuICAgIHJldHVybiBtb2JpbGVUaWVyO1xuICB9XG5cbiAgLy8gRGVza3RvcFxuICBjb25zdCBpc1JlbmRlcmVySW50ZWwgPSByZW5kZXJlci5pbmNsdWRlcygnaW50ZWwnKTtcbiAgY29uc3QgaXNSZW5kZXJlckFNRCA9IHJlbmRlcmVyLmluY2x1ZGVzKCdhbWQnKTtcbiAgY29uc3QgaXNSZW5kZXJlck5WSURJQSA9IHJlbmRlcmVyLmluY2x1ZGVzKCdudmlkaWEnKTtcbiAgbGV0IGRlc2t0b3BUaWVyO1xuXG4gIGRlc2t0b3BCZW5jaG1hcmtUaWVycy5mb3JFYWNoKChyYXdUaWVyLCBpKSA9PiByYXdUaWVyLmZvckVhY2goKHJhd0VudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IHJhd0VudHJ5LnRvTG93ZXJDYXNlKCkuc3BsaXQoJy0gJylbMV07XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGVudHJ5LmluY2x1ZGVzKCdpbnRlbCcpICYmIGlzUmVuZGVyZXJJbnRlbClcbiAgICAgICAgfHwgKGVudHJ5LmluY2x1ZGVzKCdhbWQnKSAmJiBpc1JlbmRlcmVyQU1EKVxuICAgICAgICB8fCAoZW50cnkuaW5jbHVkZXMoJ252aWRpYScpICYmIGlzUmVuZGVyZXJOVklESUEpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGVudHJ5LmluY2x1ZGVzKHZlcnNpb25OdW1iZXIpKSB7XG4gICAgICAgICAgZGVza3RvcFRpZXIgPSBgR1BVX0RFU0tUT1BfVElFUl8ke2l9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcblxuICBpZiAoZGVza3RvcFRpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUubG9nKCdNYXRjaGluZyBHUFUgdGllciBjb3VsZCBub3QgYmUgZm91bmQsIHVzaW5nIGZhbGxiYWNrOiBHUFVfREVTS1RPUF9USUVSXzEnKTtcbiAgICBkZXNrdG9wVGllciA9ICdHUFVfREVTS1RPUF9USUVSXzEnO1xuICB9XG5cbiAgcmV0dXJuIGRlc2t0b3BUaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIob3B0aW9ucyA9IHt9KSB7XG4gIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucyk7XG5cbiAgLy8gQmVuY2htYXJrIGxpc3RpbmcgaXMgcmV2ZXJzZWQgc28gdGhhdCBpZiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSBHUFUgaXMgZm91bmQgdGhlIGhpZ2hlc3Qgb25lIGlzIHVzZWRcbiAgLy8gVGFrZSBmb3IgZXhhbXBsZSBHNzIsIGl0IGlzIHJlcG9ydGVkIG9ubHkgYXMgRzcyIHRvIHRoZSBicm93c2VyIGJ1dCBjYW4gbWVhbiBHNzIgTVAzLCBHNzIgTVAxMiBhbmQgRzcyIE1QMTguXG4gIC8vIEl0IHdpbGwgaW4gdGhpcyBjYXNlIHRha2UgdGhlIGhpZ2hlc3QgdGllciBpbiBvcmRlciB0byBiZSBmdXR1cmUgcHJvb2YgKGFzc3VtaW5nIEc3MiBiZWNvbWVzIG1vcmUgcG93ZXJmdWwgb3ZlciB0aW1lKVxuXG4gIC8vIERlc2t0b3AgR1BVIHBlcmNlbnRhZ2VzXG4gIC8vIDE1JSBUSUVSXzBcbiAgLy8gMzUlIFRJRVJfMVxuICAvLyAzMCUgVElFUl8yXG4gIC8vIDIwJSBUSUVSXzNcbiAgdGhpcy5CRU5DSE1BUktfVElFUl9QRVJDRU5UQUdFU19NT0JJTEUgPSBbMTUsIDM1LCAzMCwgMjBdO1xuXG4gIC8vIE1vYmlsZSBHUFUgcGVyY2VudGFnZXNcbiAgLy8gMTUlIFRJRVJfMFxuICAvLyAzNSUgVElFUl8xXG4gIC8vIDMwJSBUSUVSXzJcbiAgLy8gMjAlIFRJRVJfM1xuICB0aGlzLkJFTkNITUFSS19USUVSX1BFUkNFTlRBR0VTX0RFU0tUT1AgPSBbMTUsIDM1LCAzMCwgMjBdO1xuXG4gIGNvbnN0IEdQVV9USUVSID0gZ2V0R1BVVGllcihcbiAgICB0aGlzLkJFTkNITUFSS19USUVSX1BFUkNFTlRBR0VTX01PQklMRSxcbiAgICB0aGlzLkJFTkNITUFSS19USUVSX1BFUkNFTlRBR0VTX0RFU0tUT1AsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBHUFVfVElFUixcbiAgICBERVRFQ1RFRF9SRU5ERVJFUjogcmVuZGVyZXIsXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFDQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUNBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./index.js\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony import */ var _benchmark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./benchmark */ \"./benchmark.js\");\n/* harmony import */ var _device__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./device */ \"./device.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./utilities.js\");\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n// Data\n\n\n// Device\n\n\n// Utilities\n\n\nvar device = new _device__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\nvar gl = Object(_utilities__WEBPACK_IMPORTED_MODULE_2__[\"isWebGLSupported\"])();\nvar glExtensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');\nvar renderer = glExtensionDebugRendererInfo && gl.getParameter(glExtensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL).toLowerCase();\nvar versionNumber = parseInt(renderer.slice().replace(/[\\D]/g, ''), 10);\n\n// Blacklisted GPU\n// const renderer = 'radeon hd 6970m';\n\n// Example GTX 1080 Ti\n// const renderer = 'NVIDIA GeForce GTX 1080 Ti (Desktop)'.toLowerCase();\n\n// S6\n// const renderer = 'Mali-T760'.toLowerCase();\n\n// S8\n// const renderer = 'Mali-G72'.toLowerCase();\n\n// Pixel 2\n// const renderer = 'Adreno (TM) 540'.toLowerCase();\n\n// iPhone 5s\n// const renderer = 'WebGL 1.0 (OpenGL ES 2.0 Apple A8 GPU - 50.6.11)'.toLowerCase();\n\n// iPhone 6S\n// const renderer = 'Apple A11 GPU'.toLowerCase();\n\nfunction getGPUTier(mobileBenchmarkPercentages, desktopBenchmarkPercentages) {\n var mobileBenchmarkTiers = Object(_utilities__WEBPACK_IMPORTED_MODULE_2__[\"getBenchmarkByPercentage\"])(_benchmark__WEBPACK_IMPORTED_MODULE_0__[\"BENCHMARK_SCORE_MOBILE\"], mobileBenchmarkPercentages);\n\n var desktopBenchmarkTiers = Object(_utilities__WEBPACK_IMPORTED_MODULE_2__[\"getBenchmarkByPercentage\"])(_benchmark__WEBPACK_IMPORTED_MODULE_0__[\"BENCHMARK_SCORE_DESKTOP\"], desktopBenchmarkPercentages);\n\n // GPU_BLACKLIST\n // - https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers\n // - https://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists\n // - https://chromium.googlesource.com/chromium/src/gpu/+/master/config/software_rendering_list.json\n var GPU_BLACKLIST = /(radeon hd 6970m|radeon hd 6770m|radeon hd 6490m|radeon hd 6630m|radeon hd 6750m|radeon hd 5750|radeon hd 5670|radeon hd 4850|radeon hd 4870|radeon hd 4670|geforce 9400m|geforce 320m|geforce 330m|geforce gt 130|geforce gt 120|geforce gtx 285|geforce 8600|geforce 9600m|geforce 9400m|geforce 8800 gs|geforce 8800 gt|quadro fx 5|quadro fx 4|radeon hd 2600|radeon hd 2400|radeon hd 2600|radeon r9 200|mali-4|mali-3|mali-2)/.test(renderer);\n\n if (!gl || GPU_BLACKLIST) {\n if (device.mobile || device.tablet) {\n return 'GPU_MOBILE_TIER_0';\n }\n\n return 'GPU_DESKTOP_TIER_0';\n }\n\n if (!renderer) {\n if (device.mobile || device.tablet) {\n return 'GPU_MOBILE_TIER_1';\n }\n\n return 'GPU_DESKTOP_TIER_1';\n }\n\n if (device.mobile || device.tablet) {\n // Mobile\n var isRendererAdreno = renderer.includes('adreno');\n var isRendererApple = renderer.includes('apple');\n var isRendererMali = renderer.includes('mali') && !renderer.includes('mali-t');\n var isRendererMaliT = renderer.includes('mali-t');\n var _isRendererNVIDIA = renderer.includes('nvidia');\n var isRendererPowerVR = renderer.includes('powervr');\n\n var mobileTier = void 0;\n\n mobileBenchmarkTiers.some(function (rawTier, i) {\n return rawTier.some(function (rawEntry) {\n var entry = rawEntry.toLowerCase().split('- ')[1];\n\n if (entry.includes('adreno') && isRendererAdreno || entry.includes('apple') && isRendererApple || entry.includes('mali') && !entry.includes('mali-t') && isRendererMali || entry.includes('mali-t') && isRendererMaliT || entry.includes('nvidia') && _isRendererNVIDIA || entry.includes('powervr') && isRendererPowerVR) {\n if (entry.includes(versionNumber)) {\n mobileTier = 'GPU_MOBILE_TIER_' + i;\n }\n }\n });\n });\n\n if (mobileTier === undefined) {\n console.log('Matching GPU tier could not be found, using fallback: GPU_MOBILE_TIER_1');\n mobileTier = 'GPU_MOBILE_TIER_1';\n }\n\n return mobileTier;\n }\n\n // Desktop\n var isRendererIntel = renderer.includes('intel');\n var isRendererAMD = renderer.includes('amd');\n var isRendererNVIDIA = renderer.includes('nvidia');\n var desktopTier = void 0;\n\n desktopBenchmarkTiers.forEach(function (rawTier, i) {\n return rawTier.forEach(function (rawEntry) {\n var entry = rawEntry.toLowerCase().split('- ')[1];\n\n if (entry.includes('intel') && isRendererIntel || entry.includes('amd') && isRendererAMD || entry.includes('nvidia') && isRendererNVIDIA) {\n if (entry.includes(versionNumber)) {\n desktopTier = 'GPU_DESKTOP_TIER_' + i;\n }\n }\n });\n });\n\n if (desktopTier === undefined) {\n console.log('Matching GPU tier could not be found, using fallback: GPU_DESKTOP_TIER_1');\n desktopTier = 'GPU_DESKTOP_TIER_1';\n }\n\n return desktopTier;\n}\n\nfunction register() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _extends(this, options);\n\n // Benchmark listing is reversed so that if multiple instances of a GPU is found the highest one is used\n // Take for example G72, it is reported only as G72 to the browser but can mean G72 MP3, G72 MP12 and G72 MP18.\n // It will in this case take the highest tier in order to be future proof (assuming G72 becomes more powerful over time)\n\n // Desktop GPU percentages\n // 15% TIER_0\n // 35% TIER_1\n // 30% TIER_2\n // 20% TIER_3\n this.BENCHMARK_TIER_PERCENTAGES_MOBILE = [15, 35, 30, 20];\n\n // Mobile GPU percentages\n // 15% TIER_0\n // 35% TIER_1\n // 30% TIER_2\n // 20% TIER_3\n this.BENCHMARK_TIER_PERCENTAGES_DESKTOP = [15, 35, 30, 20];\n\n var GPU_TIER = getGPUTier(this.BENCHMARK_TIER_PERCENTAGES_MOBILE, this.BENCHMARK_TIER_PERCENTAGES_DESKTOP);\n\n return {\n GPU_TIER: GPU_TIER,\n DETECTED_RENDERER: renderer\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0RldGVjdEdQVS9zcmMvaW5kZXguanM/MTJkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEYXRhXG5pbXBvcnQgeyBCRU5DSE1BUktfU0NPUkVfREVTS1RPUCwgQkVOQ0hNQVJLX1NDT1JFX01PQklMRSB9IGZyb20gJy4vYmVuY2htYXJrJztcblxuLy8gRGV2aWNlXG5pbXBvcnQgRGV2aWNlIGZyb20gJy4vZGV2aWNlJztcblxuLy8gVXRpbGl0aWVzXG5pbXBvcnQgeyBpc1dlYkdMU3VwcG9ydGVkLCBnZXRCZW5jaG1hcmtCeVBlcmNlbnRhZ2UgfSBmcm9tICcuL3V0aWxpdGllcyc7XG5cbmNvbnN0IGRldmljZSA9IG5ldyBEZXZpY2UoKTtcbmNvbnN0IGdsID0gaXNXZWJHTFN1cHBvcnRlZCgpO1xuY29uc3QgZ2xFeHRlbnNpb25EZWJ1Z1JlbmRlcmVySW5mbyA9IGdsLmdldEV4dGVuc2lvbignV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbycpO1xuY29uc3QgcmVuZGVyZXIgPSBnbEV4dGVuc2lvbkRlYnVnUmVuZGVyZXJJbmZvXG4gICYmIGdsLmdldFBhcmFtZXRlcihnbEV4dGVuc2lvbkRlYnVnUmVuZGVyZXJJbmZvLlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMKS50b0xvd2VyQ2FzZSgpO1xuY29uc3QgdmVyc2lvbk51bWJlciA9IHBhcnNlSW50KHJlbmRlcmVyLnNsaWNlKCkucmVwbGFjZSgvW1xcRF0vZywgJycpLCAxMCk7XG5cbi8vIEJsYWNrbGlzdGVkIEdQVVxuLy8gY29uc3QgcmVuZGVyZXIgPSAncmFkZW9uIGhkIDY5NzBtJztcblxuLy8gRXhhbXBsZSBHVFggMTA4MCBUaVxuLy8gY29uc3QgcmVuZGVyZXIgPSAnTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkgKERlc2t0b3ApJy50b0xvd2VyQ2FzZSgpO1xuXG4vLyBTNlxuLy8gY29uc3QgcmVuZGVyZXIgPSAnTWFsaS1UNzYwJy50b0xvd2VyQ2FzZSgpO1xuXG4vLyBTOFxuLy8gY29uc3QgcmVuZGVyZXIgPSAnTWFsaS1HNzInLnRvTG93ZXJDYXNlKCk7XG5cbi8vIFBpeGVsIDJcbi8vIGNvbnN0IHJlbmRlcmVyID0gJ0FkcmVubyAoVE0pIDU0MCcudG9Mb3dlckNhc2UoKTtcblxuLy8gaVBob25lIDVzXG4vLyBjb25zdCByZW5kZXJlciA9ICdXZWJHTCAxLjAgKE9wZW5HTCBFUyAyLjAgQXBwbGUgQTggR1BVIC0gNTAuNi4xMSknLnRvTG93ZXJDYXNlKCk7XG5cbi8vIGlQaG9uZSA2U1xuLy8gY29uc3QgcmVuZGVyZXIgPSAnQXBwbGUgQTExIEdQVScudG9Mb3dlckNhc2UoKTtcblxuZnVuY3Rpb24gZ2V0R1BVVGllcihtb2JpbGVCZW5jaG1hcmtQZXJjZW50YWdlcywgZGVza3RvcEJlbmNobWFya1BlcmNlbnRhZ2VzKSB7XG4gIGNvbnN0IG1vYmlsZUJlbmNobWFya1RpZXJzID0gZ2V0QmVuY2htYXJrQnlQZXJjZW50YWdlKFxuICAgIEJFTkNITUFSS19TQ09SRV9NT0JJTEUsXG4gICAgbW9iaWxlQmVuY2htYXJrUGVyY2VudGFnZXMsXG4gICk7XG5cbiAgY29uc3QgZGVza3RvcEJlbmNobWFya1RpZXJzID0gZ2V0QmVuY2htYXJrQnlQZXJjZW50YWdlKFxuICAgIEJFTkNITUFSS19TQ09SRV9ERVNLVE9QLFxuICAgIGRlc2t0b3BCZW5jaG1hcmtQZXJjZW50YWdlcyxcbiAgKTtcblxuICAvLyBHUFVfQkxBQ0tMSVNUXG4gIC8vIC0gaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL0Jsb2NrbGlzdGluZy9CbG9ja2VkX0dyYXBoaWNzX0RyaXZlcnNcbiAgLy8gLSBodHRwczovL3d3dy5raHJvbm9zLm9yZy93ZWJnbC93aWtpL0JsYWNrbGlzdHNBbmRXaGl0ZWxpc3RzXG4gIC8vIC0gaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy9ncHUvKy9tYXN0ZXIvY29uZmlnL3NvZnR3YXJlX3JlbmRlcmluZ19saXN0Lmpzb25cbiAgY29uc3QgR1BVX0JMQUNLTElTVCA9IC8ocmFkZW9uIGhkIDY5NzBtfHJhZGVvbiBoZCA2NzcwbXxyYWRlb24gaGQgNjQ5MG18cmFkZW9uIGhkIDY2MzBtfHJhZGVvbiBoZCA2NzUwbXxyYWRlb24gaGQgNTc1MHxyYWRlb24gaGQgNTY3MHxyYWRlb24gaGQgNDg1MHxyYWRlb24gaGQgNDg3MHxyYWRlb24gaGQgNDY3MHxnZWZvcmNlIDk0MDBtfGdlZm9yY2UgMzIwbXxnZWZvcmNlIDMzMG18Z2Vmb3JjZSBndCAxMzB8Z2Vmb3JjZSBndCAxMjB8Z2Vmb3JjZSBndHggMjg1fGdlZm9yY2UgODYwMHxnZWZvcmNlIDk2MDBtfGdlZm9yY2UgOTQwMG18Z2Vmb3JjZSA4ODAwIGdzfGdlZm9yY2UgODgwMCBndHxxdWFkcm8gZnggNXxxdWFkcm8gZnggNHxyYWRlb24gaGQgMjYwMHxyYWRlb24gaGQgMjQwMHxyYWRlb24gaGQgMjYwMHxyYWRlb24gcjkgMjAwfG1hbGktNHxtYWxpLTN8bWFsaS0yKS8udGVzdChcbiAgICByZW5kZXJlcixcbiAgKTtcblxuICBpZiAoIWdsIHx8IEdQVV9CTEFDS0xJU1QpIHtcbiAgICBpZiAoZGV2aWNlLm1vYmlsZSB8fCBkZXZpY2UudGFibGV0KSB7XG4gICAgICByZXR1cm4gJ0dQVV9NT0JJTEVfVElFUl8wJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ0dQVV9ERVNLVE9QX1RJRVJfMCc7XG4gIH1cblxuICBpZiAoIXJlbmRlcmVyKSB7XG4gICAgaWYgKGRldmljZS5tb2JpbGUgfHwgZGV2aWNlLnRhYmxldCkge1xuICAgICAgcmV0dXJuICdHUFVfTU9CSUxFX1RJRVJfMSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdHUFVfREVTS1RPUF9USUVSXzEnO1xuICB9XG5cbiAgaWYgKGRldmljZS5tb2JpbGUgfHwgZGV2aWNlLnRhYmxldCkge1xuICAgIC8vIE1vYmlsZVxuICAgIGNvbnN0IGlzUmVuZGVyZXJBZHJlbm8gPSByZW5kZXJlci5pbmNsdWRlcygnYWRyZW5vJyk7XG4gICAgY29uc3QgaXNSZW5kZXJlckFwcGxlID0gcmVuZGVyZXIuaW5jbHVkZXMoJ2FwcGxlJyk7XG4gICAgY29uc3QgaXNSZW5kZXJlck1hbGkgPSByZW5kZXJlci5pbmNsdWRlcygnbWFsaScpICYmICFyZW5kZXJlci5pbmNsdWRlcygnbWFsaS10Jyk7XG4gICAgY29uc3QgaXNSZW5kZXJlck1hbGlUID0gcmVuZGVyZXIuaW5jbHVkZXMoJ21hbGktdCcpO1xuICAgIGNvbnN0IGlzUmVuZGVyZXJOVklESUEgPSByZW5kZXJlci5pbmNsdWRlcygnbnZpZGlhJyk7XG4gICAgY29uc3QgaXNSZW5kZXJlclBvd2VyVlIgPSByZW5kZXJlci5pbmNsdWRlcygncG93ZXJ2cicpO1xuXG4gICAgbGV0IG1vYmlsZVRpZXI7XG5cbiAgICBtb2JpbGVCZW5jaG1hcmtUaWVycy5zb21lKChyYXdUaWVyLCBpKSA9PiByYXdUaWVyLnNvbWUoKHJhd0VudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmF3RW50cnkudG9Mb3dlckNhc2UoKS5zcGxpdCgnLSAnKVsxXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGVudHJ5LmluY2x1ZGVzKCdhZHJlbm8nKSAmJiBpc1JlbmRlcmVyQWRyZW5vKVxuICAgICAgICAgIHx8IChlbnRyeS5pbmNsdWRlcygnYXBwbGUnKSAmJiBpc1JlbmRlcmVyQXBwbGUpXG4gICAgICAgICAgfHwgKGVudHJ5LmluY2x1ZGVzKCdtYWxpJykgJiYgIWVudHJ5LmluY2x1ZGVzKCdtYWxpLXQnKSAmJiBpc1JlbmRlcmVyTWFsaSlcbiAgICAgICAgICB8fCAoZW50cnkuaW5jbHVkZXMoJ21hbGktdCcpICYmIGlzUmVuZGVyZXJNYWxpVClcbiAgICAgICAgICB8fCAoZW50cnkuaW5jbHVkZXMoJ252aWRpYScpICYmIGlzUmVuZGVyZXJOVklESUEpXG4gICAgICAgICAgfHwgKGVudHJ5LmluY2x1ZGVzKCdwb3dlcnZyJykgJiYgaXNSZW5kZXJlclBvd2VyVlIpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChlbnRyeS5pbmNsdWRlcyh2ZXJzaW9uTnVtYmVyKSkge1xuICAgICAgICAgICAgbW9iaWxlVGllciA9IGBHUFVfTU9CSUxFX1RJRVJfJHtpfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICBpZiAobW9iaWxlVGllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnTWF0Y2hpbmcgR1BVIHRpZXIgY291bGQgbm90IGJlIGZvdW5kLCB1c2luZyBmYWxsYmFjazogR1BVX01PQklMRV9USUVSXzEnKTtcbiAgICAgIG1vYmlsZVRpZXIgPSAnR1BVX01PQklMRV9USUVSXzEnO1xuICAgIH1cblxuICAgIHJldHVybiBtb2JpbGVUaWVyO1xuICB9XG5cbiAgLy8gRGVza3RvcFxuICBjb25zdCBpc1JlbmRlcmVySW50ZWwgPSByZW5kZXJlci5pbmNsdWRlcygnaW50ZWwnKTtcbiAgY29uc3QgaXNSZW5kZXJlckFNRCA9IHJlbmRlcmVyLmluY2x1ZGVzKCdhbWQnKTtcbiAgY29uc3QgaXNSZW5kZXJlck5WSURJQSA9IHJlbmRlcmVyLmluY2x1ZGVzKCdudmlkaWEnKTtcbiAgbGV0IGRlc2t0b3BUaWVyO1xuXG4gIGRlc2t0b3BCZW5jaG1hcmtUaWVycy5mb3JFYWNoKChyYXdUaWVyLCBpKSA9PiByYXdUaWVyLmZvckVhY2goKHJhd0VudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IHJhd0VudHJ5LnRvTG93ZXJDYXNlKCkuc3BsaXQoJy0gJylbMV07XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGVudHJ5LmluY2x1ZGVzKCdpbnRlbCcpICYmIGlzUmVuZGVyZXJJbnRlbClcbiAgICAgICAgfHwgKGVudHJ5LmluY2x1ZGVzKCdhbWQnKSAmJiBpc1JlbmRlcmVyQU1EKVxuICAgICAgICB8fCAoZW50cnkuaW5jbHVkZXMoJ252aWRpYScpICYmIGlzUmVuZGVyZXJOVklESUEpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGVudHJ5LmluY2x1ZGVzKHZlcnNpb25OdW1iZXIpKSB7XG4gICAgICAgICAgZGVza3RvcFRpZXIgPSBgR1BVX0RFU0tUT1BfVElFUl8ke2l9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcblxuICBpZiAoZGVza3RvcFRpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUubG9nKCdNYXRjaGluZyBHUFUgdGllciBjb3VsZCBub3QgYmUgZm91bmQsIHVzaW5nIGZhbGxiYWNrOiBHUFVfREVTS1RPUF9USUVSXzEnKTtcbiAgICBkZXNrdG9wVGllciA9ICdHUFVfREVTS1RPUF9USUVSXzEnO1xuICB9XG5cbiAgcmV0dXJuIGRlc2t0b3BUaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIob3B0aW9ucyA9IHt9KSB7XG4gIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucyk7XG5cbiAgLy8gQmVuY2htYXJrIGxpc3RpbmcgaXMgcmV2ZXJzZWQgc28gdGhhdCBpZiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSBHUFUgaXMgZm91bmQgdGhlIGhpZ2hlc3Qgb25lIGlzIHVzZWRcbiAgLy8gVGFrZSBmb3IgZXhhbXBsZSBHNzIsIGl0IGlzIHJlcG9ydGVkIG9ubHkgYXMgRzcyIHRvIHRoZSBicm93c2VyIGJ1dCBjYW4gbWVhbiBHNzIgTVAzLCBHNzIgTVAxMiBhbmQgRzcyIE1QMTguXG4gIC8vIEl0IHdpbGwgaW4gdGhpcyBjYXNlIHRha2UgdGhlIGhpZ2hlc3QgdGllciBpbiBvcmRlciB0byBiZSBmdXR1cmUgcHJvb2YgKGFzc3VtaW5nIEc3MiBiZWNvbWVzIG1vcmUgcG93ZXJmdWwgb3ZlciB0aW1lKVxuXG4gIC8vIERlc2t0b3AgR1BVIHBlcmNlbnRhZ2VzXG4gIC8vIDE1JSBUSUVSXzBcbiAgLy8gMzUlIFRJRVJfMVxuICAvLyAzMCUgVElFUl8yXG4gIC8vIDIwJSBUSUVSXzNcbiAgdGhpcy5CRU5DSE1BUktfVElFUl9QRVJDRU5UQUdFU19NT0JJTEUgPSBbMTUsIDM1LCAzMCwgMjBdO1xuXG4gIC8vIE1vYmlsZSBHUFUgcGVyY2VudGFnZXNcbiAgLy8gMTUlIFRJRVJfMFxuICAvLyAzNSUgVElFUl8xXG4gIC8vIDMwJSBUSUVSXzJcbiAgLy8gMjAlIFRJRVJfM1xuICB0aGlzLkJFTkNITUFSS19USUVSX1BFUkNFTlRBR0VTX0RFU0tUT1AgPSBbMTUsIDM1LCAzMCwgMjBdO1xuXG4gIGNvbnN0IEdQVV9USUVSID0gZ2V0R1BVVGllcihcbiAgICB0aGlzLkJFTkNITUFSS19USUVSX1BFUkNFTlRBR0VTX01PQklMRSxcbiAgICB0aGlzLkJFTkNITUFSS19USUVSX1BFUkNFTlRBR0VTX0RFU0tUT1AsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBHUFVfVElFUixcbiAgICBERVRFQ1RFRF9SRU5ERVJFUjogcmVuZGVyZXIsXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFmQTtBQUNBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./index.js\n");

@@ -134,0 +134,0 @@ /***/ }),

@@ -1,1 +0,1 @@

!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define("DetectGPU",[],o):"object"==typeof exports?exports.DetectGPU=o():e.DetectGPU=o()}(window,function(){return function(e){var o={};function r(n){if(o[n])return o[n].exports;var a=o[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=o,r.d=function(e,o,n){r.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,o){if(1&o&&(e=r(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var a in e)r.d(n,a,function(o){return e[o]}.bind(null,a));return n},r.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(o,"a",o),o},r.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r.p="",r(r.s=0)}([function(e,o,r){"use strict";r.r(o);var n=["1 - NVIDIA GeForce GTX 1080 Ti (Desktop)","2 - NVIDIA Titan X Pascal","3 - NVIDIA GeForce GTX 1080 SLI (Laptop)","4 - NVIDIA GeForce GTX 1070 SLI (Desktop)","5 - NVIDIA GeForce GTX 1070 SLI (Laptop)","6 - NVIDIA GeForce GTX 1080 (Desktop)","7 - AMD Radeon RX Vega 64","8 - NVIDIA GeForce GTX 1080 (Laptop)","9 - NVIDIA GeForce GTX 1070 Ti (Desktop)","10 - NVIDIA GeForce GTX 980 SLI (Laptop)","11 - NVIDIA Quadro P5200","12 - AMD Radeon Pro Vega 56","13 - NVIDIA GeForce GTX 1070 (Desktop)","14 - NVIDIA GeForce GTX 1080 Max-Q","15 - NVIDIA GeForce GTX 1070 (Laptop)","16 - NVIDIA Quadro P4200","17 - NVIDIA Quadro P5000","18 - NVIDIA GeForce GTX 980 Ti","19 - NVIDIA GeForce GTX 1070 Max-Q","20 - NVIDIA Quadro P5000 Max-Q","21 - NVIDIA GeForce GTX 980M SLI","22 - AMD Radeon R9 Fury","23 - AMD Radeon R9 Nano","24 - NVIDIA GeForce GTX 980","25 - AMD Radeon RX 580 (Desktop)","26 - NVIDIA GeForce GTX 980 (Laptop)","27 - NVIDIA Quadro M5500","28 - AMD Radeon R9 390X","29 - NVIDIA GeForce GTX 970M SLI","30 - NVIDIA GeForce GTX 1060 (Desktop)","31 - NVIDIA Quadro P4000","32 - AMD Radeon RX 480 (Desktop)","33 - NVIDIA GeForce GTX 1060 (Laptop)","34 - NVIDIA Quadro P4000 Max-Q","35 - NVIDIA Quadro P3200","36 - AMD Radeon RX 580 (Laptop)","37 - NVIDIA GeForce GTX 780 Ti","38 - AMD Radeon RX Vega Mobile","39 - AMD Radeon RX Vega M GH","40 - NVIDIA Quadro P3000","41 - NVIDIA GeForce GTX 970","42 - NVIDIA GeForce GTX 1060 Max-Q","43 - NVIDIA Quadro P3000 Max-Q","45 - AMD Radeon Pro WX 7100","46 - AMD Radeon RX 470 (Desktop)","47 - AMD Radeon RX 570 (Laptop)","48 - AMD Radeon RX 470 (Laptop)","49 - NVIDIA GeForce GTX 880M SLI","51 - AMD Radeon R9 290X","53 - NVIDIA GeForce GTX 965M SLI","58 - NVIDIA GeForce GTX 980M","59 - NVIDIA Quadro M5000M","60 - AMD Radeon RX Vega M GL / 870","61 - AMD Radeon R9 280X","62 - AMD Radeon R9 380","63 - NVIDIA GeForce GTX 960","64 - NVIDIA GeForce GTX 1050 Ti (Notebook)","65 - NVIDIA GeForce GTX 1050 Ti Max-Q","66 - NVIDIA GeForce GTX 1050 Ti (Desktop)","67 - NVIDIA GeForce GTX 970M","68 - NVIDIA Quadro M4000M","73 - AMD Radeon R9 M395X","74 - AMD Radeon R9 M485X","75 - AMD Radeon R9 M295X","76 - AMD Radeon R9 M390X","77 - NVIDIA Quadro M3000M","78 - NVIDIA GeForce GTX 1050 (Desktop)","79 - NVIDIA GeForce GTX 1050 (Notebook)","80 - NVIDIA GeForce GTX 1050 Max-Q","81 - AMD FirePro W7170M","82 - AMD Radeon R9 M395","83 - AMD Radeon R7 370","85 - NVIDIA GeForce GTX 880M","86 - NVIDIA GeForce GTX 950","87 - AMD Radeon RX 560X (Laptop)","88 - AMD Radeon RX 560 (Laptop)","89 - AMD Radeon R9 270X","91 - NVIDIA GeForce GTX 760","92 - NVIDIA GeForce GTX 780M","93 - NVIDIA Quadro K5100M","95 - AMD Radeon RX 460 (Desktop)","96 - AMD Radeon Pro WX 4150","98 - NVIDIA GeForce GTX 965M","99 - NVIDIA Quadro M2200","100 - NVIDIA GeForce GTX 870M","101 - AMD Radeon R9 M290X","107 - AMD Radeon RX 460 (Laptop)","110 - AMD Radeon R9 M390","111 - AMD FirePro M6100","113 - AMD Radeon Pro 560","114 - AMD Radeon Pro 560X","115 - AMD Radeon Pro 460","116 - AMD Radeon Pro WX 4130","117 - NVIDIA GeForce GTX 960M","118 - NVIDIA GeForce GTX 750 Ti","119 - AMD Radeon RX 550 (Laptop)","123 - NVIDIA Quadro M1200","124 - AMD Radeon Pro 555","125 - AMD Radeon Pro 455","126 - NVIDIA GeForce GT 1030 (Desktop)","127 - NVIDIA GeForce MX150","128 - NVIDIA Quadro P600","129 - NVIDIA Quadro P500","130 - NVIDIA Quadro M2000M","131 - NVIDIA Quadro K5000M","132 - NVIDIA Quadro K4100M","133 - NVIDIA GeForce GTX 770M","134 - AMD Radeon RX 540","135 - AMD Radeon Pro WX 3100 Mobile","136 - NVIDIA GeForce GTX 860M","144 - NVIDIA GeForce GTX 950M","145 - AMD Radeon Pro 450","146 - AMD Radeon R9 M470X","147 - AMD Radeon R9 M385X","148 - NVIDIA GeForce GTX 850M","149 - NVIDIA Quadro M1000M","150 - NVIDIA Quadro M620","151 - AMD Radeon R9 M280X","152 - AMD Radeon RX Vega 11","157 - NVIDIA GeForce 945M","158 - NVIDIA GeForce GTX 765M","162 - NVIDIA Quadro K4000M","163 - AMD Radeon RX Vega 10","164 - Intel Iris Pro Graphics P580","165 - Intel Iris Pro Graphics 580","170 - AMD Radeon R9 M470","172 - AMD Radeon R9 M380","181 - NVIDIA Quadro K3100M","182 - AMD FirePro W5170M","183 - AMD Radeon R9 M370X","186 - NVIDIA GeForce GTX 760M","187 - AMD Radeon R9 M275","189 - NVIDIA Maxwell GPU Surface Book (940M, GDDR5)","190 - AMD FirePro W5130M","196 - NVIDIA Quadro K3000M","198 - AMD FirePro M6000","199 - AMD FirePro M5100","200 - NVIDIA Quadro K2100M","205 - AMD Radeon R7 250","206 - NVIDIA GeForce GT 755M","208 - NVIDIA GeForce 845M","211 - AMD Radeon R9 M265X","213 - AMD Radeon R7 M465","215 - AMD FirePro W4170M","216 - AMD FirePro W4100","221 - NVIDIA GeForce GT 750M","222 - Intel Iris Pro Graphics 6200","223 - NVIDIA Quadro M520","224 - NVIDIA GeForce MX130","225 - NVIDIA GeForce 940MX","226 - NVIDIA Quadro K1100M","227 - AMD Radeon RX Vega 8","228 - NVIDIA GeForce 940M","229 - NVIDIA GeForce 930MX","230 - NVIDIA Quadro M600M","231 - AMD FirePro W4190M","232 - AMD Radeon R9 M375","233 - AMD Radeon R7 M445","235 - AMD Radeon R7 M370","238 - NVIDIA Quadro M500M","239 - NVIDIA GeForce 840M","240 - AMD Radeon R7 M275DX","241 - NVIDIA GeForce GT 745M","244 - AMD Radeon R7 (Bristol Ridge)","245 - AMD Radeon R7 512 Cores (Kaveri Desktop)","246 - Intel Iris Pro Graphics 5200","247 - AMD Radeon R7 384 Cores (Kaveri Desktop)","248 - NVIDIA GeForce GT 740M","249 - Intel Iris Plus Graphics 650","250 - Intel Iris Plus Graphics 655","251 - NVIDIA GeForce 930M","252 - Intel Iris Graphics 550","253 - AMD Radeon 530","254 - NVIDIA GeForce 830M","255 - NVIDIA GeForce MX110","256 - Intel Iris Plus Graphics 640","257 - NVIDIA GeForce 920MX","258 - Intel Iris Graphics 540","261 - NVIDIA Quadro K2000M","264 - NVIDIA GeForce GT 735M","266 - NVIDIA GeForce 825M","268 - AMD FirePro M4000","275 - AMD Radeon R7 M260X","278 - NVIDIA GeForce GT 730M","281 - AMD FirePro M4100","284 - AMD Radeon R7 M270","285 - AMD Radeon R7 M265","289 - NVIDIA GeForce GT 640M","290 - AMD Radeon R7 (Carrizo)","291 - AMD Radeon R7 (Kaveri)","292 - AMD Radeon R8 M365DX","293 - AMD Radeon R7 M460","296 - AMD Radeon R7 M360","298 - NVIDIA GeForce 920M","301 - AMD Radeon R8 M445DX","302 - AMD Radeon R7 M440","308 - AMD Radeon R7 M260","309 - AMD Radeon R7 M340","310 - AMD Radeon 520","311 - AMD Radeon R6 M340DX","312 - AMD Radeon RX Vega 6","313 - Intel UHD Graphics 630","314 - Intel HD Graphics 630","315 - Intel HD Graphics P630","316 - Intel HD Graphics 530","317 - Intel HD Graphics P530","319 - AMD Radeon R5 (Bristol Ridge)","320 - Intel UHD Graphics 620","321 - Intel HD Graphics 620","322 - AMD Radeon R6 (Carrizo)","334 - AMD Radeon R6 (Kaveri)","343 - AMD FirePro W2100","353 - Intel HD Graphics 5600","360 - AMD Radeon R6 M255DX","361 - AMD Radeon HD 7660D","363 - NVIDIA Quadro K1000M","379 - AMD Radeon HD 8650G","385 - AMD Radeon HD 7560D","387 - AMD Radeon R5 M335","388 - AMD Radeon R5 M330","389 - AMD Radeon R5 M430","390 - AMD Radeon R5 M255","392 - NVIDIA GeForce 910M","393 - NVIDIA GeForce 820M","394 - AMD Radeon RX Vega 3","395 - Intel HD Graphics 520","396 - Intel Iris Graphics 6100","397 - NVIDIA GeForce GT 720M","398 - AMD Radeon R5 (Stoney Ridge)","400 - AMD Radeon R5 M240","401 - AMD Radeon R5 M320","402 - AMD Radeon R5 M230","403 - AMD Radeon R5 M315","409 - Intel HD Graphics 6000","410 - NVIDIA Quadro K610M","412 - Intel Iris Graphics 5100","414 - AMD Radeon HD 8610G","417 - Intel HD Graphics 4600","419 - Intel HD Graphics 5500","426 - Intel UHD Graphics 615","428 - Intel HD Graphics 615","429 - AMD Radeon R5 (Carrizo)","430 - AMD Radeon R5 (Kaveri)","433 - NVIDIA GeForce 710M","434 - AMD Radeon HD 7660G","437 - Intel HD Graphics 5000","453 - AMD Radeon HD 8550G","462 - AMD Radeon HD 8470D","469 - Intel HD Graphics 515","470 - Intel HD Graphics 4400","471 - Intel HD Graphics 610","472 - Intel HD Graphics 510","501 - Intel HD Graphics 5300","502 - Intel UHD Graphics 605","503 - Intel HD Graphics 505","511 - AMD Radeon HD 7480D","512 - Intel HD Graphics 4000","516 - AMD Radeon R4 (Stoney Ridge)","517 - AMD Radeon R4 (Kaveri)","518 - Intel HD Graphics (Broadwell)","520 - AMD Radeon R5 (Beema/Carrizo-L)","521 - AMD Radeon R4 (Beema)","522 - AMD Radeon R3 (Mullins/Beema)","523 - AMD Radeon R2 (Stoney Ridge)","524 - Intel HD Graphics 4200","533 - AMD Radeon HD 8450G","537 - AMD Radeon HD 8400","550 - AMD Radeon HD 8350G","551 - AMD Radeon HD 8330","552 - Intel UHD Graphics 600","553 - Intel HD Graphics 500","573 - Intel HD Graphics 405 (Braswell)","574 - Intel HD Graphics (Braswell)","575 - Intel HD Graphics 400 (Braswell)","584 - Intel HD Graphics (Haswell)","604 - AMD Radeon R2 (Mullins/Beema/Carrizo-L)","605 - Intel HD Graphics (Cherry Trail)","607 - AMD Radeon HD 8280","615 - AMD Radeon HD 8240","616 - AMD Radeon R6 (Mullins)","617 - AMD Radeon HD 8250","641 - AMD Radeon HD 8210","645 - Intel HD Graphics (Ivy Bridge)","686 - Intel HD Graphics (Bay Trail)","690 - AMD Radeon HD 7340","692 - AMD Radeon HD 7310","694 - AMD Radeon HD 8180","704 - AMD Radeon HD 7290"],a=["259 - Apple A11 Bionic GPU","260 - Apple A10X Fusion GPU / PowerVR","295 - Apple A9X / PowerVR Series 7XT","318 - NVIDIA Tegra X1 Maxwell GPU","404 - Apple A10 Fusion GPU / PowerVR","420 - Qualcomm Adreno 630","421 - Qualcomm Adreno 540","422 - ARM Mali-G72 MP18","423 - ARM Mali-G71 MP20","424 - ARM Mali-G72 MP12","425 - ARM Mali-G71 MP8","464 - Qualcomm Adreno 530","465 - PowerVR GXA6850","466 - NVIDIA Tegra K1 Kepler GPU","467 - Apple A9 / PowerVR GT7600","468 - ARM Mali-T880 MP12","513 - ARM Mali-T760 MP8","514 - ARM Mali-G71 MP2","519 - Qualcomm Adreno 430","538 - ARM Mali-G72 MP3","539 - ARM Mali-T880 MP4","571 - ARM Mali-T760 MP6","572 - ARM Mali-T880 MP2","582 - PowerVR GX6450","583 - Qualcomm Adreno 420","603 - Qualcomm Adreno 418","605 - Intel HD Graphics (Cherry Trail)","680 - Qualcomm Adreno 512","681 - Qualcomm Adreno 510","682 - Qualcomm Adreno 330","683 - PowerVR G6430","684 - PowerVR GX6250","685 - PowerVR G6400","686 - Intel HD Graphics (Bay Trail)","687 - ARM Mali-T628 MP6","688 - ARM Mali-T760 MP4","726 - PowerVR SGX554MP4","727 - ARM Mali-T628 MP4","728 - Qualcomm Adreno 509","729 - Qualcomm Adreno 508","730 - Qualcomm Adreno 506","731 - Qualcomm Adreno 505","735 - ARM Mali-T860 MP2","736 - ARM Mali-T830 MP3","742 - ARM Mali-T604 MP4","747 - NVIDIA GeForce Tegra 4","748 - PowerVR G6200","749 - Qualcomm Adreno 405","750 - ARM Mali-T830 MP2","777 - PowerVR SGX543MP4","778 - ARM Mali-T624","779 - Qualcomm Adreno 320","780 - ARM Mali-T760 MP2","781 - PowerVR GE8100","782 - ARM Mali-T720 MP4","783 - ARM Mali-450 MP4","784 - ARM Mali-T830 MP1","792 - PowerVR SGX543MP3","802 - PowerVR SGX543MP2","805 - PowerVR SGX545","806 - PowerVR SGX544MP2","807 - ARM Mali-T720 MP2","808 - PowerVR SGX544","809 - Qualcomm Adreno 308","810 - Qualcomm Adreno 306","811 - Qualcomm Adreno 305","812 - Qualcomm Adreno 304","813 - ARM Mali-T720","814 - Vivante GC7000UL","815 - Qualcomm Adreno 302","823 - Qualcomm Adreno 225","824 - Vivante GC4000","825 - ARM Mali-400 MP4","826 - NVIDIA GeForce ULP (Tegra 3)","827 - Broadcom VideoCore-IV","828 - Qualcomm Adreno 220","829 - Vivante GC1000+ Dual-Core","830 - ARM Mali-400 MP2","831 - ARM Mali-400 MP","832 - NVIDIA GeForce ULP (Tegra 2)","834 - PowerVR SGX540","836 - Qualcomm Adreno 205","837 - Qualcomm Adreno 203","838 - Vivante GC800","839 - PowerVR SGX535","840 - PowerVR SGX531","841 - PowerVR SGX530","842 - Qualcomm Adreno 200","843 - ARM Mali-200"],t=function(){function e(e,o){for(var r=0;r<o.length;r++){var n=o[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(o,r,n){return r&&e(o.prototype,r),n&&e(o,n),o}}();var i=function(){function e(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;!function(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),this.setUserAgent(o)}return t(e,[{key:"match",value:function(e){return this.matchCache[e]||(this.matchCache[e]=this.userAgent.indexOf(e)>-1),this.matchCache[e]}},{key:"getUserAgent",value:function(){return"undefined"!=typeof document?window.navigator.userAgent:""}},{key:"setUserAgent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.userAgent=e||this.userAgent||this.getUserAgent(),this.userAgent&&(this.matchCache={},this.userAgent=this.userAgent.toLowerCase())}},{key:"iphone",get:function(){return!this.windows&&this.match("iphone")}},{key:"ipod",get:function(){return this.match("ipod")}},{key:"ipad",get:function(){return this.match("ipad")}},{key:"android",get:function(){return!this.windows&&this.match("android")}},{key:"androidPhone",get:function(){return this.android&&this.match("mobile")}},{key:"androidTablet",get:function(){return this.android&&!this.match("mobile")}},{key:"blackberry",get:function(){return this.match("blackberry")||this.match("bb10")||this.match("rim")}},{key:"blackberryPhone",get:function(){return this.blackberry&&!this.match("tablet")}},{key:"blackberryTablet",get:function(){return this.blackberry&&this.match("tablet")}},{key:"windows",get:function(){return this.match("windows")}},{key:"windowsPhone",get:function(){return this.windows&&this.match("phone")}},{key:"windowsTablet",get:function(){return this.windows&&this.match("touch")&&!this.windowsPhone}},{key:"fxos",get:function(){return(this.match("(mobile;")||this.match("(tablet;"))&&this.match("; rv:")}},{key:"fxosPhone",get:function(){return this.fxos&&this.match("mobile")}},{key:"fxosTablet",get:function(){return this.fxos&&this.match("tablet")}},{key:"meego",get:function(){return this.match("meego")}},{key:"mobile",get:function(){return this.androidPhone||this.iphone||this.ipod||this.windowsPhone||this.blackberryPhone||this.fxosPhone||this.meego}},{key:"tablet",get:function(){return this.ipad||this.androidTablet||this.blackberryTablet||this.windowsTablet||this.fxosTablet}}]),e}();function M(e,o){var r=0,n=e.reverse();return o.map(function(e){var o=Math.round(n.length/100*e),a=n.slice(r,r+o);return r+=o,a})}r.d(o,"register",function(){return l});var D=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var r=arguments[o];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},A=new i,d=function(e){var o=document.createElement("canvas"),r=o.getContext("webgl",e)||o.getContext("experimental-webgl",e);return!!(r&&r instanceof window.WebGLRenderingContext)&&r}(),c=d.getExtension("WEBGL_debug_renderer_info"),I=c&&d.getParameter(c.UNMASKED_RENDERER_WEBGL).toLowerCase()||d.getParameter(d.SHADING_LANGUAGE_VERSION).toLowerCase(),R=parseInt(I.slice().replace(/[\D]/g,""),10);function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return D(this,e),this.BENCHMARK_TIER_PERCENTAGES_MOBILE=[15,35,30,20],this.BENCHMARK_TIER_PERCENTAGES_DESKTOP=[15,35,30,20],{GPU_TIER:function(e,o){var r=M(a,e),t=M(n,o),i=/(radeon hd 6970m|radeon hd 6770m|radeon hd 6490m|radeon hd 6630m|radeon hd 6750m|radeon hd 5750|radeon hd 5670|radeon hd 4850|radeon hd 4870|radeon hd 4670|geforce 9400m|geforce 320m|geforce 330m|geforce gt 130|geforce gt 120|geforce gtx 285|geforce 8600|geforce 9600m|geforce 9400m|geforce 8800 gs|geforce 8800 gt|quadro fx 5|quadro fx 4|radeon hd 2600|radeon hd 2400|radeon hd 2600|radeon r9 200|mali-4|mali-3|mali-2)/.test(I);if(!d||i)return A.mobile||A.tablet?"GPU_MOBILE_TIER_0":"GPU_DESKTOP_TIER_0";if(A.mobile||A.tablet){var D=I.includes("adreno"),c=I.includes("apple"),l=I.includes("mali")&&!I.includes("mali-t"),s=I.includes("mali-t"),G=I.includes("nvidia"),u=I.includes("powervr"),h=void 0;return r.some(function(e,o){return e.some(function(e){var r=e.toLowerCase().split("- ")[1];(r.includes("adreno")&&D||r.includes("apple")&&c||r.includes("mali")&&!r.includes("mali-t")&&l||r.includes("mali-t")&&s||r.includes("nvidia")&&G||r.includes("powervr")&&u)&&r.includes(R)&&(h="GPU_MOBILE_TIER_"+o)})}),void 0===h&&(console.log("Matching GPU tier could not be found, using fallback: GPU_MOBILE_TIER_1"),h="GPU_MOBILE_TIER_1"),h}var p=I.includes("intel"),V=I.includes("amd"),P=I.includes("nvidia"),m=void 0;return t.forEach(function(e,o){return e.forEach(function(e){var r=e.toLowerCase().split("- ")[1];(r.includes("intel")&&p||r.includes("amd")&&V||r.includes("nvidia")&&P)&&r.includes(R)&&(m="GPU_DESKTOP_TIER_"+o)})}),void 0===m&&(console.log("Matching GPU tier could not be found, using fallback: GPU_DESKTOP_TIER_1"),m="GPU_DESKTOP_TIER_1"),m}(this.BENCHMARK_TIER_PERCENTAGES_MOBILE,this.BENCHMARK_TIER_PERCENTAGES_DESKTOP),DETECTED_RENDERER:I}}}])});
!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define("DetectGPU",[],o):"object"==typeof exports?exports.DetectGPU=o():e.DetectGPU=o()}(window,function(){return function(e){var o={};function r(n){if(o[n])return o[n].exports;var a=o[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=o,r.d=function(e,o,n){r.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,o){if(1&o&&(e=r(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var a in e)r.d(n,a,function(o){return e[o]}.bind(null,a));return n},r.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(o,"a",o),o},r.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r.p="",r(r.s=0)}([function(e,o,r){"use strict";r.r(o);var n=["1 - NVIDIA GeForce GTX 1080 Ti (Desktop)","2 - NVIDIA Titan X Pascal","3 - NVIDIA GeForce GTX 1080 SLI (Laptop)","4 - NVIDIA GeForce GTX 1070 SLI (Desktop)","5 - NVIDIA GeForce GTX 1070 SLI (Laptop)","6 - NVIDIA GeForce GTX 1080 (Desktop)","7 - AMD Radeon RX Vega 64","8 - NVIDIA GeForce GTX 1080 (Laptop)","9 - NVIDIA GeForce GTX 1070 Ti (Desktop)","10 - NVIDIA GeForce GTX 980 SLI (Laptop)","11 - NVIDIA Quadro P5200","12 - AMD Radeon Pro Vega 56","13 - NVIDIA GeForce GTX 1070 (Desktop)","14 - NVIDIA GeForce GTX 1080 Max-Q","15 - NVIDIA GeForce GTX 1070 (Laptop)","16 - NVIDIA Quadro P4200","17 - NVIDIA Quadro P5000","18 - NVIDIA GeForce GTX 980 Ti","19 - NVIDIA GeForce GTX 1070 Max-Q","20 - NVIDIA Quadro P5000 Max-Q","21 - NVIDIA GeForce GTX 980M SLI","22 - AMD Radeon R9 Fury","23 - AMD Radeon R9 Nano","24 - NVIDIA GeForce GTX 980","25 - AMD Radeon RX 580 (Desktop)","26 - NVIDIA GeForce GTX 980 (Laptop)","27 - NVIDIA Quadro M5500","28 - AMD Radeon R9 390X","29 - NVIDIA GeForce GTX 970M SLI","30 - NVIDIA GeForce GTX 1060 (Desktop)","31 - NVIDIA Quadro P4000","32 - AMD Radeon RX 480 (Desktop)","33 - NVIDIA GeForce GTX 1060 (Laptop)","34 - NVIDIA Quadro P4000 Max-Q","35 - NVIDIA Quadro P3200","36 - AMD Radeon RX 580 (Laptop)","37 - NVIDIA GeForce GTX 780 Ti","38 - AMD Radeon RX Vega Mobile","39 - AMD Radeon RX Vega M GH","40 - NVIDIA Quadro P3000","41 - NVIDIA GeForce GTX 970","42 - NVIDIA GeForce GTX 1060 Max-Q","43 - NVIDIA Quadro P3000 Max-Q","45 - AMD Radeon Pro WX 7100","46 - AMD Radeon RX 470 (Desktop)","47 - AMD Radeon RX 570 (Laptop)","48 - AMD Radeon RX 470 (Laptop)","49 - NVIDIA GeForce GTX 880M SLI","51 - AMD Radeon R9 290X","53 - NVIDIA GeForce GTX 965M SLI","58 - NVIDIA GeForce GTX 980M","59 - NVIDIA Quadro M5000M","60 - AMD Radeon RX Vega M GL / 870","61 - AMD Radeon R9 280X","62 - AMD Radeon R9 380","63 - NVIDIA GeForce GTX 960","64 - NVIDIA GeForce GTX 1050 Ti (Notebook)","65 - NVIDIA GeForce GTX 1050 Ti Max-Q","66 - NVIDIA GeForce GTX 1050 Ti (Desktop)","67 - NVIDIA GeForce GTX 970M","68 - NVIDIA Quadro M4000M","73 - AMD Radeon R9 M395X","74 - AMD Radeon R9 M485X","75 - AMD Radeon R9 M295X","76 - AMD Radeon R9 M390X","77 - NVIDIA Quadro M3000M","78 - NVIDIA GeForce GTX 1050 (Desktop)","79 - NVIDIA GeForce GTX 1050 (Notebook)","80 - NVIDIA GeForce GTX 1050 Max-Q","81 - AMD FirePro W7170M","82 - AMD Radeon R9 M395","83 - AMD Radeon R7 370","85 - NVIDIA GeForce GTX 880M","86 - NVIDIA GeForce GTX 950","87 - AMD Radeon RX 560X (Laptop)","88 - AMD Radeon RX 560 (Laptop)","89 - AMD Radeon R9 270X","91 - NVIDIA GeForce GTX 760","92 - NVIDIA GeForce GTX 780M","93 - NVIDIA Quadro K5100M","95 - AMD Radeon RX 460 (Desktop)","96 - AMD Radeon Pro WX 4150","98 - NVIDIA GeForce GTX 965M","99 - NVIDIA Quadro M2200","100 - NVIDIA GeForce GTX 870M","101 - AMD Radeon R9 M290X","107 - AMD Radeon RX 460 (Laptop)","110 - AMD Radeon R9 M390","111 - AMD FirePro M6100","113 - AMD Radeon Pro 560","114 - AMD Radeon Pro 560X","115 - AMD Radeon Pro 460","116 - AMD Radeon Pro WX 4130","117 - NVIDIA GeForce GTX 960M","118 - NVIDIA GeForce GTX 750 Ti","119 - AMD Radeon RX 550 (Laptop)","123 - NVIDIA Quadro M1200","124 - AMD Radeon Pro 555","125 - AMD Radeon Pro 455","126 - NVIDIA GeForce GT 1030 (Desktop)","127 - NVIDIA GeForce MX150","128 - NVIDIA Quadro P600","129 - NVIDIA Quadro P500","130 - NVIDIA Quadro M2000M","131 - NVIDIA Quadro K5000M","132 - NVIDIA Quadro K4100M","133 - NVIDIA GeForce GTX 770M","134 - AMD Radeon RX 540","135 - AMD Radeon Pro WX 3100 Mobile","136 - NVIDIA GeForce GTX 860M","144 - NVIDIA GeForce GTX 950M","145 - AMD Radeon Pro 450","146 - AMD Radeon R9 M470X","147 - AMD Radeon R9 M385X","148 - NVIDIA GeForce GTX 850M","149 - NVIDIA Quadro M1000M","150 - NVIDIA Quadro M620","151 - AMD Radeon R9 M280X","152 - AMD Radeon RX Vega 11","157 - NVIDIA GeForce 945M","158 - NVIDIA GeForce GTX 765M","162 - NVIDIA Quadro K4000M","163 - AMD Radeon RX Vega 10","164 - Intel Iris Pro Graphics P580","165 - Intel Iris Pro Graphics 580","170 - AMD Radeon R9 M470","172 - AMD Radeon R9 M380","181 - NVIDIA Quadro K3100M","182 - AMD FirePro W5170M","183 - AMD Radeon R9 M370X","186 - NVIDIA GeForce GTX 760M","187 - AMD Radeon R9 M275","189 - NVIDIA Maxwell GPU Surface Book (940M, GDDR5)","190 - AMD FirePro W5130M","196 - NVIDIA Quadro K3000M","198 - AMD FirePro M6000","199 - AMD FirePro M5100","200 - NVIDIA Quadro K2100M","205 - AMD Radeon R7 250","206 - NVIDIA GeForce GT 755M","208 - NVIDIA GeForce 845M","211 - AMD Radeon R9 M265X","213 - AMD Radeon R7 M465","215 - AMD FirePro W4170M","216 - AMD FirePro W4100","221 - NVIDIA GeForce GT 750M","222 - Intel Iris Pro Graphics 6200","223 - NVIDIA Quadro M520","224 - NVIDIA GeForce MX130","225 - NVIDIA GeForce 940MX","226 - NVIDIA Quadro K1100M","227 - AMD Radeon RX Vega 8","228 - NVIDIA GeForce 940M","229 - NVIDIA GeForce 930MX","230 - NVIDIA Quadro M600M","231 - AMD FirePro W4190M","232 - AMD Radeon R9 M375","233 - AMD Radeon R7 M445","235 - AMD Radeon R7 M370","238 - NVIDIA Quadro M500M","239 - NVIDIA GeForce 840M","240 - AMD Radeon R7 M275DX","241 - NVIDIA GeForce GT 745M","244 - AMD Radeon R7 (Bristol Ridge)","245 - AMD Radeon R7 512 Cores (Kaveri Desktop)","246 - Intel Iris Pro Graphics 5200","247 - AMD Radeon R7 384 Cores (Kaveri Desktop)","248 - NVIDIA GeForce GT 740M","249 - Intel Iris Plus Graphics 650","250 - Intel Iris Plus Graphics 655","251 - NVIDIA GeForce 930M","252 - Intel Iris Graphics 550","253 - AMD Radeon 530","254 - NVIDIA GeForce 830M","255 - NVIDIA GeForce MX110","256 - Intel Iris Plus Graphics 640","257 - NVIDIA GeForce 920MX","258 - Intel Iris Graphics 540","261 - NVIDIA Quadro K2000M","264 - NVIDIA GeForce GT 735M","266 - NVIDIA GeForce 825M","268 - AMD FirePro M4000","275 - AMD Radeon R7 M260X","278 - NVIDIA GeForce GT 730M","281 - AMD FirePro M4100","284 - AMD Radeon R7 M270","285 - AMD Radeon R7 M265","289 - NVIDIA GeForce GT 640M","290 - AMD Radeon R7 (Carrizo)","291 - AMD Radeon R7 (Kaveri)","292 - AMD Radeon R8 M365DX","293 - AMD Radeon R7 M460","296 - AMD Radeon R7 M360","298 - NVIDIA GeForce 920M","301 - AMD Radeon R8 M445DX","302 - AMD Radeon R7 M440","308 - AMD Radeon R7 M260","309 - AMD Radeon R7 M340","310 - AMD Radeon 520","311 - AMD Radeon R6 M340DX","312 - AMD Radeon RX Vega 6","313 - Intel UHD Graphics 630","314 - Intel HD Graphics 630","315 - Intel HD Graphics P630","316 - Intel HD Graphics 530","317 - Intel HD Graphics P530","319 - AMD Radeon R5 (Bristol Ridge)","320 - Intel UHD Graphics 620","321 - Intel HD Graphics 620","322 - AMD Radeon R6 (Carrizo)","334 - AMD Radeon R6 (Kaveri)","343 - AMD FirePro W2100","353 - Intel HD Graphics 5600","360 - AMD Radeon R6 M255DX","361 - AMD Radeon HD 7660D","363 - NVIDIA Quadro K1000M","379 - AMD Radeon HD 8650G","385 - AMD Radeon HD 7560D","387 - AMD Radeon R5 M335","388 - AMD Radeon R5 M330","389 - AMD Radeon R5 M430","390 - AMD Radeon R5 M255","392 - NVIDIA GeForce 910M","393 - NVIDIA GeForce 820M","394 - AMD Radeon RX Vega 3","395 - Intel HD Graphics 520","396 - Intel Iris Graphics 6100","397 - NVIDIA GeForce GT 720M","398 - AMD Radeon R5 (Stoney Ridge)","400 - AMD Radeon R5 M240","401 - AMD Radeon R5 M320","402 - AMD Radeon R5 M230","403 - AMD Radeon R5 M315","409 - Intel HD Graphics 6000","410 - NVIDIA Quadro K610M","412 - Intel Iris Graphics 5100","414 - AMD Radeon HD 8610G","417 - Intel HD Graphics 4600","419 - Intel HD Graphics 5500","426 - Intel UHD Graphics 615","428 - Intel HD Graphics 615","429 - AMD Radeon R5 (Carrizo)","430 - AMD Radeon R5 (Kaveri)","433 - NVIDIA GeForce 710M","434 - AMD Radeon HD 7660G","437 - Intel HD Graphics 5000","453 - AMD Radeon HD 8550G","462 - AMD Radeon HD 8470D","469 - Intel HD Graphics 515","470 - Intel HD Graphics 4400","471 - Intel HD Graphics 610","472 - Intel HD Graphics 510","501 - Intel HD Graphics 5300","502 - Intel UHD Graphics 605","503 - Intel HD Graphics 505","511 - AMD Radeon HD 7480D","512 - Intel HD Graphics 4000","516 - AMD Radeon R4 (Stoney Ridge)","517 - AMD Radeon R4 (Kaveri)","518 - Intel HD Graphics (Broadwell)","520 - AMD Radeon R5 (Beema/Carrizo-L)","521 - AMD Radeon R4 (Beema)","522 - AMD Radeon R3 (Mullins/Beema)","523 - AMD Radeon R2 (Stoney Ridge)","524 - Intel HD Graphics 4200","533 - AMD Radeon HD 8450G","537 - AMD Radeon HD 8400","550 - AMD Radeon HD 8350G","551 - AMD Radeon HD 8330","552 - Intel UHD Graphics 600","553 - Intel HD Graphics 500","573 - Intel HD Graphics 405 (Braswell)","574 - Intel HD Graphics (Braswell)","575 - Intel HD Graphics 400 (Braswell)","584 - Intel HD Graphics (Haswell)","604 - AMD Radeon R2 (Mullins/Beema/Carrizo-L)","605 - Intel HD Graphics (Cherry Trail)","607 - AMD Radeon HD 8280","615 - AMD Radeon HD 8240","616 - AMD Radeon R6 (Mullins)","617 - AMD Radeon HD 8250","641 - AMD Radeon HD 8210","645 - Intel HD Graphics (Ivy Bridge)","686 - Intel HD Graphics (Bay Trail)","690 - AMD Radeon HD 7340","692 - AMD Radeon HD 7310","694 - AMD Radeon HD 8180","704 - AMD Radeon HD 7290"],a=["259 - Apple A11 Bionic GPU","260 - Apple A10X Fusion GPU / PowerVR","295 - Apple A9X / PowerVR Series 7XT","318 - NVIDIA Tegra X1 Maxwell GPU","404 - Apple A10 Fusion GPU / PowerVR","420 - Qualcomm Adreno 630","421 - Qualcomm Adreno 540","422 - ARM Mali-G72 MP18","423 - ARM Mali-G71 MP20","424 - ARM Mali-G72 MP12","425 - ARM Mali-G71 MP8","464 - Qualcomm Adreno 530","465 - PowerVR GXA6850","466 - NVIDIA Tegra K1 Kepler GPU","467 - Apple A9 / PowerVR GT7600","468 - ARM Mali-T880 MP12","513 - ARM Mali-T760 MP8","514 - ARM Mali-G71 MP2","519 - Qualcomm Adreno 430","538 - ARM Mali-G72 MP3","539 - ARM Mali-T880 MP4","571 - ARM Mali-T760 MP6","572 - ARM Mali-T880 MP2","582 - PowerVR GX6450","583 - Qualcomm Adreno 420","603 - Qualcomm Adreno 418","605 - Intel HD Graphics (Cherry Trail)","680 - Qualcomm Adreno 512","681 - Qualcomm Adreno 510","682 - Qualcomm Adreno 330","683 - PowerVR G6430","684 - PowerVR GX6250","685 - PowerVR G6400","686 - Intel HD Graphics (Bay Trail)","687 - ARM Mali-T628 MP6","688 - ARM Mali-T760 MP4","726 - PowerVR SGX554MP4","727 - ARM Mali-T628 MP4","728 - Qualcomm Adreno 509","729 - Qualcomm Adreno 508","730 - Qualcomm Adreno 506","731 - Qualcomm Adreno 505","735 - ARM Mali-T860 MP2","736 - ARM Mali-T830 MP3","742 - ARM Mali-T604 MP4","747 - NVIDIA GeForce Tegra 4","748 - PowerVR G6200","749 - Qualcomm Adreno 405","750 - ARM Mali-T830 MP2","777 - PowerVR SGX543MP4","778 - ARM Mali-T624","779 - Qualcomm Adreno 320","780 - ARM Mali-T760 MP2","781 - PowerVR GE8100","782 - ARM Mali-T720 MP4","783 - ARM Mali-450 MP4","784 - ARM Mali-T830 MP1","792 - PowerVR SGX543MP3","802 - PowerVR SGX543MP2","805 - PowerVR SGX545","806 - PowerVR SGX544MP2","807 - ARM Mali-T720 MP2","808 - PowerVR SGX544","809 - Qualcomm Adreno 308","810 - Qualcomm Adreno 306","811 - Qualcomm Adreno 305","812 - Qualcomm Adreno 304","813 - ARM Mali-T720","814 - Vivante GC7000UL","815 - Qualcomm Adreno 302","823 - Qualcomm Adreno 225","824 - Vivante GC4000","825 - ARM Mali-400 MP4","826 - NVIDIA GeForce ULP (Tegra 3)","827 - Broadcom VideoCore-IV","828 - Qualcomm Adreno 220","829 - Vivante GC1000+ Dual-Core","830 - ARM Mali-400 MP2","831 - ARM Mali-400 MP","832 - NVIDIA GeForce ULP (Tegra 2)","834 - PowerVR SGX540","836 - Qualcomm Adreno 205","837 - Qualcomm Adreno 203","838 - Vivante GC800","839 - PowerVR SGX535","840 - PowerVR SGX531","841 - PowerVR SGX530","842 - Qualcomm Adreno 200","843 - ARM Mali-200"],t=function(){function e(e,o){for(var r=0;r<o.length;r++){var n=o[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(o,r,n){return r&&e(o.prototype,r),n&&e(o,n),o}}();var i=function(){function e(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;!function(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),this.setUserAgent(o)}return t(e,[{key:"match",value:function(e){return this.matchCache[e]||(this.matchCache[e]=this.userAgent.indexOf(e)>-1),this.matchCache[e]}},{key:"getUserAgent",value:function(){return"undefined"!=typeof document?window.navigator.userAgent:""}},{key:"setUserAgent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.userAgent=e||this.userAgent||this.getUserAgent(),this.userAgent&&(this.matchCache={},this.userAgent=this.userAgent.toLowerCase())}},{key:"iphone",get:function(){return!this.windows&&this.match("iphone")}},{key:"ipod",get:function(){return this.match("ipod")}},{key:"ipad",get:function(){return this.match("ipad")}},{key:"android",get:function(){return!this.windows&&this.match("android")}},{key:"androidPhone",get:function(){return this.android&&this.match("mobile")}},{key:"androidTablet",get:function(){return this.android&&!this.match("mobile")}},{key:"blackberry",get:function(){return this.match("blackberry")||this.match("bb10")||this.match("rim")}},{key:"blackberryPhone",get:function(){return this.blackberry&&!this.match("tablet")}},{key:"blackberryTablet",get:function(){return this.blackberry&&this.match("tablet")}},{key:"windows",get:function(){return this.match("windows")}},{key:"windowsPhone",get:function(){return this.windows&&this.match("phone")}},{key:"windowsTablet",get:function(){return this.windows&&this.match("touch")&&!this.windowsPhone}},{key:"fxos",get:function(){return(this.match("(mobile;")||this.match("(tablet;"))&&this.match("; rv:")}},{key:"fxosPhone",get:function(){return this.fxos&&this.match("mobile")}},{key:"fxosTablet",get:function(){return this.fxos&&this.match("tablet")}},{key:"meego",get:function(){return this.match("meego")}},{key:"mobile",get:function(){return this.androidPhone||this.iphone||this.ipod||this.windowsPhone||this.blackberryPhone||this.fxosPhone||this.meego}},{key:"tablet",get:function(){return this.ipad||this.androidTablet||this.blackberryTablet||this.windowsTablet||this.fxosTablet}}]),e}();function M(e,o){var r=0,n=e.reverse();return o.map(function(e){var o=Math.round(n.length/100*e),a=n.slice(r,r+o);return r+=o,a})}r.d(o,"register",function(){return l});var D=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var r=arguments[o];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},A=new i,d=function(e){var o=document.createElement("canvas"),r=o.getContext("webgl",e)||o.getContext("experimental-webgl",e);return!!(r&&r instanceof window.WebGLRenderingContext)&&r}(),c=d.getExtension("WEBGL_debug_renderer_info"),I=c&&d.getParameter(c.UNMASKED_RENDERER_WEBGL).toLowerCase(),R=parseInt(I.slice().replace(/[\D]/g,""),10);function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return D(this,e),this.BENCHMARK_TIER_PERCENTAGES_MOBILE=[15,35,30,20],this.BENCHMARK_TIER_PERCENTAGES_DESKTOP=[15,35,30,20],{GPU_TIER:function(e,o){var r=M(a,e),t=M(n,o),i=/(radeon hd 6970m|radeon hd 6770m|radeon hd 6490m|radeon hd 6630m|radeon hd 6750m|radeon hd 5750|radeon hd 5670|radeon hd 4850|radeon hd 4870|radeon hd 4670|geforce 9400m|geforce 320m|geforce 330m|geforce gt 130|geforce gt 120|geforce gtx 285|geforce 8600|geforce 9600m|geforce 9400m|geforce 8800 gs|geforce 8800 gt|quadro fx 5|quadro fx 4|radeon hd 2600|radeon hd 2400|radeon hd 2600|radeon r9 200|mali-4|mali-3|mali-2)/.test(I);if(!d||i)return A.mobile||A.tablet?"GPU_MOBILE_TIER_0":"GPU_DESKTOP_TIER_0";if(!I)return A.mobile||A.tablet?"GPU_MOBILE_TIER_1":"GPU_DESKTOP_TIER_1";if(A.mobile||A.tablet){var D=I.includes("adreno"),c=I.includes("apple"),l=I.includes("mali")&&!I.includes("mali-t"),s=I.includes("mali-t"),G=I.includes("nvidia"),u=I.includes("powervr"),h=void 0;return r.some(function(e,o){return e.some(function(e){var r=e.toLowerCase().split("- ")[1];(r.includes("adreno")&&D||r.includes("apple")&&c||r.includes("mali")&&!r.includes("mali-t")&&l||r.includes("mali-t")&&s||r.includes("nvidia")&&G||r.includes("powervr")&&u)&&r.includes(R)&&(h="GPU_MOBILE_TIER_"+o)})}),void 0===h&&(console.log("Matching GPU tier could not be found, using fallback: GPU_MOBILE_TIER_1"),h="GPU_MOBILE_TIER_1"),h}var p=I.includes("intel"),V=I.includes("amd"),P=I.includes("nvidia"),T=void 0;return t.forEach(function(e,o){return e.forEach(function(e){var r=e.toLowerCase().split("- ")[1];(r.includes("intel")&&p||r.includes("amd")&&V||r.includes("nvidia")&&P)&&r.includes(R)&&(T="GPU_DESKTOP_TIER_"+o)})}),void 0===T&&(console.log("Matching GPU tier could not be found, using fallback: GPU_DESKTOP_TIER_1"),T="GPU_DESKTOP_TIER_1"),T}(this.BENCHMARK_TIER_PERCENTAGES_MOBILE,this.BENCHMARK_TIER_PERCENTAGES_DESKTOP),DETECTED_RENDERER:I}}}])});
{
"name": "detect-gpu",
"version": "0.0.3",
"version": "0.0.4",
"description": "Classify GPU's based on their benchmark score in order to provide an adaptive experience.",

@@ -5,0 +5,0 @@ "main": "dist/detect-gpu.js",

@@ -13,5 +13,4 @@ // Data

const glExtensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');
const unmaskedRenderer = glExtensionDebugRendererInfo
const renderer = glExtensionDebugRendererInfo
&& gl.getParameter(glExtensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL).toLowerCase();
const renderer = unmaskedRenderer || gl.getParameter(gl.SHADING_LANGUAGE_VERSION).toLowerCase();
const versionNumber = parseInt(renderer.slice().replace(/[\D]/g, ''), 10);

@@ -67,2 +66,10 @@

if (!renderer) {
if (device.mobile || device.tablet) {
return 'GPU_MOBILE_TIER_1';
}
return 'GPU_DESKTOP_TIER_1';
}
if (device.mobile || device.tablet) {

@@ -69,0 +76,0 @@ // Mobile

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc