UNPKG

@reactant/web

Version:
192 lines (130 loc) 22.1 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } require("core-js/modules/es.symbol"); require("core-js/modules/es.symbol.description"); require("core-js/modules/es.symbol.iterator"); require("core-js/modules/es.array.concat"); require("core-js/modules/es.array.filter"); require("core-js/modules/es.array.for-each"); require("core-js/modules/es.array.from"); require("core-js/modules/es.array.includes"); require("core-js/modules/es.array.index-of"); require("core-js/modules/es.array.iterator"); require("core-js/modules/es.array.reduce"); require("core-js/modules/es.array.slice"); require("core-js/modules/es.function.name"); require("core-js/modules/es.object.get-own-property-descriptor"); require("core-js/modules/es.object.get-own-property-descriptors"); require("core-js/modules/es.object.keys"); require("core-js/modules/es.object.to-string"); require("core-js/modules/es.regexp.to-string"); require("core-js/modules/es.string.includes"); require("core-js/modules/es.string.iterator"); require("core-js/modules/web.dom-collections.for-each"); require("core-js/modules/web.dom-collections.iterator"); var _context = _interopRequireWildcard(require("@reactant/context")); var _path = _interopRequireDefault(require("path")); var _cracoPluginReactHotReload = _interopRequireDefault(require("craco-plugin-react-hot-reload")); var _util = _interopRequireDefault(require("util")); var _webpackBundleAnalyzer = require("webpack-bundle-analyzer"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function updatePaths(paths, webPath, buildPath) { if (buildPath) paths.appBuild = buildPath; paths.appIndexJs = _path.default.resolve(webPath, 'index.tsx'); paths.appSrc = webPath; paths.appTypeDeclarations = _path.default.resolve(webPath, 'react-app-env.d.ts'); paths.proxySetup = _path.default.resolve(webPath, 'setupProxy.js'); paths.testsSetup = _path.default.resolve(webPath, 'setupTests.js'); } function findJSRules(rules) { return rules.reduce(function (rules, rule) { if (rule.test && rule.test.toString().indexOf('js|mjs|jsx|ts|tsx')) { rules.push(rule); } else if (rule.oneOf) { rules = [].concat(_toConsumableArray(rules), _toConsumableArray(findJSRules(rule.oneOf))); } return rules; }, []); } function overrideCracoConfig(args) { var _context$config2, _context$config3; var cracoConfig = args.cracoConfig; var cracoContext = args.context; var context = (0, _context.default)(); if (!cracoConfig.webpack) cracoConfig.webpack = {}; cracoConfig.webpack.configure = function (webpackConfig, _ref) { var _context$config; var paths = _ref.paths; var webPath = _path.default.resolve(context.paths.root, context.platformName); var srcPath = _path.default.resolve(context.paths.root, 'src'); var buildPath = null; if (context.action === 'build') { buildPath = _path.default.resolve(context.paths.root, context.paths.build); if (!webpackConfig.output) webpackConfig.output = {}; webpackConfig.output.path = buildPath; if (!webpackConfig.plugins) webpackConfig.plugins = []; if (context.options.analyze) { webpackConfig.plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin()); } } updatePaths(paths, webPath, buildPath); webpackConfig.entry = [_path.default.resolve(webPath, 'index.tsx')]; findJSRules(webpackConfig.module ? webpackConfig.module.rules : []).forEach(function (rule) { rule.include = [webPath, srcPath].concat(_toConsumableArray(context.includePaths)); }); if (!webpackConfig.resolve) webpackConfig.resolve = {}; if (!webpackConfig.resolve.alias) webpackConfig.resolve.alias = {}; if (cracoContext.env === 'development') { webpackConfig.resolve.alias['react-dom'] = _path.default.resolve(context.paths.root, 'node_modules/react-dom'); } (webpackConfig.resolve.plugins || []).forEach(function (plugin) { var moduleScopePlugin = plugin; if (moduleScopePlugin.appSrcs && moduleScopePlugin.appSrcs.includes(srcPath)) { moduleScopePlugin.appSrcs = [webPath, srcPath]; } }); webpackConfig = (0, _context.merge)(webpackConfig, // eslint-disable-next-line no-undef ((_context$config = context.config) === null || _context$config === void 0 ? void 0 : _context$config.webpack) || {}); if (typeof webpackConfig.entry === 'string') { webpackConfig.entry = [webpackConfig.entry]; } webpackConfig.entry.unshift('react-hot-loader/patch'); if (context.debug) { // eslint-disable-next-line no-console console.info('\n\n======== START WEBPACK ========\n', _util.default.inspect(webpackConfig, { colors: true, showHidden: true, depth: null }), '\n========= END WEBPACK =========\n\n'); } return webpackConfig; }; (_context$config2 = context.config) === null || _context$config2 === void 0 ? void 0 : _context$config2.babel.plugins.push(['transform-inline-environment-variables', { include: Object.keys(context.envs) }]); cracoConfig.babel = (0, _context.merge)(cracoConfig.babel || {}, // eslint-disable-next-line no-undef (_context$config3 = context.config) === null || _context$config3 === void 0 ? void 0 : _context$config3.babel); process.env = _objectSpread(_objectSpread({}, process.env), context.envs); return cracoConfig; } module.exports = { plugins: [{ plugin: _cracoPluginReactHotReload.default }, { plugin: { overrideCracoConfig: overrideCracoConfig } }] }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZXMvY3JhY28uY29uZmlnLnRzIl0sIm5hbWVzIjpbInVwZGF0ZVBhdGhzIiwicGF0aHMiLCJ3ZWJQYXRoIiwiYnVpbGRQYXRoIiwiYXBwQnVpbGQiLCJhcHBJbmRleEpzIiwicGF0aCIsInJlc29sdmUiLCJhcHBTcmMiLCJhcHBUeXBlRGVjbGFyYXRpb25zIiwicHJveHlTZXR1cCIsInRlc3RzU2V0dXAiLCJmaW5kSlNSdWxlcyIsInJ1bGVzIiwicmVkdWNlIiwicnVsZSIsInRlc3QiLCJ0b1N0cmluZyIsImluZGV4T2YiLCJwdXNoIiwib25lT2YiLCJvdmVycmlkZUNyYWNvQ29uZmlnIiwiYXJncyIsImNyYWNvQ29uZmlnIiwiY3JhY29Db250ZXh0IiwiY29udGV4dCIsIndlYnBhY2siLCJjb25maWd1cmUiLCJ3ZWJwYWNrQ29uZmlnIiwicm9vdCIsInBsYXRmb3JtTmFtZSIsInNyY1BhdGgiLCJhY3Rpb24iLCJidWlsZCIsIm91dHB1dCIsInBsdWdpbnMiLCJvcHRpb25zIiwiYW5hbHl6ZSIsIkJ1bmRsZUFuYWx5emVyUGx1Z2luIiwiZW50cnkiLCJtb2R1bGUiLCJmb3JFYWNoIiwiaW5jbHVkZSIsImluY2x1ZGVQYXRocyIsImFsaWFzIiwiZW52IiwicGx1Z2luIiwibW9kdWxlU2NvcGVQbHVnaW4iLCJhcHBTcmNzIiwiaW5jbHVkZXMiLCJjb25maWciLCJ1bnNoaWZ0IiwiZGVidWciLCJjb25zb2xlIiwiaW5mbyIsInV0aWwiLCJpbnNwZWN0IiwiY29sb3JzIiwic2hvd0hpZGRlbiIsImRlcHRoIiwiYmFiZWwiLCJPYmplY3QiLCJrZXlzIiwiZW52cyIsInByb2Nlc3MiLCJleHBvcnRzIiwiY3JhY29QbHVnaW5SZWFjdEhvdFJlbG9hZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7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QVAsQ0FBWXJDLE9BQU8sQ0FBQ3NDLElBQXBCO0FBRFgsR0FGaUMsQ0FBbkM7QUFNQXhDLEVBQUFBLFdBQVcsQ0FBQ3FDLEtBQVosR0FBb0Isb0JBQ2xCckMsV0FBVyxDQUFDcUMsS0FBWixJQUFxQixFQURILEVBRWxCO0FBRmtCLHNCQUdsQm5DLE9BQU8sQ0FBQ3lCLE1BSFUscURBR2xCLGlCQUFnQlUsS0FIRSxDQUFwQjtBQUtBSSxFQUFBQSxPQUFPLENBQUNuQixHQUFSLG1DQUNLbUIsT0FBTyxDQUFDbkIsR0FEYixHQUVLcEIsT0FBTyxDQUFDc0MsSUFGYjtBQUlBLFNBQU94QyxXQUFQO0FBQ0Q7O0FBRURpQixNQUFNLENBQUN5QixPQUFQLEdBQWlCO0FBQ2Y5QixFQUFBQSxPQUFPLEVBQUUsQ0FDUDtBQUFFVyxJQUFBQSxNQUFNLEVBQUVvQjtBQUFWLEdBRE8sRUFFUDtBQUNFcEIsSUFBQUEsTUFBTSxFQUFFO0FBQ056QixNQUFBQSxtQkFBbUIsRUFBbkJBO0FBRE07QUFEVixHQUZPO0FBRE0sQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0Q29udGV4dCwgeyBtZXJnZSB9IGZyb20gJ0ByZWFjdGFudC9jb250ZXh0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGNyYWNvUGx1Z2luUmVhY3RIb3RSZWxvYWQgZnJvbSAnY3JhY28tcGx1Z2luLXJlYWN0LWhvdC1yZWxvYWQnO1xuaW1wb3J0IHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVBbmFseXplclBsdWdpbiB9IGZyb20gJ3dlYnBhY2stYnVuZGxlLWFuYWx5emVyJztcbmltcG9ydCB7IENyYWNvQ29uZmlnLCBDcmFjb0JhYmVsIH0gZnJvbSAnQGNyYWNvL2NyYWNvJztcbmltcG9ydCB7IFBhdGhzIH0gZnJvbSAnQHJlYWN0YW50L3BsYXRmb3JtJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb24gYXMgV2VicGFja0NvbmZpZyxcbiAgUmVzb2x2ZVBsdWdpbixcbiAgUnVsZVNldFJ1bGVcbn0gZnJvbSAnd2VicGFjayc7XG5cbmludGVyZmFjZSBNb2R1bGVTY29wZVBsdWdpbiB7XG4gIGFwcFNyY3M6IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVQYXRocyhwYXRoczogUGF0aHMsIHdlYlBhdGg6IHN0cmluZywgYnVpbGRQYXRoOiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmIChidWlsZFBhdGgpIHBhdGhzLmFwcEJ1aWxkID0gYnVpbGRQYXRoO1xuICBwYXRocy5hcHBJbmRleEpzID0gcGF0aC5yZXNvbHZlKHdlYlBhdGgsICdpbmRleC50c3gnKTtcbiAgcGF0aHMuYXBwU3JjID0gd2ViUGF0aDtcbiAgcGF0aHMuYXBwVHlwZURlY2xhcmF0aW9ucyA9IHBhdGgucmVzb2x2ZSh3ZWJQYXRoLCAncmVhY3QtYXBwLWVudi5kLnRzJyk7XG4gIHBhdGhzLnByb3h5U2V0dXAgPSBwYXRoLnJlc29sdmUod2ViUGF0aCwgJ3NldHVwUHJveHkuanMnKTtcbiAgcGF0aHMudGVzdHNTZXR1cCA9IHBhdGgucmVzb2x2ZSh3ZWJQYXRoLCAnc2V0dXBUZXN0cy5qcycpO1xufVxuXG5mdW5jdGlvbiBmaW5kSlNSdWxlcyhydWxlczogUnVsZVNldFJ1bGVbXSk6IFJ1bGVTZXRSdWxlW10ge1xuICByZXR1cm4gcnVsZXMucmVkdWNlKChydWxlczogUnVsZVNldFJ1bGVbXSwgcnVsZTogUnVsZVNldFJ1bGUpID0+IHtcbiAgICBpZiAocnVsZS50ZXN0ICYmIHJ1bGUudGVzdC50b1N0cmluZygpLmluZGV4T2YoJ2pzfG1qc3xqc3h8dHN8dHN4JykpIHtcbiAgICAgIHJ1bGVzLnB1c2gocnVsZSk7XG4gICAgfSBlbHNlIGlmIChydWxlLm9uZU9mKSB7XG4gICAgICBydWxlcyA9IFsuLi5ydWxlcywgLi4uZmluZEpTUnVsZXMocnVsZS5vbmVPZildO1xuICAgIH1cbiAgICByZXR1cm4gcnVsZXM7XG4gIH0sIFtdKTtcbn1cblxuZnVuY3Rpb24gb3ZlcnJpZGVDcmFjb0NvbmZpZyhhcmdzOiB7XG4gIGNyYWNvQ29uZmlnOiBDcmFjb0NvbmZpZztcbiAgY29udGV4dDoge1xuICAgIGVudjogc3RyaW5nO1xuICAgIHBhdGhzOiBzdHJpbmdbXTtcbiAgfTtcbn0pOiBDcmFjb0NvbmZpZyB7XG4gIGNvbnN0IHsgY3JhY29Db25maWcgfSA9IGFyZ3M7XG4gIGNvbnN0IGNyYWNvQ29udGV4dCA9IGFyZ3MuY29udGV4dDtcbiAgY29uc3QgY29udGV4dCA9IGdldENvbnRleHQoKTtcbiAgaWYgKCFjcmFjb0NvbmZpZy53ZWJwYWNrKSBjcmFjb0NvbmZpZy53ZWJwYWNrID0ge307XG4gIGNyYWNvQ29uZmlnLndlYnBhY2suY29uZmlndXJlID0gKFxuICAgIHdlYnBhY2tDb25maWc6IFdlYnBhY2tDb25maWcsXG4gICAgeyBwYXRocyB9OiB7IHBhdGhzOiBQYXRocyB9XG4gICk6IFdlYnBhY2tDb25maWcgPT4ge1xuICAgIGNvbnN0IHdlYlBhdGggPSBwYXRoLnJlc29sdmUoY29udGV4dC5wYXRocy5yb290LCBjb250ZXh0LnBsYXRmb3JtTmFtZSk7XG4gICAgY29uc3Qgc3JjUGF0aCA9IHBhdGgucmVzb2x2ZShjb250ZXh0LnBhdGhzLnJvb3QsICdzcmMnKTtcbiAgICBsZXQgYnVpbGRQYXRoID0gbnVsbDtcbiAgICBpZiAoY29udGV4dC5hY3Rpb24gPT09ICdidWlsZCcpIHtcbiAgICAgIGJ1aWxkUGF0aCA9IHBhdGgucmVzb2x2ZShjb250ZXh0LnBhdGhzLnJvb3QsIGNvbnRleHQucGF0aHMuYnVpbGQpO1xuICAgICAgaWYgKCF3ZWJwYWNrQ29uZmlnLm91dHB1dCkgd2VicGFja0NvbmZpZy5vdXRwdXQgPSB7fTtcbiAgICAgIHdlYnBhY2tDb25maWcub3V0cHV0LnBhdGggPSBidWlsZFBhdGg7XG4gICAgICBpZiAoIXdlYnBhY2tDb25maWcucGx1Z2lucykgd2VicGFja0NvbmZpZy5wbHVnaW5zID0gW107XG4gICAgICBpZiAoY29udGV4dC5vcHRpb25zLmFuYWx5emUpIHtcbiAgICAgICAgd2VicGFja0NvbmZpZy5wbHVnaW5zLnB1c2gobmV3IEJ1bmRsZUFuYWx5emVyUGx1Z2luKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGVQYXRocyhwYXRocywgd2ViUGF0aCwgYnVpbGRQYXRoKTtcbiAgICB3ZWJwYWNrQ29uZmlnLmVudHJ5ID0gW3BhdGgucmVzb2x2ZSh3ZWJQYXRoLCAnaW5kZXgudHN4JyldO1xuICAgIGZpbmRKU1J1bGVzKHdlYnBhY2tDb25maWcubW9kdWxlID8gd2VicGFja0NvbmZpZy5tb2R1bGUucnVsZXMgOiBbXSkuZm9yRWFjaChcbiAgICAgIChydWxlOiBSdWxlU2V0UnVsZSkgPT4ge1xuICAgICAgICBydWxlLmluY2x1ZGUgPSBbd2ViUGF0aCwgc3JjUGF0aCwgLi4uY29udGV4dC5pbmNsdWRlUGF0aHNdO1xuICAgICAgfVxuICAgICk7XG4gICAgaWYgKCF3ZWJwYWNrQ29uZmlnLnJlc29sdmUpIHdlYnBhY2tDb25maWcucmVzb2x2ZSA9IHt9O1xuICAgIGlmICghd2VicGFja0NvbmZpZy5yZXNvbHZlLmFsaWFzKSB3ZWJwYWNrQ29uZmlnLnJlc29sdmUuYWxpYXMgPSB7fTtcbiAgICBpZiAoY3JhY29Db250ZXh0LmVudiA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgd2VicGFja0NvbmZpZy5yZXNvbHZlLmFsaWFzWydyZWFjdC1kb20nXSA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgY29udGV4dC5wYXRocy5yb290LFxuICAgICAgICAnbm9kZV9tb2R1bGVzL3JlYWN0LWRvbSdcbiAgICAgICk7XG4gICAgfVxuICAgICh3ZWJwYWNrQ29uZmlnLnJlc29sdmUucGx1Z2lucyB8fCBbXSkuZm9yRWFjaCgocGx1Z2luOiBSZXNvbHZlUGx1Z2luKSA9PiB7XG4gICAgICBjb25zdCBtb2R1bGVTY29wZVBsdWdpbiA9IChwbHVnaW4gYXMgdW5rbm93bikgYXMgTW9kdWxlU2NvcGVQbHVnaW47XG4gICAgICBpZiAoXG4gICAgICAgIG1vZHVsZVNjb3BlUGx1Z2luLmFwcFNyY3MgJiZcbiAgICAgICAgbW9kdWxlU2NvcGVQbHVnaW4uYXBwU3Jjcy5pbmNsdWRlcyhzcmNQYXRoKVxuICAgICAgKSB7XG4gICAgICAgIG1vZHVsZVNjb3BlUGx1Z2luLmFwcFNyY3MgPSBbd2ViUGF0aCwgc3JjUGF0aF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgd2VicGFja0NvbmZpZyA9IG1lcmdlPFdlYnBhY2tDb25maWc+KFxuICAgICAgd2VicGFja0NvbmZpZyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgICAgY29udGV4dC5jb25maWc/LndlYnBhY2sgfHwge31cbiAgICApO1xuICAgIGlmICh0eXBlb2Ygd2VicGFja0NvbmZpZy5lbnRyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHdlYnBhY2tDb25maWcuZW50cnkgPSBbd2VicGFja0NvbmZpZy5lbnRyeV07XG4gICAgfVxuICAgICgod2VicGFja0NvbmZpZy5lbnRyeSBhcyB1bmtub3duKSBhcyBzdHJpbmdbXSkudW5zaGlmdChcbiAgICAgICdyZWFjdC1ob3QtbG9hZGVyL3BhdGNoJ1xuICAgICk7XG5cbiAgICBpZiAoY29udGV4dC5kZWJ1Zykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuaW5mbyhcbiAgICAgICAgJ1xcblxcbj09PT09PT09IFNUQVJUIFdFQlBBQ0sgPT09PT09PT1cXG4nLFxuICAgICAgICB1dGlsLmluc3BlY3Qod2VicGFja0NvbmZpZywge1xuICAgICAgICAgIGNvbG9yczogdHJ1ZSxcbiAgICAgICAgICBzaG93SGlkZGVuOiB0cnVlLFxuICAgICAgICAgIGRlcHRoOiBudWxsXG4gICAgICAgIH0pLFxuICAgICAgICAnXFxuPT09PT09PT09IEVORCBXRUJQQUNLID09PT09PT09PVxcblxcbidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB3ZWJwYWNrQ29uZmlnO1xuICB9O1xuICBjb250ZXh0LmNvbmZpZz8uYmFiZWwucGx1Z2lucy5wdXNoKFtcbiAgICAndHJhbnNmb3JtLWlubGluZS1lbnZpcm9ubWVudC12YXJpYWJsZXMnLFxuICAgIHtcbiAgICAgIGluY2x1ZGU6IE9iamVjdC5rZXlzKGNvbnRleHQuZW52cylcbiAgICB9XG4gIF0pO1xuICBjcmFjb0NvbmZpZy5iYWJlbCA9IG1lcmdlPENyYWNvQmFiZWw+KFxuICAgIGNyYWNvQ29uZmlnLmJhYmVsIHx8IHt9LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIGNvbnRleHQuY29uZmlnPy5iYWJlbFxuICApO1xuICBwcm9jZXNzLmVudiA9IHtcbiAgICAuLi5wcm9jZXNzLmVudixcbiAgICAuLi5jb250ZXh0LmVudnNcbiAgfTtcbiAgcmV0dXJuIGNyYWNvQ29uZmlnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcGx1Z2luczogW1xuICAgIHsgcGx1Z2luOiBjcmFjb1BsdWdpblJlYWN0SG90UmVsb2FkIH0sXG4gICAge1xuICAgICAgcGx1Z2luOiB7XG4gICAgICAgIG92ZXJyaWRlQ3JhY29Db25maWdcbiAgICAgIH1cbiAgICB9XG4gIF1cbn0gYXMgQ3JhY29Db25maWc7XG4iXX0=