1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.airbnbDeps = exports.standardDeps = exports.exactDevDeps = exports.devDeps = exports.deps = undefined;
|
7 |
|
8 | var _getIterator2 = require('babel-runtime/core-js/get-iterator');
|
9 |
|
10 | var _getIterator3 = _interopRequireDefault(_getIterator2);
|
11 |
|
12 | var _bluebird = require('bluebird');
|
13 |
|
14 | var _debug = require('debug');
|
15 |
|
16 | var _debug2 = _interopRequireDefault(_debug);
|
17 |
|
18 | var _fsExtra = require('fs-extra');
|
19 |
|
20 | var _fsExtra2 = _interopRequireDefault(_fsExtra);
|
21 |
|
22 | var _path = require('path');
|
23 |
|
24 | var _path2 = _interopRequireDefault(_path);
|
25 |
|
26 | var _username = require('username');
|
27 |
|
28 | var _username2 = _interopRequireDefault(_username);
|
29 |
|
30 | var _forgeConfig = require('../util/forge-config');
|
31 |
|
32 | var _installDependencies = require('../util/install-dependencies');
|
33 |
|
34 | var _installDependencies2 = _interopRequireDefault(_installDependencies);
|
35 |
|
36 | var _readPackageJson = require('../util/read-package-json');
|
37 |
|
38 | var _readPackageJson2 = _interopRequireDefault(_readPackageJson);
|
39 |
|
40 | var _oraHandler = require('../util/ora-handler');
|
41 |
|
42 | var _oraHandler2 = _interopRequireDefault(_oraHandler);
|
43 |
|
44 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
45 |
|
46 | const d = (0, _debug2.default)('electron-forge:init:npm');
|
47 |
|
48 | const deps = exports.deps = ['electron-compile', 'electron-squirrel-startup'];
|
49 | const devDeps = exports.devDeps = ['babel-preset-env', 'babel-preset-react', 'babel-plugin-transform-async-to-generator', 'electron-forge'];
|
50 | const exactDevDeps = exports.exactDevDeps = ['electron-prebuilt-compile'];
|
51 | const standardDeps = exports.standardDeps = ['standard'];
|
52 | const airbnbDeps = exports.airbnbDeps = ['eslint@^3', 'eslint-config-airbnb@^15', 'eslint-plugin-import@^2', 'eslint-plugin-jsx-a11y@^5', 'eslint-plugin-react@^7'];
|
53 |
|
54 | exports.default = (() => {
|
55 | var _ref = (0, _bluebird.coroutine)(function* (dir, lintStyle) {
|
56 | yield (0, _oraHandler2.default)('Initializing NPM Module', (0, _bluebird.coroutine)(function* () {
|
57 | const packageJSON = yield (0, _readPackageJson2.default)(_path2.default.resolve(__dirname, '../../tmpl'));
|
58 | packageJSON.productName = packageJSON.name = _path2.default.basename(dir).toLowerCase();
|
59 | packageJSON.author = yield (0, _username2.default)();
|
60 | (0, _forgeConfig.setInitialForgeConfig)(packageJSON);
|
61 |
|
62 | switch (lintStyle) {
|
63 | case 'standard':
|
64 | packageJSON.scripts.lint = 'standard';
|
65 | break;
|
66 | case 'airbnb':
|
67 | packageJSON.scripts.lint = 'eslint src --color';
|
68 | break;
|
69 | default:
|
70 | packageJSON.scripts.lint = 'echo "No linting configured"';
|
71 | break;
|
72 | }
|
73 | d('writing package.json to:', dir);
|
74 | yield _fsExtra2.default.writeJson(_path2.default.resolve(dir, 'package.json'), packageJSON, { spaces: 2 });
|
75 | }));
|
76 |
|
77 | yield (0, _oraHandler2.default)('Installing NPM Dependencies', (0, _bluebird.coroutine)(function* () {
|
78 | d('installing dependencies');
|
79 | yield (0, _installDependencies2.default)(dir, deps);
|
80 |
|
81 | d('installing devDependencies');
|
82 | yield (0, _installDependencies2.default)(dir, devDeps, true);
|
83 |
|
84 | d('installing exact dependencies');
|
85 | var _iteratorNormalCompletion = true;
|
86 | var _didIteratorError = false;
|
87 | var _iteratorError = undefined;
|
88 |
|
89 | try {
|
90 | for (var _iterator = (0, _getIterator3.default)(exactDevDeps), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
91 | const packageName = _step.value;
|
92 |
|
93 | yield (0, _installDependencies2.default)(dir, [packageName], true, true);
|
94 | }
|
95 | } catch (err) {
|
96 | _didIteratorError = true;
|
97 | _iteratorError = err;
|
98 | } finally {
|
99 | try {
|
100 | if (!_iteratorNormalCompletion && _iterator.return) {
|
101 | _iterator.return();
|
102 | }
|
103 | } finally {
|
104 | if (_didIteratorError) {
|
105 | throw _iteratorError;
|
106 | }
|
107 | }
|
108 | }
|
109 |
|
110 | switch (lintStyle) {
|
111 | case 'standard':
|
112 | d('installing standard linting dependencies');
|
113 | yield (0, _installDependencies2.default)(dir, standardDeps, true);
|
114 | break;
|
115 | case 'airbnb':
|
116 | d('installing airbnb linting dependencies');
|
117 | yield (0, _installDependencies2.default)(dir, airbnbDeps, true);
|
118 | break;
|
119 | default:
|
120 | d('not installing linting deps');
|
121 | break;
|
122 | }
|
123 |
|
124 | // NB: For babel-preset-env to work correctly, it needs to know the
|
125 | // actual version of Electron that we installed
|
126 | const content = yield _fsExtra2.default.readJson(_path2.default.join(dir, '.compilerc'), 'utf8');
|
127 | const electronPrebuilt = require(_path2.default.join(dir, 'node_modules', 'electron-prebuilt-compile', 'package.json'));
|
128 |
|
129 | var _arr = ['development', 'production'];
|
130 | for (var _i = 0; _i < _arr.length; _i++) {
|
131 | const profile = _arr[_i];
|
132 | const envTarget = content.env[profile]['application/javascript'].presets.find(function (x) {
|
133 | return x[0] === 'env';
|
134 | });
|
135 | // parseFloat strips the patch version
|
136 | // parseFloat('1.3.2') === 1.3
|
137 | // Note: This won't work if the minor version ever gets higher than 9
|
138 | envTarget[1].targets.electron = parseFloat(electronPrebuilt.version).toFixed(1).toString();
|
139 | }
|
140 |
|
141 | yield _fsExtra2.default.writeJson(_path2.default.join(dir, '.compilerc'), content, { spaces: 2 });
|
142 | }));
|
143 | });
|
144 |
|
145 | return function (_x, _x2) {
|
146 | return _ref.apply(this, arguments);
|
147 | };
|
148 | })();
|
149 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluaXQvaW5pdC1ucG0uanMiXSwibmFtZXMiOlsiZCIsImRlcHMiLCJkZXZEZXBzIiwiZXhhY3REZXZEZXBzIiwic3RhbmRhcmREZXBzIiwiYWlyYm5iRGVwcyIsImRpciIsImxpbnRTdHlsZSIsInBhY2thZ2VKU09OIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJwcm9kdWN0TmFtZSIsIm5hbWUiLCJiYXNlbmFtZSIsInRvTG93ZXJDYXNlIiwiYXV0aG9yIiwic2NyaXB0cyIsImxpbnQiLCJmcyIsIndyaXRlSnNvbiIsInNwYWNlcyIsInBhY2thZ2VOYW1lIiwiY29udGVudCIsInJlYWRKc29uIiwiam9pbiIsImVsZWN0cm9uUHJlYnVpbHQiLCJyZXF1aXJlIiwicHJvZmlsZSIsImVudlRhcmdldCIsImVudiIsInByZXNldHMiLCJmaW5kIiwieCIsInRhcmdldHMiLCJlbGVjdHJvbiIsInBhcnNlRmxvYXQiLCJ2ZXJzaW9uIiwidG9GaXhlZCIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLE1BQU1BLElBQUkscUJBQU0seUJBQU4sQ0FBVjs7QUFFTyxNQUFNQyxzQkFBTyxDQUFDLGtCQUFELEVBQXFCLDJCQUFyQixDQUFiO0FBQ0EsTUFBTUMsNEJBQVUsQ0FBQyxrQkFBRCxFQUFxQixvQkFBckIsRUFBMkMsMkNBQTNDLEVBQXdGLGdCQUF4RixDQUFoQjtBQUNBLE1BQU1DLHNDQUFlLENBQUMsMkJBQUQsQ0FBckI7QUFDQSxNQUFNQyxzQ0FBZSxDQUFDLFVBQUQsQ0FBckI7QUFDQSxNQUFNQyxrQ0FBYSxDQUFDLFdBQUQsRUFBYywwQkFBZCxFQUEwQyx5QkFBMUMsRUFDeEIsMkJBRHdCLEVBQ0ssd0JBREwsQ0FBbkI7OztzQ0FHUSxXQUFPQyxHQUFQLEVBQVlDLFNBQVosRUFBMEI7QUFDdkMsVUFBTSwwQkFBUyx5QkFBVCwyQkFBb0MsYUFBWTtBQUNwRCxZQUFNQyxjQUFjLE1BQU0sK0JBQWdCQyxlQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsWUFBeEIsQ0FBaEIsQ0FBMUI7QUFDQUgsa0JBQVlJLFdBQVosR0FBMEJKLFlBQVlLLElBQVosR0FBbUJKLGVBQUtLLFFBQUwsQ0FBY1IsR0FBZCxFQUFtQlMsV0FBbkIsRUFBN0M7QUFDQVAsa0JBQVlRLE1BQVosR0FBcUIsTUFBTSx5QkFBM0I7QUFDQSw4Q0FBc0JSLFdBQXRCOztBQUVBLGNBQVFELFNBQVI7QUFDRSxhQUFLLFVBQUw7QUFDRUMsc0JBQVlTLE9BQVosQ0FBb0JDLElBQXBCLEdBQTJCLFVBQTNCO0FBQ0E7QUFDRixhQUFLLFFBQUw7QUFDRVYsc0JBQVlTLE9BQVosQ0FBb0JDLElBQXBCLEdBQTJCLG9CQUEzQjtBQUNBO0FBQ0Y7QUFDRVYsc0JBQVlTLE9BQVosQ0FBb0JDLElBQXBCLEdBQTJCLDhCQUEzQjtBQUNBO0FBVEo7QUFXQWxCLFFBQUUsMEJBQUYsRUFBOEJNLEdBQTlCO0FBQ0EsWUFBTWEsa0JBQUdDLFNBQUgsQ0FBYVgsZUFBS0MsT0FBTCxDQUFhSixHQUFiLEVBQWtCLGNBQWxCLENBQWIsRUFBZ0RFLFdBQWhELEVBQTZELEVBQUVhLFFBQVEsQ0FBVixFQUE3RCxDQUFOO0FBQ0QsS0FuQkssRUFBTjs7QUFxQkEsVUFBTSwwQkFBUyw2QkFBVCwyQkFBd0MsYUFBWTtBQUN4RHJCLFFBQUUseUJBQUY7QUFDQSxZQUFNLG1DQUFlTSxHQUFmLEVBQW9CTCxJQUFwQixDQUFOOztBQUVBRCxRQUFFLDRCQUFGO0FBQ0EsWUFBTSxtQ0FBZU0sR0FBZixFQUFvQkosT0FBcEIsRUFBNkIsSUFBN0IsQ0FBTjs7QUFFQUYsUUFBRSwrQkFBRjtBQVB3RDtBQUFBO0FBQUE7O0FBQUE7QUFReEQsd0RBQTBCRyxZQUExQiw0R0FBd0M7QUFBQSxnQkFBN0JtQixXQUE2Qjs7QUFDdEMsZ0JBQU0sbUNBQWVoQixHQUFmLEVBQW9CLENBQUNnQixXQUFELENBQXBCLEVBQW1DLElBQW5DLEVBQXlDLElBQXpDLENBQU47QUFDRDtBQVZ1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQVl4RCxjQUFRZixTQUFSO0FBQ0UsYUFBSyxVQUFMO0FBQ0VQLFlBQUUsMENBQUY7QUFDQSxnQkFBTSxtQ0FBZU0sR0FBZixFQUFvQkYsWUFBcEIsRUFBa0MsSUFBbEMsQ0FBTjtBQUNBO0FBQ0YsYUFBSyxRQUFMO0FBQ0VKLFlBQUUsd0NBQUY7QUFDQSxnQkFBTSxtQ0FBZU0sR0FBZixFQUFvQkQsVUFBcEIsRUFBZ0MsSUFBaEMsQ0FBTjtBQUNBO0FBQ0Y7QUFDRUwsWUFBRSw2QkFBRjtBQUNBO0FBWEo7O0FBY0E7QUFDQTtBQUNBLFlBQU11QixVQUFVLE1BQU1KLGtCQUFHSyxRQUFILENBQVlmLGVBQUtnQixJQUFMLENBQVVuQixHQUFWLEVBQWUsWUFBZixDQUFaLEVBQTBDLE1BQTFDLENBQXRCO0FBQ0EsWUFBTW9CLG1CQUFtQkMsUUFDdkJsQixlQUFLZ0IsSUFBTCxDQUFVbkIsR0FBVixFQUFlLGNBQWYsRUFBK0IsMkJBQS9CLEVBQTRELGNBQTVELENBRHVCLENBQXpCOztBQTdCd0QsaUJBZ0NsQyxDQUFDLGFBQUQsRUFBZ0IsWUFBaEIsQ0FoQ2tDO0FBZ0N4RCwrQ0FBcUQ7QUFBaEQsY0FBTXNCLGtCQUFOO0FBQ0gsY0FBTUMsWUFBWU4sUUFBUU8sR0FBUixDQUFZRixPQUFaLEVBQXFCLHdCQUFyQixFQUErQ0csT0FBL0MsQ0FBdURDLElBQXZELENBQTREO0FBQUEsaUJBQUtDLEVBQUUsQ0FBRixNQUFTLEtBQWQ7QUFBQSxTQUE1RCxDQUFsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBSixrQkFBVSxDQUFWLEVBQWFLLE9BQWIsQ0FBcUJDLFFBQXJCLEdBQWdDQyxXQUFXVixpQkFBaUJXLE9BQTVCLEVBQXFDQyxPQUFyQyxDQUE2QyxDQUE3QyxFQUFnREMsUUFBaEQsRUFBaEM7QUFDRDs7QUFFRCxZQUFNcEIsa0JBQUdDLFNBQUgsQ0FBYVgsZUFBS2dCLElBQUwsQ0FBVW5CLEdBQVYsRUFBZSxZQUFmLENBQWIsRUFBMkNpQixPQUEzQyxFQUFvRCxFQUFFRixRQUFRLENBQVYsRUFBcEQsQ0FBTjtBQUNELEtBekNLLEVBQU47QUEwQ0QsRyIsImZpbGUiOiJpbml0L2luaXQtbnBtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1c2VybmFtZSBmcm9tICd1c2VybmFtZSc7XG5cbmltcG9ydCB7IHNldEluaXRpYWxGb3JnZUNvbmZpZyB9IGZyb20gJy4uL3V0aWwvZm9yZ2UtY29uZmlnJztcbmltcG9ydCBpbnN0YWxsRGVwTGlzdCBmcm9tICcuLi91dGlsL2luc3RhbGwtZGVwZW5kZW5jaWVzJztcbmltcG9ydCByZWFkUGFja2FnZUpTT04gZnJvbSAnLi4vdXRpbC9yZWFkLXBhY2thZ2UtanNvbic7XG5pbXBvcnQgYXN5bmNPcmEgZnJvbSAnLi4vdXRpbC9vcmEtaGFuZGxlcic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnZWxlY3Ryb24tZm9yZ2U6aW5pdDpucG0nKTtcblxuZXhwb3J0IGNvbnN0IGRlcHMgPSBbJ2VsZWN0cm9uLWNvbXBpbGUnLCAnZWxlY3Ryb24tc3F1aXJyZWwtc3RhcnR1cCddO1xuZXhwb3J0IGNvbnN0IGRldkRlcHMgPSBbJ2JhYmVsLXByZXNldC1lbnYnLCAnYmFiZWwtcHJlc2V0LXJlYWN0JywgJ2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9yJywgJ2VsZWN0cm9uLWZvcmdlJ107XG5leHBvcnQgY29uc3QgZXhhY3REZXZEZXBzID0gWydlbGVjdHJvbi1wcmVidWlsdC1jb21waWxlJ107XG5leHBvcnQgY29uc3Qgc3RhbmRhcmREZXBzID0gWydzdGFuZGFyZCddO1xuZXhwb3J0IGNvbnN0IGFpcmJuYkRlcHMgPSBbJ2VzbGludEBeMycsICdlc2xpbnQtY29uZmlnLWFpcmJuYkBeMTUnLCAnZXNsaW50LXBsdWdpbi1pbXBvcnRAXjInLFxuICAnZXNsaW50LXBsdWdpbi1qc3gtYTExeUBeNScsICdlc2xpbnQtcGx1Z2luLXJlYWN0QF43J107XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChkaXIsIGxpbnRTdHlsZSkgPT4ge1xuICBhd2FpdCBhc3luY09yYSgnSW5pdGlhbGl6aW5nIE5QTSBNb2R1bGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZUpTT04gPSBhd2FpdCByZWFkUGFja2FnZUpTT04ocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3RtcGwnKSk7XG4gICAgcGFja2FnZUpTT04ucHJvZHVjdE5hbWUgPSBwYWNrYWdlSlNPTi5uYW1lID0gcGF0aC5iYXNlbmFtZShkaXIpLnRvTG93ZXJDYXNlKCk7XG4gICAgcGFja2FnZUpTT04uYXV0aG9yID0gYXdhaXQgdXNlcm5hbWUoKTtcbiAgICBzZXRJbml0aWFsRm9yZ2VDb25maWcocGFja2FnZUpTT04pO1xuXG4gICAgc3dpdGNoIChsaW50U3R5bGUpIHtcbiAgICAgIGNhc2UgJ3N0YW5kYXJkJzpcbiAgICAgICAgcGFja2FnZUpTT04uc2NyaXB0cy5saW50ID0gJ3N0YW5kYXJkJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhaXJibmInOlxuICAgICAgICBwYWNrYWdlSlNPTi5zY3JpcHRzLmxpbnQgPSAnZXNsaW50IHNyYyAtLWNvbG9yJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYWNrYWdlSlNPTi5zY3JpcHRzLmxpbnQgPSAnZWNobyBcIk5vIGxpbnRpbmcgY29uZmlndXJlZFwiJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGQoJ3dyaXRpbmcgcGFja2FnZS5qc29uIHRvOicsIGRpcik7XG4gICAgYXdhaXQgZnMud3JpdGVKc29uKHBhdGgucmVzb2x2ZShkaXIsICdwYWNrYWdlLmpzb24nKSwgcGFja2FnZUpTT04sIHsgc3BhY2VzOiAyIH0pO1xuICB9KTtcblxuICBhd2FpdCBhc3luY09yYSgnSW5zdGFsbGluZyBOUE0gRGVwZW5kZW5jaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGQoJ2luc3RhbGxpbmcgZGVwZW5kZW5jaWVzJyk7XG4gICAgYXdhaXQgaW5zdGFsbERlcExpc3QoZGlyLCBkZXBzKTtcblxuICAgIGQoJ2luc3RhbGxpbmcgZGV2RGVwZW5kZW5jaWVzJyk7XG4gICAgYXdhaXQgaW5zdGFsbERlcExpc3QoZGlyLCBkZXZEZXBzLCB0cnVlKTtcblxuICAgIGQoJ2luc3RhbGxpbmcgZXhhY3QgZGVwZW5kZW5jaWVzJyk7XG4gICAgZm9yIChjb25zdCBwYWNrYWdlTmFtZSBvZiBleGFjdERldkRlcHMpIHtcbiAgICAgIGF3YWl0IGluc3RhbGxEZXBMaXN0KGRpciwgW3BhY2thZ2VOYW1lXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChsaW50U3R5bGUpIHtcbiAgICAgIGNhc2UgJ3N0YW5kYXJkJzpcbiAgICAgICAgZCgnaW5zdGFsbGluZyBzdGFuZGFyZCBsaW50aW5nIGRlcGVuZGVuY2llcycpO1xuICAgICAgICBhd2FpdCBpbnN0YWxsRGVwTGlzdChkaXIsIHN0YW5kYXJkRGVwcywgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWlyYm5iJzpcbiAgICAgICAgZCgnaW5zdGFsbGluZyBhaXJibmIgbGludGluZyBkZXBlbmRlbmNpZXMnKTtcbiAgICAgICAgYXdhaXQgaW5zdGFsbERlcExpc3QoZGlyLCBhaXJibmJEZXBzLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkKCdub3QgaW5zdGFsbGluZyBsaW50aW5nIGRlcHMnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gTkI6IEZvciBiYWJlbC1wcmVzZXQtZW52IHRvIHdvcmsgY29ycmVjdGx5LCBpdCBuZWVkcyB0byBrbm93IHRoZVxuICAgIC8vIGFjdHVhbCB2ZXJzaW9uIG9mIEVsZWN0cm9uIHRoYXQgd2UgaW5zdGFsbGVkXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRKc29uKHBhdGguam9pbihkaXIsICcuY29tcGlsZXJjJyksICd1dGY4Jyk7XG4gICAgY29uc3QgZWxlY3Ryb25QcmVidWlsdCA9IHJlcXVpcmUoXG4gICAgICBwYXRoLmpvaW4oZGlyLCAnbm9kZV9tb2R1bGVzJywgJ2VsZWN0cm9uLXByZWJ1aWx0LWNvbXBpbGUnLCAncGFja2FnZS5qc29uJykpO1xuXG4gICAgZm9yIChjb25zdCBwcm9maWxlIG9mIFsnZGV2ZWxvcG1lbnQnLCAncHJvZHVjdGlvbiddKSB7XG4gICAgICBjb25zdCBlbnZUYXJnZXQgPSBjb250ZW50LmVudltwcm9maWxlXVsnYXBwbGljYXRpb24vamF2YXNjcmlwdCddLnByZXNldHMuZmluZCh4ID0+IHhbMF0gPT09ICdlbnYnKTtcbiAgICAgIC8vIHBhcnNlRmxvYXQgc3RyaXBzIHRoZSBwYXRjaCB2ZXJzaW9uXG4gICAgICAvLyBwYXJzZUZsb2F0KCcxLjMuMicpID09PSAxLjNcbiAgICAgIC8vIE5vdGU6IFRoaXMgd29uJ3Qgd29yayBpZiB0aGUgbWlub3IgdmVyc2lvbiBldmVyIGdldHMgaGlnaGVyIHRoYW4gOVxuICAgICAgZW52VGFyZ2V0WzFdLnRhcmdldHMuZWxlY3Ryb24gPSBwYXJzZUZsb2F0KGVsZWN0cm9uUHJlYnVpbHQudmVyc2lvbikudG9GaXhlZCgxKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGF3YWl0IGZzLndyaXRlSnNvbihwYXRoLmpvaW4oZGlyLCAnLmNvbXBpbGVyYycpLCBjb250ZW50LCB7IHNwYWNlczogMiB9KTtcbiAgfSk7XG59O1xuIl19 |
\ | No newline at end of file |