@angular-devkit/build-angular 15.2.0-next.0 → 15.2.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  return (mod && mod.__esModule) ? mod : { "default": mod };
34
34
  };
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.inlineLocales = exports.createI18nPlugins = void 0;
36
+ exports.inlineLocales = void 0;
37
37
  const remapping_1 = __importDefault(require("@ampproject/remapping"));
38
38
  const core_1 = require("@babel/core");
39
39
  const template_1 = __importDefault(require("@babel/template"));
@@ -95,7 +95,6 @@ async function createI18nPlugins(locale, translation, missingTranslation, should
95
95
  }
96
96
  return { diagnostics, plugins };
97
97
  }
98
- exports.createI18nPlugins = createI18nPlugins;
99
98
  const localizeName = '$localize';
100
99
  async function inlineLocales(options) {
101
100
  var _a;
@@ -311,4 +310,4 @@ async function loadLocaleData(path, optimize) {
311
310
  }
312
311
  return transformResult.code;
313
312
  }
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1idW5kbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9wcm9jZXNzLWJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHNFQUE4QztBQUM5QyxzQ0FRcUI7QUFDckIsK0RBQThDO0FBQzlDLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0IsbURBQTRDO0FBQzVDLCtEQUFvRTtBQUNwRSxtQ0FBd0M7QUFFeEMseUNBQTJDO0FBSzNDLHFDQUFxQztBQUNyQywyREFBMkQ7QUFDM0QsSUFBSSxjQUE0RCxDQUFDO0FBRWpFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLDJCQUFVLElBQUksRUFBRSxDQUEyQixDQUFDO0FBRTlEOzs7O0dBSUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUluQzs7O0dBR0c7QUFDSCxJQUFJLG1CQUFzRCxDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsaUJBQWlCO0lBQzlCLElBQUksbUJBQW1CLEtBQUssU0FBUyxFQUFFO1FBQ3JDLE9BQU8sbUJBQW1CLENBQUM7S0FDNUI7SUFFRCxxRkFBcUY7SUFDckYseUZBQXlGO0lBQ3pGLHNDQUFzQztJQUN0QyxPQUFPLElBQUEsd0JBQWEsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLE1BQWMsRUFDZCxXQUFnQyxFQUNoQyxrQkFBa0QsRUFDbEQsWUFBcUIsRUFDckIsaUJBQTBCO0lBRTFCLE1BQU0sRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLGlCQUFpQixFQUFFLENBQUM7SUFFL0YsTUFBTSxPQUFP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Q0QsUUFBUSxFQUFFLGlDQUFXLElBQUksUUFBUTtRQUNqQyxPQUFPLEVBQUUsQ0FBQyxvQ0FBYyxJQUFJLFFBQVE7UUFDcEMsUUFBUSxFQUFFLENBQUMsUUFBUTtLQUNwQixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRTtRQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxJQUFJLElBQUksQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHJlbWFwcGluZyBmcm9tICdAYW1wcHJvamVjdC9yZW1hcHBpbmcnO1xuaW1wb3J0IHtcbiAgTm9kZVBhdGgsXG4gIFBhcnNlUmVzdWx0LFxuICBwYXJzZVN5bmMsXG4gIHRyYW5zZm9ybUFzeW5jLFxuICB0cmFuc2Zvcm1Gcm9tQXN0U3luYyxcbiAgdHJhdmVyc2UsXG4gIHR5cGVzLFxufSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgdGVtcGxhdGVCdWlsZGVyIGZyb20gJ0BiYWJlbC90ZW1wbGF0ZSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgd29ya2VyRGF0YSB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJztcbmltcG9ydCB7IGFsbG93TWluaWZ5LCBzaG91bGRCZWF1dGlmeSB9IGZyb20gJy4vZW52aXJvbm1lbnQtb3B0aW9ucyc7XG5pbXBvcnQgeyBhc3NlcnRJc0Vycm9yIH0gZnJvbSAnLi9lcnJvcic7XG5pbXBvcnQgeyBJMThuT3B0aW9ucyB9IGZyb20gJy4vaTE4bi1vcHRpb25zJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuL2xvYWQtZXNtJztcblxuLy8gRXh0cmFjdCBTb3VyY2VtYXAgaW5wdXQgdHlwZSBmcm9tIHRoZSByZW1hcHBpbmcgZnVuY3Rpb24gc2luY2UgaXQgaXMgbm90IGN1cnJlbnRseSBleHBvcnRlZFxudHlwZSBTb3VyY2VNYXBJbnB1dCA9IEV4Y2x1ZGU8UGFyYW1ldGVyczx0eXBlb2YgcmVtYXBwaW5nPlswXSwgdW5rbm93bltdPjtcblxuLy8gTGF6eSBsb2FkZWQgd2VicGFjay1zb3VyY2VzIG9iamVjdFxuLy8gV2VicGFjayBpcyBvbmx5IGltcG9ydGVkIGlmIG5lZWRlZCBkdXJpbmcgdGhlIHByb2Nlc3NpbmdcbmxldCB3ZWJwYWNrU291cmNlczogdHlwZW9mIGltcG9ydCgnd2VicGFjaycpLnNvdXJjZXMgfCB1bmRlZmluZWQ7XG5cbmNvbnN0IHsgaTE4biB9ID0gKHdvcmtlckRhdGEgfHwge30pIGFzIHsgaTE4bj86IEkxOG5PcHRpb25zIH07XG5cbi8qKlxuICogSW50ZXJuYWwgZmxhZyB0byBlbmFibGUgdGhlIGRpcmVjdCB1c2FnZSBvZiB0aGUgYEBhbmd1bGFyL2xvY2FsaXplYCB0cmFuc2xhdGlvbiBwbHVnaW5zLlxuICogVGhlaXIgdXNhZ2UgaXMgY3VycmVudGx5IHNldmVyYWwgdGltZXMgc2xvd2VyIHRoYW4gdGhlIHN0cmluZyBtYW5pcHVsYXRpb24gbWV0aG9kLlxuICogRnV0dXJlIHdvcmsgdG8gb3B0aW1pemUgdGhlIHBsdWdpbnMgc2hvdWxkIGVuYWJsZSBwbHVnaW4gdXNhZ2UgYXMgdGhlIGRlZmF1bHQuXG4gKi9cbmNvbnN0IFVTRV9MT0NBTElaRV9QTFVHSU5TID0gZmFsc2U7XG5cbnR5cGUgTG9jYWxpemVVdGlsaXR5TW9kdWxlID0gdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnKTtcblxuLyoqXG4gKiBDYWNoZWQgaW5zdGFuY2Ugb2YgdGhlIGBAYW5ndWxhci9sb2NhbGl6ZS90b29sc2AgbW9kdWxlLlxuICogVGhpcyBpcyB1c2VkIHRvIHJlbW92ZSB0aGUgbmVlZCB0byByZXBlYXRlZGx5IGltcG9ydCB0aGUgbW9kdWxlIHBlciBmaWxlIHRyYW5zbGF0aW9uLlxuICovXG5sZXQgbG9jYWxpemVUb29sc01vZHVsZTogTG9jYWxpemVVdGlsaXR5TW9kdWxlIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGxvYWQgdGhlIGBAYW5ndWxhci9sb2NhbGl6ZS90b29sc2AgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uYWxpdHkgdG9cbiAqIHBlcmZvcm0gdGhlIGZpbGUgdHJhbnNsYXRpb25zLlxuICogVGhpcyBtb2R1bGUgbXVzdCBiZSBkeW5hbWljYWxseSBsb2FkZWQgYXMgaXQgaXMgYW4gRVNNIG1vZHVsZSBhbmQgdGhpcyBmaWxlIGlzIENvbW1vbkpTLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkTG9jYWxpemVUb29scygpOiBQcm9taXNlPExvY2FsaXplVXRpbGl0eU1vZHVsZT4ge1xuICBpZiAobG9jYWxpemVUb29sc01vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGxvY2FsaXplVG9vbHNNb2R1bGU7XG4gIH1cblxuICAvLyBMb2FkIEVTTSBgQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHNgIHVzaW5nIHRoZSBUeXBlU2NyaXB0IGR5bmFtaWMgaW1wb3J0IHdvcmthcm91bmQuXG4gIC8vIE9uY2UgVHlwZVNjcmlwdCBwcm92aWRlcyBzdXBwb3J0IGZvciBrZWVwaW5nIHRoZSBkeW5hbWljIGltcG9ydCB0aGlzIHdvcmthcm91bmQgY2FuIGJlXG4gIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gIHJldHVybiBsb2FkRXNtTW9kdWxlKCdAYW5ndWxhci9sb2NhbGl6ZS90b29scycpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlSTE4blBsdWdpbnMoXG4gIGxvY2FsZTogc3RyaW5nLFxuICB0cmFuc2xhdGlvbjogdW5rbm93biB8IHVuZGVmaW5lZCxcbiAgbWlzc2luZ1RyYW5zbGF0aW9uOiAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2lnbm9yZScsXG4gIHNob3VsZElubGluZTogYm9vbGVhbixcbiAgbG9jYWxlRGF0YUNvbnRlbnQ/OiBzdHJpbmcsXG4pIHtcbiAgY29uc3QgeyBEaWFnbm9zdGljcywgbWFrZUVzMjAxNVRyYW5zbGF0ZVBsdWdpbiwgbWFrZUxvY2FsZVBsdWdpbiB9ID0gYXdhaXQgbG9hZExvY2FsaXplVG9vbHMoKTtcblxuICBjb25zdCBwbHVnaW5zID0gW107XG4gIGNvbnN0IGRpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cbiAgaWYgKHNob3VsZElubGluZSkge1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBtYWtlRXMyMDE1VHJhbnNsYXRlUGx1Z2luKGRpYWdub3N0aWNzLCAodHJhbnNsYXRpb24gfHwge30pIGFzIGFueSwge1xuICAgICAgICBtaXNzaW5nVHJhbnNsYXRpb246IHRyYW5zbGF0aW9uID09PSB1bmRlZmluZWQgPyAnaWdub3JlJyA6IG1pc3NpbmdUcmFuc2xhdGlvbixcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwbHVnaW5zLnB1c2gobWFrZUxvY2FsZVBsdWdpbihsb2NhbGUpKTtcblxuICBpZiAobG9jYWxlRGF0YUNvbnRlbnQpIHtcbiAgICBwbHVnaW5zLnB1c2goe1xuICAgICAgdmlzaXRvcjoge1xuICAgICAgICBQcm9ncmFtKHBhdGg6IE5vZGVQYXRoPHR5cGVzLlByb2dyYW0+KSB7XG4gICAgICAgICAgcGF0aC51bnNoaWZ0Q29udGFpbmVyKCdib2R5JywgdGVtcGxhdGVCdWlsZGVyLmFzdChsb2NhbGVEYXRhQ29udGVudCkpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7IGRpYWdub3N0aWNzLCBwbHVnaW5zIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5saW5lT3B0aW9ucyB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgbWFwPzogc3RyaW5nO1xuICBvdXRwdXRQYXRoOiBzdHJpbmc7XG4gIG1pc3NpbmdUcmFuc2xhdGlvbj86ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnaWdub3JlJztcbiAgc2V0TG9jYWxlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIExvY2FsaXplUG9zaXRpb24ge1xuICBzdGFydDogbnVtYmVyO1xuICBlbmQ6IG51bWJlcjtcbiAgbWVzc2FnZVBhcnRzOiBUZW1wbGF0ZVN0cmluZ3NBcnJheTtcbiAgZXhwcmVzc2lvbnM6IHR5cGVzLkV4cHJlc3Npb25bXTtcbn1cblxuY29uc3QgbG9jYWxpemVOYW1lID0gJyRsb2NhbGl6ZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmxpbmVMb2NhbGVzKG9wdGlvbnM6IElubGluZU9wdGlvbnMpIHtcbiAgaWYgKCFpMThuIHx8IGkxOG4uaW5saW5lTG9jYWxlcy5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuIHsgZmlsZTogb3B0aW9ucy5maWxlbmFtZSwgZGlhZ25vc3RpY3M6IFtdLCBjb3VudDogMCB9O1xuICB9XG4gIGlmIChpMThuLmZsYXRPdXRwdXQgJiYgaTE4bi5pbmxpbmVMb2NhbGVzLnNpemUgPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGbGF0IG91dHB1dCBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIGlubGluaW5nIG9uZSBsb2NhbGUuJyk7XG4gIH1cblxuICBjb25zdCBoYXNMb2NhbGl6ZU5hbWUgPSBvcHRpb25zLmNvZGUuaW5jbHVkZXMobG9jYWxpemVOYW1lKTtcbiAgaWYgKCFoYXNMb2NhbGl6ZU5hbWUgJiYgIW9wdGlvbnMuc2V0TG9jYWxlKSB7XG4gICAgcmV0dXJuIGlubGluZUNvcHlPbmx5KG9wdGlvbnMpO1xuICB9XG5cbiAgYXdhaXQgbG9hZExvY2FsaXplVG9vbHMoKTtcblxuICBsZXQgYXN0OiBQYXJzZVJlc3VsdCB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHRyeSB7XG4gICAgYXN0ID0gcGFyc2VTeW5jKG9wdGlvbnMuY29kZSwge1xuICAgICAgYmFiZWxyYzogZmFsc2UsXG4gICAgICBjb25maWdGaWxlOiBmYWxzZSxcbiAgICAgIHNvdXJjZVR5cGU6ICd1bmFtYmlndW91cycsXG4gICAgICBmaWxlbmFtZTogb3B0aW9ucy5maWxlbmFtZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhc3NlcnRJc0Vycm9yKGVycm9yKTtcblxuICAgIC8vIE1ha2UgdGhlIGVycm9yIG1vcmUgcmVhZGFibGUuXG4gICAgLy8gU2FtZSBlcnJvcnMgd2lsbCBjb250YWluIHRoZSBmdWxsIGNvbnRlbnQgb2YgdGhlIGZpbGUgYXMgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICAvLyBXaGljaCBtYWtlcyBpdCBoYXJkIHRvIGZpbmQgdGhlIGFjdHVhbCBlcnJvciBtZXNzYWdlLlxuICAgIGNvbnN0IGluZGV4ID0gZXJyb3IubWVzc2FnZS5pbmRleE9mKCcpXFxuJyk7XG4gICAgY29uc3QgbXNnID0gaW5kZXggIT09IC0xID8gZXJyb3IubWVzc2FnZS5zbGljZSgwLCBpbmRleCArIDEpIDogZXJyb3IubWVzc2FnZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bXNnfVxcbkFuIGVycm9yIG9jY3VycmVkIGlubGluaW5nIGZpbGUgXCIke29wdGlvbnMuZmlsZW5hbWV9XCJgKTtcbiAgfVxuXG4gIGlmICghYXN0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVycm9yIG9jY3VycmVkIGlubGluaW5nIGZpbGUgXCIke29wdGlvbnMuZmlsZW5hbWV9XCJgKTtcbiAgfVxuXG4gIGlmICghVVNFX0xPQ0FMSVpFX1BMVUdJTlMpIHtcbiAgICByZXR1cm4gaW5saW5lTG9jYWxlc0RpcmVjdChhc3QsIG9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3QgZGlhZ25vc3RpY3MgPSBbXTtcbiAgZm9yIChjb25zdCBsb2NhbGUgb2YgaTE4bi5pbmxpbmVMb2NhbGVzKSB7XG4gICAgY29uc3QgaXNTb3VyY2VMb2NhbGUgPSBsb2NhbGUgPT09IGkxOG4uc291cmNlTG9jYWxlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgdHJhbnNsYXRpb25zOiBhbnkgPSBpc1NvdXJjZUxvY2FsZSA/IHt9IDogaTE4bi5sb2NhbGVzW2xvY2FsZV0udHJhbnNsYXRpb24gfHwge307XG4gICAgbGV0IGxvY2FsZURhdGFDb250ZW50O1xuICAgIGlmIChvcHRpb25zLnNldExvY2FsZSkge1xuICAgICAgLy8gSWYgbG9jYWxlIGRhdGEgaXMgcHJvdmlkZWQsIGxvYWQgaXQgYW5kIHByZXBlbmQgdG8gZmlsZVxuICAgICAgY29uc3QgbG9jYWxlRGF0YVBhdGggPSBpMThuLmxvY2FsZXNbbG9jYWxlXT8uZGF0YVBhdGg7XG4gICAgICBpZiAobG9jYWxlRGF0YVBhdGgpIHtcbiAgICAgICAgbG9jYWxlRGF0YUNvbnRlbnQgPSBhd2FpdCBsb2FkTG9jYWxlRGF0YShsb2NhbGVEYXRhUGF0aCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBkaWFnbm9zdGljczogbG9jYWxlRGlhZ25vc3RpY3MsIHBsdWdpbnMgfSA9IGF3YWl0IGNyZWF0ZUkxOG5QbHVnaW5zKFxuICAgICAgbG9jYWxlLFxuICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgaXNTb3VyY2VMb2NhbGUgPyAnaWdub3JlJyA6IG9wdGlvbnMubWlzc2luZ1RyYW5zbGF0aW9uIHx8ICd3YXJuaW5nJyxcbiAgICAgIHRydWUsXG4gICAgICBsb2NhbGVEYXRhQ29udGVudCxcbiAgICApO1xuICAgIGNvbnN0IHRyYW5zZm9ybVJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybUZyb21Bc3RTeW5jKGFzdCwgb3B0aW9ucy5jb2RlLCB7XG4gICAgICBmaWxlbmFtZTogb3B0aW9ucy5maWxlbmFtZSxcbiAgICAgIC8vIHVzaW5nIGZhbHNlIGVuc3VyZXMgdGhhdCBiYWJlbCB3aWxsIE5PVCBzZWFyY2ggYW5kIHByb2Nlc3Mgc291cmNlbWFwIGNvbW1lbnRzIChsYXJnZSBtZW1vcnkgdXNhZ2UpXG4gICAgICAvLyBUaGUgdHlwZXMgZG8gbm90IGluY2x1ZGUgdGhlIGZhbHNlIG9wdGlvbiBldmVuIHRob3VnaCBpdCBpcyB2YWxpZFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIGlucHV0U291cmNlTWFwOiBmYWxzZSBhcyBhbnksXG4gICAgICBiYWJlbHJjOiBmYWxzZSxcbiAgICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgICAgcGx1Z2lucyxcbiAgICAgIGNvbXBhY3Q6ICFzaG91bGRCZWF1dGlmeSxcbiAgICAgIHNvdXJjZU1hcHM6ICEhb3B0aW9ucy5tYXAsXG4gICAgfSk7XG5cbiAgICBkaWFnbm9zdGljcy5wdXNoKC4uLmxvY2FsZURpYWdub3N0aWNzLm1lc3NhZ2VzKTtcblxuICAgIGlmICghdHJhbnNmb3JtUmVzdWx0IHx8ICF0cmFuc2Zvcm1SZXN1bHQuY29kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVycm9yIG9jY3VycmVkIHByb2Nlc3NpbmcgYnVuZGxlIGZvciBcIiR7b3B0aW9ucy5maWxlbmFtZX1cIi5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKFxuICAgICAgb3B0aW9ucy5vdXRwdXRQYXRoLFxuICAgICAgaTE4bi5mbGF0T3V0cHV0ID8gJycgOiBsb2NhbGUsXG4gICAgICBvcHRpb25zLmZpbGVuYW1lLFxuICAgICk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG91dHB1dFBhdGgsIHRyYW5zZm9ybVJlc3VsdC5jb2RlKTtcblxuICAgIGlmIChvcHRpb25zLm1hcCAmJiB0cmFuc2Zvcm1SZXN1bHQubWFwKSB7XG4gICAgICBjb25zdCBvdXRwdXRNYXAgPSByZW1hcHBpbmcoW3RyYW5zZm9ybVJlc3VsdC5tYXAgYXMgU291cmNlTWFwSW5wdXQsIG9wdGlvbnMubWFwXSwgKCkgPT4gbnVsbCk7XG5cbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShvdXRwdXRQYXRoICsgJy5tYXAnLCBKU09OLnN0cmluZ2lmeShvdXRwdXRNYXApKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBmaWxlOiBvcHRpb25zLmZpbGVuYW1lLCBkaWFnbm9zdGljcyB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbmxpbmVMb2NhbGVzRGlyZWN0KGFzdDogUGFyc2VSZXN1bHQsIG9wdGlvbnM6IElubGluZU9wdGlvbnMpIHtcbiAgaWYgKCFpMThuIHx8IGkxOG4uaW5saW5lTG9jYWxlcy5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuIHsgZmlsZTogb3B0aW9ucy5maWxlbmFtZSwgZGlhZ25vc3RpY3M6IFtdLCBjb3VudDogMCB9O1xuICB9XG5cbiAgY29uc3QgeyBkZWZhdWx0OiBnZW5lcmF0ZSB9ID0gYXdhaXQgaW1wb3J0KCdAYmFiZWwvZ2VuZXJhdG9yJyk7XG4gIGNvbnN0IGxvY2FsaXplRGlhZyA9IGF3YWl0IGxvYWRMb2NhbGl6ZVRvb2xzKCk7XG4gIGNvbnN0IGRpYWdub3N0aWNzID0gbmV3IGxvY2FsaXplRGlhZy5EaWFnbm9zdGljcygpO1xuXG4gIGNvbnN0IHBvc2l0aW9ucyA9IGZpbmRMb2NhbGl6ZVBvc2l0aW9ucyhhc3QsIG9wdGlvbnMsIGxvY2FsaXplRGlhZyk7XG4gIGlmIChwb3NpdGlvbnMubGVuZ3RoID09PSAwICYmICFvcHRpb25zLnNldExvY2FsZSkge1xuICAgIHJldHVybiBpbmxpbmVDb3B5T25seShvcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0IGlucHV0TWFwID0gISFvcHRpb25zLm1hcCAmJiAoSlNPTi5wYXJzZShvcHRpb25zLm1hcCkgYXMgeyBzb3VyY2VSb290Pzogc3RyaW5nIH0pO1xuICAvLyBDbGVhbnVwIHNvdXJjZSByb290IG90aGVyd2lzZSBpdCB3aWxsIGJlIGFkZGVkIHRvIGVhY2ggc291cmNlIGVudHJ5XG4gIGNvbnN0IG1hcFNvdXJjZVJvb3QgPSBpbnB1dE1hcCAmJiBpbnB1dE1hcC5zb3VyY2VSb290O1xuICBpZiAoaW5wdXRNYXApIHtcbiAgICBkZWxldGUgaW5wdXRNYXAuc291cmNlUm9vdDtcbiAgfVxuXG4gIC8vIExvYWQgV2VicGFjayBvbmx5IHdoZW4gbmVlZGVkXG4gIGlmICh3ZWJwYWNrU291cmNlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgd2VicGFja1NvdXJjZXMgPSAoYXdhaXQgaW1wb3J0KCd3ZWJwYWNrJykpLnNvdXJjZXM7XG4gIH1cbiAgY29uc3QgeyBDb25jYXRTb3VyY2UsIE9yaWdpbmFsU291cmNlLCBSZXBsYWNlU291cmNlLCBTb3VyY2VNYXBTb3VyY2UgfSA9IHdlYnBhY2tTb3VyY2VzO1xuXG4gIGZvciAoY29uc3QgbG9jYWxlIG9mIGkxOG4uaW5saW5lTG9jYWxlcykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXcgUmVwbGFjZVNvdXJjZShcbiAgICAgIGlucHV0TWFwXG4gICAgICAgID8gbmV3IFNvdXJjZU1hcFNvdXJjZShvcHRpb25zLmNvZGUsIG9wdGlvbnMuZmlsZW5hbWUsIGlucHV0TWFwKVxuICAgICAgICA6IG5ldyBPcmlnaW5hbFNvdXJjZShvcHRpb25zLmNvZGUsIG9wdGlvbnMuZmlsZW5hbWUpLFxuICAgICk7XG5cbiAgICBjb25zdCBpc1NvdXJjZUxvY2FsZSA9IGxvY2FsZSA9PT0gaTE4bi5zb3VyY2VMb2NhbGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0cmFuc2xhdGlvbnM6IGFueSA9IGlzU291cmNlTG9jYWxlID8ge30gOiBpMThuLmxvY2FsZXNbbG9jYWxlXS50cmFuc2xhdGlvbiB8fCB7fTtcbiAgICBmb3IgKGNvbnN0IHBvc2l0aW9uIG9mIHBvc2l0aW9ucykge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IGxvY2FsaXplRGlhZy50cmFuc2xhdGUoXG4gICAgICAgIGRpYWdub3N0aWNzLFxuICAgICAgICB0cmFuc2xhdGlvbnMsXG4gICAgICAgIHBvc2l0aW9uLm1lc3NhZ2VQYXJ0cyxcbiAgICAgICAgcG9zaXRpb24uZXhwcmVzc2lvbnMsXG4gICAgICAgIGlzU291cmNlTG9jYWxlID8gJ2lnbm9yZScgOiBvcHRpb25zLm1pc3NpbmdUcmFuc2xhdGlvbiB8fCAnd2FybmluZycsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBleHByZXNzaW9uID0gbG9jYWxpemVEaWFnLmJ1aWxkTG9jYWxpemVSZXBsYWNlbWVudCh0cmFuc2xhdGVkWzBdLCB0cmFuc2xhdGVkWzFdKTtcbiAgICAgIGNvbnN0IHsgY29kZSB9ID0gZ2VuZXJhdGUoZXhwcmVzc2lvbik7XG5cbiAgICAgIGNvbnRlbnQucmVwbGFjZShwb3NpdGlvbi5zdGFydCwgcG9zaXRpb24uZW5kIC0gMSwgY29kZSk7XG4gICAgfVxuXG4gICAgbGV0IG91dHB1dFNvdXJjZTogaW1wb3J0KCd3ZWJwYWNrJykuc291cmNlcy5Tb3VyY2UgPSBjb250ZW50O1xuICAgIGlmIChvcHRpb25zLnNldExvY2FsZSkge1xuICAgICAgY29uc3Qgc2V0TG9jYWxlVGV4dCA9IGBnbG9iYWxUaGlzLiRsb2NhbGl6ZT1PYmplY3QuYXNzaWduKGdsb2JhbFRoaXMuJGxvY2FsaXplIHx8IHt9LHtsb2NhbGU6XCIke2xvY2FsZX1cIn0pO1xcbmA7XG5cbiAgICAgIC8vIElmIGxvY2FsZSBkYXRhIGlzIHByb3ZpZGVkLCBsb2FkIGl0IGFuZCBwcmVwZW5kIHRvIGZpbGVcbiAgICAgIGxldCBsb2NhbGVEYXRhU291cmNlO1xuICAgICAgY29uc3QgbG9jYWxlRGF0YVBhdGggPSBpMThuLmxvY2FsZXNbbG9jYWxlXSAmJiBpMThuLmxvY2FsZXNbbG9jYWxlXS5kYXRhUGF0aDtcbiAgICAgIGlmIChsb2NhbGVEYXRhUGF0aCkge1xuICAgICAgICBjb25zdCBsb2NhbGVEYXRhQ29udGVudCA9IGF3YWl0IGxvYWRMb2NhbGVEYXRhKGxvY2FsZURhdGFQYXRoLCB0cnVlKTtcbiAgICAgICAgbG9jYWxlRGF0YVNvdXJjZSA9IG5ldyBPcmlnaW5hbFNvdXJjZShsb2NhbGVEYXRhQ29udGVudCwgcGF0aC5iYXNlbmFtZShsb2NhbGVEYXRhUGF0aCkpO1xuICAgICAgfVxuXG4gICAgICBvdXRwdXRTb3VyY2UgPSBsb2NhbGVEYXRhU291cmNlXG4gICAgICAgID8gLy8gVGhlIHNlbWljb2xvbiBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgbm8gc3ludGF4IGVycm9yIGJldHdlZW4gc3RhdGVtZW50c1xuICAgICAgICAgIG5ldyBDb25jYXRTb3VyY2Uoc2V0TG9jYWxlVGV4dCwgbG9jYWxlRGF0YVNvdXJjZSwgJztcXG4nLCBjb250ZW50KVxuICAgICAgICA6IG5ldyBDb25jYXRTb3VyY2Uoc2V0TG9jYWxlVGV4dCwgY29udGVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzb3VyY2U6IG91dHB1dENvZGUsIG1hcDogb3V0cHV0TWFwIH0gPSBvdXRwdXRTb3VyY2Uuc291cmNlQW5kTWFwKCkgYXMge1xuICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgICBtYXA6IHsgZmlsZTogc3RyaW5nOyBzb3VyY2VSb290Pzogc3RyaW5nIH07XG4gICAgfTtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKFxuICAgICAgb3B0aW9ucy5vdXRwdXRQYXRoLFxuICAgICAgaTE4bi5mbGF0T3V0cHV0ID8gJycgOiBsb2NhbGUsXG4gICAgICBvcHRpb25zLmZpbGVuYW1lLFxuICAgICk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG91dHB1dFBhdGgsIG91dHB1dENvZGUpO1xuXG4gICAgaWYgKGlucHV0TWFwICYmIG91dHB1dE1hcCkge1xuICAgICAgb3V0cHV0TWFwLmZpbGUgPSBvcHRpb25zLmZpbGVuYW1lO1xuICAgICAgaWYgKG1hcFNvdXJjZVJvb3QpIHtcbiAgICAgICAgb3V0cHV0TWFwLnNvdXJjZVJvb3QgPSBtYXBTb3VyY2VSb290O1xuICAgICAgfVxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKG91dHB1dFBhdGggKyAnLm1hcCcsIEpTT04uc3RyaW5naWZ5KG91dHB1dE1hcCkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGZpbGU6IG9wdGlvbnMuZmlsZW5hbWUsIGRpYWdub3N0aWNzOiBkaWFnbm9zdGljcy5tZXNzYWdlcywgY291bnQ6IHBvc2l0aW9ucy5sZW5ndGggfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5saW5lQ29weU9ubHkob3B0aW9uczogSW5saW5lT3B0aW9ucykge1xuICBpZiAoIWkxOG4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2kxOG4gb3B0aW9ucyBhcmUgbWlzc2luZycpO1xuICB9XG5cbiAgZm9yIChjb25zdCBsb2NhbGUgb2YgaTE4bi5pbmxpbmVMb2NhbGVzKSB7XG4gICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGguam9pbihcbiAgICAgIG9wdGlvbnMub3V0cHV0UGF0aCxcbiAgICAgIGkxOG4uZmxhdE91dHB1dCA/ICcnIDogbG9jYWxlLFxuICAgICAgb3B0aW9ucy5maWxlbmFtZSxcbiAgICApO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShvdXRwdXRQYXRoLCBvcHRpb25zLmNvZGUpO1xuICAgIGlmIChvcHRpb25zLm1hcCkge1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKG91dHB1dFBhdGggKyAnLm1hcCcsIG9wdGlvbnMubWFwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBmaWxlOiBvcHRpb25zLmZpbGVuYW1lLCBkaWFnbm9zdGljczogW10sIGNvdW50OiAwIH07XG59XG5cbmZ1bmN0aW9uIGZpbmRMb2NhbGl6ZVBvc2l0aW9ucyhcbiAgYXN0OiBQYXJzZVJlc3VsdCxcbiAgb3B0aW9uczogSW5saW5lT3B0aW9ucyxcbiAgdXRpbHM6IExvY2FsaXplVXRpbGl0eU1vZHVsZSxcbik6IExvY2FsaXplUG9zaXRpb25bXSB7XG4gIGNvbnN0IHBvc2l0aW9uczogTG9jYWxpemVQb3NpdGlvbltdID0gW107XG5cbiAgLy8gV29ya2Fyb3VuZCB0byBlbnN1cmUgYSBwYXRoIGh1YiBpcyBwcmVzZW50IGZvciB0cmF2ZXJzYWxcbiAgY29uc3QgeyBGaWxlIH0gPSByZXF1aXJlKCdAYmFiZWwvY29yZScpO1xuICBjb25zdCBmaWxlID0gbmV3IEZpbGUoe30sIHsgY29kZTogb3B0aW9ucy5jb2RlLCBhc3QgfSk7XG5cbiAgdHJhdmVyc2UoZmlsZS5hc3QsIHtcbiAgICBUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24ocGF0aCkge1xuICAgICAgaWYgKHR5cGVzLmlzSWRlbnRpZmllcihwYXRoLm5vZGUudGFnKSAmJiBwYXRoLm5vZGUudGFnLm5hbWUgPT09IGxvY2FsaXplTmFtZSkge1xuICAgICAgICBjb25zdCBbbWVzc2FnZVBhcnRzLCBleHByZXNzaW9uc10gPSB1bndyYXBUZW1wbGF0ZUxpdGVyYWwocGF0aCwgdXRpbHMpO1xuICAgICAgICBwb3NpdGlvbnMucHVzaCh7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICBzdGFydDogcGF0aC5ub2RlLnN0YXJ0ISxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgIGVuZDogcGF0aC5ub2RlLmVuZCEsXG4gICAgICAgICAgbWVzc2FnZVBhcnRzLFxuICAgICAgICAgIGV4cHJlc3Npb25zLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gcG9zaXRpb25zO1xufVxuXG5mdW5jdGlvbiB1bndyYXBUZW1wbGF0ZUxpdGVyYWwoXG4gIHBhdGg6IE5vZGVQYXRoPHR5cGVzLlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbj4sXG4gIHV0aWxzOiBMb2NhbGl6ZVV0aWxpdHlNb2R1bGUsXG4pOiBbVGVtcGxhdGVTdHJpbmdzQXJyYXksIHR5cGVzLkV4cHJlc3Npb25bXV0ge1xuICBjb25zdCBbbWVzc2FnZVBhcnRzXSA9IHV0aWxzLnVud3JhcE1lc3NhZ2VQYXJ0c0Zyb21UZW1wbGF0ZUxpdGVyYWwoXG4gICAgcGF0aC5nZXQoJ3F1YXNpJykuZ2V0KCdxdWFzaXMnKSxcbiAgKTtcbiAgY29uc3QgW2V4cHJlc3Npb25zXSA9IHV0aWxzLnVud3JhcEV4cHJlc3Npb25zRnJvbVRlbXBsYXRlTGl0ZXJhbChwYXRoLmdldCgncXVhc2knKSk7XG5cbiAgcmV0dXJuIFttZXNzYWdlUGFydHMsIGV4cHJlc3Npb25zXTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTG9jYWxpemVDYWxsKFxuICBwYXRoOiBOb2RlUGF0aDx0eXBlcy5DYWxsRXhwcmVzc2lvbj4sXG4gIHV0aWxzOiBMb2NhbGl6ZVV0aWxpdHlNb2R1bGUsXG4pOiBbVGVtcGxhdGVTdHJpbmdzQXJyYXksIHR5cGVzLkV4cHJlc3Npb25bXV0ge1xuICBjb25zdCBbbWVzc2FnZVBhcnRzXSA9IHV0aWxzLnVud3JhcE1lc3NhZ2VQYXJ0c0Zyb21Mb2NhbGl6ZUNhbGwocGF0aCk7XG4gIGNvbnN0IFtleHByZXNzaW9uc10gPSB1dGlscy51bndyYXBTdWJzdGl0dXRpb25zRnJvbUxvY2FsaXplQ2FsbChwYXRoKTtcblxuICByZXR1cm4gW21lc3NhZ2VQYXJ0cywgZXhwcmVzc2lvbnNdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkTG9jYWxlRGF0YShwYXRoOiBzdHJpbmcsIG9wdGltaXplOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gVGhlIHBhdGggaXMgdmFsaWRhdGVkIGR1cmluZyBvcHRpb24gcHJvY2Vzc2luZyBiZWZvcmUgdGhlIGJ1aWxkIHN0YXJ0c1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aCwgJ3V0ZjgnKTtcblxuICAvLyBEb3dubGV2ZWwgYW5kIG9wdGltaXplIHRoZSBkYXRhXG4gIGNvbnN0IHRyYW5zZm9ybVJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybUFzeW5jKGNvbnRlbnQsIHtcbiAgICBmaWxlbmFtZTogcGF0aCxcbiAgICAvLyBUaGUgdHlwZXMgZG8gbm90IGluY2x1ZGUgdGhlIGZhbHNlIG9wdGlvbiBldmVuIHRob3VnaCBpdCBpcyB2YWxpZFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgaW5wdXRTb3VyY2VNYXA6IGZhbHNlIGFzIGFueSxcbiAgICBiYWJlbHJjOiBmYWxzZSxcbiAgICBjb25maWdGaWxlOiBmYWxzZSxcbiAgICBwcmVzZXRzOiBbXG4gICAgICBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQGJhYmVsL3ByZXNldC1lbnYnKSxcbiAgICAgICAge1xuICAgICAgICAgIGJ1Z2ZpeGVzOiB0cnVlLFxuICAgICAgICAgIHRhcmdldHM6IHsgZXNtb2R1bGVzOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF0sXG4gICAgbWluaWZpZWQ6IGFsbG93TWluaWZ5ICYmIG9wdGltaXplLFxuICAgIGNvbXBhY3Q6ICFzaG91bGRCZWF1dGlmeSAmJiBvcHRpbWl6ZSxcbiAgICBjb21tZW50czogIW9wdGltaXplLFxuICB9KTtcblxuICBpZiAoIXRyYW5zZm9ybVJlc3VsdCB8fCAhdHJhbnNmb3JtUmVzdWx0LmNvZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZXJyb3Igb2NjdXJyZWQgcHJvY2Vzc2luZyBidW5kbGUgZm9yIFwiJHtwYXRofVwiLmApO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybVJlc3VsdC5jb2RlO1xufVxuIl19
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1idW5kbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9wcm9jZXNzLWJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHNFQUE4QztBQUM5QyxzQ0FRcUI7QUFDckIsK0RBQThDO0FBQzlDLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0IsbURBQTRDO0FBRTVDLCtEQUFvRTtBQUNwRSxtQ0FBd0M7QUFFeEMseUNBQTJDO0FBSzNDLHFDQUFxQztBQUNyQywyREFBMkQ7QUFDM0QsSUFBSSxjQUE0RCxDQUFDO0FBRWpFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLDJCQUFVLElBQUksRUFBRSxDQUEyQixDQUFDO0FBRTlEOzs7O0dBSUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUluQzs7O0dBR0c7QUFDSCxJQUFJLG1CQUFzRCxDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsaUJBQWlCO0lBQzlCLElBQUksbUJBQW1CLEtBQUssU0FBUyxFQUFFO1FBQ3JDLE9BQU8sbUJBQW1CLENBQUM7S0FDNUI7SUFFRCxxRkFBcUY7SUFDckYseUZBQXlGO0lBQ3pGLHNDQUFzQztJQUN0QyxPQUFPLElBQUEsd0JBQWEsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLE1BQWMsRUFDZCxXQUFnQyxFQUNoQyxrQkFBa0QsRUFDbEQsWUFBcUIsRUFDckIsaUJBQTBCO0lBRTFCLE1BQU0sRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLGlCQUFpQixFQUFFLENBQUM7SUFFL0YsTUFBTSxPQUFP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Q0FBVyxJQUFJLFFBQVE7UUFDakMsT0FBTyxFQUFFLENBQUMsb0NBQWMsSUFBSSxRQUFRO1FBQ3BDLFFBQVEsRUFBRSxDQUFDLFFBQVE7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUU7UUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsSUFBSSxJQUFJLENBQUMsQ0FBQztLQUM1RTtJQUVELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCByZW1hcHBpbmcgZnJvbSAnQGFtcHByb2plY3QvcmVtYXBwaW5nJztcbmltcG9ydCB7XG4gIE5vZGVQYXRoLFxuICBQYXJzZVJlc3VsdCxcbiAgcGFyc2VTeW5jLFxuICB0cmFuc2Zvcm1Bc3luYyxcbiAgdHJhbnNmb3JtRnJvbUFzdFN5bmMsXG4gIHRyYXZlcnNlLFxuICB0eXBlcyxcbn0gZnJvbSAnQGJhYmVsL2NvcmUnO1xuaW1wb3J0IHRlbXBsYXRlQnVpbGRlciBmcm9tICdAYmFiZWwvdGVtcGxhdGUnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHdvcmtlckRhdGEgfSBmcm9tICd3b3JrZXJfdGhyZWFkcyc7XG5pbXBvcnQgeyBJbmxpbmVPcHRpb25zIH0gZnJvbSAnLi9idW5kbGUtaW5saW5lLW9wdGlvbnMnO1xuaW1wb3J0IHsgYWxsb3dNaW5pZnksIHNob3VsZEJlYXV0aWZ5IH0gZnJvbSAnLi9lbnZpcm9ubWVudC1vcHRpb25zJztcbmltcG9ydCB7IGFzc2VydElzRXJyb3IgfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7IEkxOG5PcHRpb25zIH0gZnJvbSAnLi9pMThuLW9wdGlvbnMnO1xuaW1wb3J0IHsgbG9hZEVzbU1vZHVsZSB9IGZyb20gJy4vbG9hZC1lc20nO1xuXG4vLyBFeHRyYWN0IFNvdXJjZW1hcCBpbnB1dCB0eXBlIGZyb20gdGhlIHJlbWFwcGluZyBmdW5jdGlvbiBzaW5jZSBpdCBpcyBub3QgY3VycmVudGx5IGV4cG9ydGVkXG50eXBlIFNvdXJjZU1hcElucHV0ID0gRXhjbHVkZTxQYXJhbWV0ZXJzPHR5cGVvZiByZW1hcHBpbmc+WzBdLCB1bmtub3duW10+O1xuXG4vLyBMYXp5IGxvYWRlZCB3ZWJwYWNrLXNvdXJjZXMgb2JqZWN0XG4vLyBXZWJwYWNrIGlzIG9ubHkgaW1wb3J0ZWQgaWYgbmVlZGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZ1xubGV0IHdlYnBhY2tTb3VyY2VzOiB0eXBlb2YgaW1wb3J0KCd3ZWJwYWNrJykuc291cmNlcyB8IHVuZGVmaW5lZDtcblxuY29uc3QgeyBpMThuIH0gPSAod29ya2VyRGF0YSB8fCB7fSkgYXMgeyBpMThuPzogSTE4bk9wdGlvbnMgfTtcblxuLyoqXG4gKiBJbnRlcm5hbCBmbGFnIHRvIGVuYWJsZSB0aGUgZGlyZWN0IHVzYWdlIG9mIHRoZSBgQGFuZ3VsYXIvbG9jYWxpemVgIHRyYW5zbGF0aW9uIHBsdWdpbnMuXG4gKiBUaGVpciB1c2FnZSBpcyBjdXJyZW50bHkgc2V2ZXJhbCB0aW1lcyBzbG93ZXIgdGhhbiB0aGUgc3RyaW5nIG1hbmlwdWxhdGlvbiBtZXRob2QuXG4gKiBGdXR1cmUgd29yayB0byBvcHRpbWl6ZSB0aGUgcGx1Z2lucyBzaG91bGQgZW5hYmxlIHBsdWdpbiB1c2FnZSBhcyB0aGUgZGVmYXVsdC5cbiAqL1xuY29uc3QgVVNFX0xPQ0FMSVpFX1BMVUdJTlMgPSBmYWxzZTtcblxudHlwZSBMb2NhbGl6ZVV0aWxpdHlNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9sb2NhbGl6ZS90b29scycpO1xuXG4vKipcbiAqIENhY2hlZCBpbnN0YW5jZSBvZiB0aGUgYEBhbmd1bGFyL2xvY2FsaXplL3Rvb2xzYCBtb2R1bGUuXG4gKiBUaGlzIGlzIHVzZWQgdG8gcmVtb3ZlIHRoZSBuZWVkIHRvIHJlcGVhdGVkbHkgaW1wb3J0IHRoZSBtb2R1bGUgcGVyIGZpbGUgdHJhbnNsYXRpb24uXG4gKi9cbmxldCBsb2NhbGl6ZVRvb2xzTW9kdWxlOiBMb2NhbGl6ZVV0aWxpdHlNb2R1bGUgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gbG9hZCB0aGUgYEBhbmd1bGFyL2xvY2FsaXplL3Rvb2xzYCBtb2R1bGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb25hbGl0eSB0b1xuICogcGVyZm9ybSB0aGUgZmlsZSB0cmFuc2xhdGlvbnMuXG4gKiBUaGlzIG1vZHVsZSBtdXN0IGJlIGR5bmFtaWNhbGx5IGxvYWRlZCBhcyBpdCBpcyBhbiBFU00gbW9kdWxlIGFuZCB0aGlzIGZpbGUgaXMgQ29tbW9uSlMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRMb2NhbGl6ZVRvb2xzKCk6IFByb21pc2U8TG9jYWxpemVVdGlsaXR5TW9kdWxlPiB7XG4gIGlmIChsb2NhbGl6ZVRvb2xzTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbG9jYWxpemVUb29sc01vZHVsZTtcbiAgfVxuXG4gIC8vIExvYWQgRVNNIGBAYW5ndWxhci9sb2NhbGl6ZS90b29sc2AgdXNpbmcgdGhlIFR5cGVTY3JpcHQgZHluYW1pYyBpbXBvcnQgd29ya2Fyb3VuZC5cbiAgLy8gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZCBjYW4gYmVcbiAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgcmV0dXJuIGxvYWRFc21Nb2R1bGUoJ0Bhbmd1bGFyL2xvY2FsaXplL3Rvb2xzJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUkxOG5QbHVnaW5zKFxuICBsb2NhbGU6IHN0cmluZyxcbiAgdHJhbnNsYXRpb246IHVua25vd24gfCB1bmRlZmluZWQsXG4gIG1pc3NpbmdUcmFuc2xhdGlvbjogJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpZ25vcmUnLFxuICBzaG91bGRJbmxpbmU6IGJvb2xlYW4sXG4gIGxvY2FsZURhdGFDb250ZW50Pzogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHsgRGlhZ25vc3RpY3MsIG1ha2VFczIwMTVUcmFuc2xhdGVQbHVnaW4sIG1ha2VMb2NhbGVQbHVnaW4gfSA9IGF3YWl0IGxvYWRMb2NhbGl6ZVRvb2xzKCk7XG5cbiAgY29uc3QgcGx1Z2lucyA9IFtdO1xuICBjb25zdCBkaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuXG4gIGlmIChzaG91bGRJbmxpbmUpIHtcbiAgICBwbHVnaW5zLnB1c2goXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgbWFrZUVzMjAxNVRyYW5zbGF0ZVBsdWdpbihkaWFnbm9zdGljcywgKHRyYW5zbGF0aW9uIHx8IHt9KSBhcyBhbnksIHtcbiAgICAgICAgbWlzc2luZ1RyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbiA9PT0gdW5kZWZpbmVkID8gJ2lnbm9yZScgOiBtaXNzaW5nVHJhbnNsYXRpb24sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcGx1Z2lucy5wdXNoKG1ha2VMb2NhbGVQbHVnaW4obG9jYWxlKSk7XG5cbiAgaWYgKGxvY2FsZURhdGFDb250ZW50KSB7XG4gICAgcGx1Z2lucy5wdXNoKHtcbiAgICAgIHZpc2l0b3I6IHtcbiAgICAgICAgUHJvZ3JhbShwYXRoOiBOb2RlUGF0aDx0eXBlcy5Qcm9ncmFtPikge1xuICAgICAgICAgIHBhdGgudW5zaGlmdENvbnRhaW5lcignYm9keScsIHRlbXBsYXRlQnVpbGRlci5hc3QobG9jYWxlRGF0YUNvbnRlbnQpKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4geyBkaWFnbm9zdGljcywgcGx1Z2lucyB9O1xufVxuXG5pbnRlcmZhY2UgTG9jYWxpemVQb3NpdGlvbiB7XG4gIHN0YXJ0OiBudW1iZXI7XG4gIGVuZDogbnVtYmVyO1xuICBtZXNzYWdlUGFydHM6IFRlbXBsYXRlU3RyaW5nc0FycmF5O1xuICBleHByZXNzaW9uczogdHlwZXMuRXhwcmVzc2lvbltdO1xufVxuXG5jb25zdCBsb2NhbGl6ZU5hbWUgPSAnJGxvY2FsaXplJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlubGluZUxvY2FsZXMob3B0aW9uczogSW5saW5lT3B0aW9ucykge1xuICBpZiAoIWkxOG4gfHwgaTE4bi5pbmxpbmVMb2NhbGVzLnNpemUgPT09IDApIHtcbiAgICByZXR1cm4geyBmaWxlOiBvcHRpb25zLmZpbGVuYW1lLCBkaWFnbm9zdGljczogW10sIGNvdW50OiAwIH07XG4gIH1cbiAgaWYgKGkxOG4uZmxhdE91dHB1dCAmJiBpMThuLmlubGluZUxvY2FsZXMuc2l6ZSA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZsYXQgb3V0cHV0IGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gaW5saW5pbmcgb25lIGxvY2FsZS4nKTtcbiAgfVxuXG4gIGNvbnN0IGhhc0xvY2FsaXplTmFtZSA9IG9wdGlvbnMuY29kZS5pbmNsdWRlcyhsb2NhbGl6ZU5hbWUpO1xuICBpZiAoIWhhc0xvY2FsaXplTmFtZSAmJiAhb3B0aW9ucy5zZXRMb2NhbGUpIHtcbiAgICByZXR1cm4gaW5saW5lQ29weU9ubHkob3B0aW9ucyk7XG4gIH1cblxuICBhd2FpdCBsb2FkTG9jYWxpemVUb29scygpO1xuXG4gIGxldCBhc3Q6IFBhcnNlUmVzdWx0IHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgdHJ5IHtcbiAgICBhc3QgPSBwYXJzZVN5bmMob3B0aW9ucy5jb2RlLCB7XG4gICAgICBiYWJlbHJjOiBmYWxzZSxcbiAgICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgICAgc291cmNlVHlwZTogJ3VuYW1iaWd1b3VzJyxcbiAgICAgIGZpbGVuYW1lOiBvcHRpb25zLmZpbGVuYW1lLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGFzc2VydElzRXJyb3IoZXJyb3IpO1xuXG4gICAgLy8gTWFrZSB0aGUgZXJyb3IgbW9yZSByZWFkYWJsZS5cbiAgICAvLyBTYW1lIGVycm9ycyB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwgY29udGVudCBvZiB0aGUgZmlsZSBhcyB0aGUgZXJyb3IgbWVzc2FnZVxuICAgIC8vIFdoaWNoIG1ha2VzIGl0IGhhcmQgdG8gZmluZCB0aGUgYWN0dWFsIGVycm9yIG1lc3NhZ2UuXG4gICAgY29uc3QgaW5kZXggPSBlcnJvci5tZXNzYWdlLmluZGV4T2YoJylcXG4nKTtcbiAgICBjb25zdCBtc2cgPSBpbmRleCAhPT0gLTEgPyBlcnJvci5tZXNzYWdlLnNsaWNlKDAsIGluZGV4ICsgMSkgOiBlcnJvci5tZXNzYWdlO1xuICAgIHRocm93IG5ldyBFcnJvcihgJHttc2d9XFxuQW4gZXJyb3Igb2NjdXJyZWQgaW5saW5pbmcgZmlsZSBcIiR7b3B0aW9ucy5maWxlbmFtZX1cImApO1xuICB9XG5cbiAgaWYgKCFhc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZXJyb3Igb2NjdXJyZWQgaW5saW5pbmcgZmlsZSBcIiR7b3B0aW9ucy5maWxlbmFtZX1cImApO1xuICB9XG5cbiAgaWYgKCFVU0VfTE9DQUxJWkVfUExVR0lOUykge1xuICAgIHJldHVybiBpbmxpbmVMb2NhbGVzRGlyZWN0KGFzdCwgb3B0aW9ucyk7XG4gIH1cblxuICBjb25zdCBkaWFnbm9zdGljcyA9IFtdO1xuICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBpMThuLmlubGluZUxvY2FsZXMpIHtcbiAgICBjb25zdCBpc1NvdXJjZUxvY2FsZSA9IGxvY2FsZSA9PT0gaTE4bi5zb3VyY2VMb2NhbGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0cmFuc2xhdGlvbnM6IGFueSA9IGlzU291cmNlTG9jYWxlID8ge30gOiBpMThuLmxvY2FsZXNbbG9jYWxlXS50cmFuc2xhdGlvbiB8fCB7fTtcbiAgICBsZXQgbG9jYWxlRGF0YUNvbnRlbnQ7XG4gICAgaWYgKG9wdGlvbnMuc2V0TG9jYWxlKSB7XG4gICAgICAvLyBJZiBsb2NhbGUgZGF0YSBpcyBwcm92aWRlZCwgbG9hZCBpdCBhbmQgcHJlcGVuZCB0byBmaWxlXG4gICAgICBjb25zdCBsb2NhbGVEYXRhUGF0aCA9IGkxOG4ubG9jYWxlc1tsb2NhbGVdPy5kYXRhUGF0aDtcbiAgICAgIGlmIChsb2NhbGVEYXRhUGF0aCkge1xuICAgICAgICBsb2NhbGVEYXRhQ29udGVudCA9IGF3YWl0IGxvYWRMb2NhbGVEYXRhKGxvY2FsZURhdGFQYXRoLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB7IGRpYWdub3N0aWNzOiBsb2NhbGVEaWFnbm9zdGljcywgcGx1Z2lucyB9ID0gYXdhaXQgY3JlYXRlSTE4blBsdWdpbnMoXG4gICAgICBsb2NhbGUsXG4gICAgICB0cmFuc2xhdGlvbnMsXG4gICAgICBpc1NvdXJjZUxvY2FsZSA/ICdpZ25vcmUnIDogb3B0aW9ucy5taXNzaW5nVHJhbnNsYXRpb24gfHwgJ3dhcm5pbmcnLFxuICAgICAgdHJ1ZSxcbiAgICAgIGxvY2FsZURhdGFDb250ZW50LFxuICAgICk7XG4gICAgY29uc3QgdHJhbnNmb3JtUmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtRnJvbUFzdFN5bmMoYXN0LCBvcHRpb25zLmNvZGUsIHtcbiAgICAgIGZpbGVuYW1lOiBvcHRpb25zLmZpbGVuYW1lLFxuICAgICAgLy8gdXNpbmcgZmFsc2UgZW5zdXJlcyB0aGF0IGJhYmVsIHdpbGwgTk9UIHNlYXJjaCBhbmQgcHJvY2VzcyBzb3VyY2VtYXAgY29tbWVudHMgKGxhcmdlIG1lbW9yeSB1c2FnZSlcbiAgICAgIC8vIFRoZSB0eXBlcyBkbyBub3QgaW5jbHVkZSB0aGUgZmFsc2Ugb3B0aW9uIGV2ZW4gdGhvdWdoIGl0IGlzIHZhbGlkXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgaW5wdXRTb3VyY2VNYXA6IGZhbHNlIGFzIGFueSxcbiAgICAgIGJhYmVscmM6IGZhbHNlLFxuICAgICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgICBwbHVnaW5zLFxuICAgICAgY29tcGFjdDogIXNob3VsZEJlYXV0aWZ5LFxuICAgICAgc291cmNlTWFwczogISFvcHRpb25zLm1hcCxcbiAgICB9KTtcblxuICAgIGRpYWdub3N0aWNzLnB1c2goLi4ubG9jYWxlRGlhZ25vc3RpY3MubWVzc2FnZXMpO1xuXG4gICAgaWYgKCF0cmFuc2Zvcm1SZXN1bHQgfHwgIXRyYW5zZm9ybVJlc3VsdC5jb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZXJyb3Igb2NjdXJyZWQgcHJvY2Vzc2luZyBidW5kbGUgZm9yIFwiJHtvcHRpb25zLmZpbGVuYW1lfVwiLmApO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLmpvaW4oXG4gICAgICBvcHRpb25zLm91dHB1dFBhdGgsXG4gICAgICBpMThuLmZsYXRPdXRwdXQgPyAnJyA6IGxvY2FsZSxcbiAgICAgIG9wdGlvbnMuZmlsZW5hbWUsXG4gICAgKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUob3V0cHV0UGF0aCwgdHJhbnNmb3JtUmVzdWx0LmNvZGUpO1xuXG4gICAgaWYgKG9wdGlvbnMubWFwICYmIHRyYW5zZm9ybVJlc3VsdC5tYXApIHtcbiAgICAgIGNvbnN0IG91dHB1dE1hcCA9IHJlbWFwcGluZyhbdHJhbnNmb3JtUmVzdWx0Lm1hcCBhcyBTb3VyY2VNYXBJbnB1dCwgb3B0aW9ucy5tYXBdLCAoKSA9PiBudWxsKTtcblxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKG91dHB1dFBhdGggKyAnLm1hcCcsIEpTT04uc3RyaW5naWZ5KG91dHB1dE1hcCkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGZpbGU6IG9wdGlvbnMuZmlsZW5hbWUsIGRpYWdub3N0aWNzIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlubGluZUxvY2FsZXNEaXJlY3QoYXN0OiBQYXJzZVJlc3VsdCwgb3B0aW9uczogSW5saW5lT3B0aW9ucykge1xuICBpZiAoIWkxOG4gfHwgaTE4bi5pbmxpbmVMb2NhbGVzLnNpemUgPT09IDApIHtcbiAgICByZXR1cm4geyBmaWxlOiBvcHRpb25zLmZpbGVuYW1lLCBkaWFnbm9zdGljczogW10sIGNvdW50OiAwIH07XG4gIH1cblxuICBjb25zdCB7IGRlZmF1bHQ6IGdlbmVyYXRlIH0gPSBhd2FpdCBpbXBvcnQoJ0BiYWJlbC9nZW5lcmF0b3InKTtcbiAgY29uc3QgbG9jYWxpemVEaWFnID0gYXdhaXQgbG9hZExvY2FsaXplVG9vbHMoKTtcbiAgY29uc3QgZGlhZ25vc3RpY3MgPSBuZXcgbG9jYWxpemVEaWFnLkRpYWdub3N0aWNzKCk7XG5cbiAgY29uc3QgcG9zaXRpb25zID0gZmluZExvY2FsaXplUG9zaXRpb25zKGFzdCwgb3B0aW9ucywgbG9jYWxpemVEaWFnKTtcbiAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPT09IDAgJiYgIW9wdGlvbnMuc2V0TG9jYWxlKSB7XG4gICAgcmV0dXJuIGlubGluZUNvcHlPbmx5KG9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3QgaW5wdXRNYXAgPSAhIW9wdGlvbnMubWFwICYmIChKU09OLnBhcnNlKG9wdGlvbnMubWFwKSBhcyB7IHNvdXJjZVJvb3Q/OiBzdHJpbmcgfSk7XG4gIC8vIENsZWFudXAgc291cmNlIHJvb3Qgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgYWRkZWQgdG8gZWFjaCBzb3VyY2UgZW50cnlcbiAgY29uc3QgbWFwU291cmNlUm9vdCA9IGlucHV0TWFwICYmIGlucHV0TWFwLnNvdXJjZVJvb3Q7XG4gIGlmIChpbnB1dE1hcCkge1xuICAgIGRlbGV0ZSBpbnB1dE1hcC5zb3VyY2VSb290O1xuICB9XG5cbiAgLy8gTG9hZCBXZWJwYWNrIG9ubHkgd2hlbiBuZWVkZWRcbiAgaWYgKHdlYnBhY2tTb3VyY2VzID09PSB1bmRlZmluZWQpIHtcbiAgICB3ZWJwYWNrU291cmNlcyA9IChhd2FpdCBpbXBvcnQoJ3dlYnBhY2snKSkuc291cmNlcztcbiAgfVxuICBjb25zdCB7IENvbmNhdFNvdXJjZSwgT3JpZ2luYWxTb3VyY2UsIFJlcGxhY2VTb3VyY2UsIFNvdXJjZU1hcFNvdXJjZSB9ID0gd2VicGFja1NvdXJjZXM7XG5cbiAgZm9yIChjb25zdCBsb2NhbGUgb2YgaTE4bi5pbmxpbmVMb2NhbGVzKSB7XG4gICAgY29uc3QgY29udGVudCA9IG5ldyBSZXBsYWNlU291cmNlKFxuICAgICAgaW5wdXRNYXBcbiAgICAgICAgPyBuZXcgU291cmNlTWFwU291cmNlKG9wdGlvbnMuY29kZSwgb3B0aW9ucy5maWxlbmFtZSwgaW5wdXRNYXApXG4gICAgICAgIDogbmV3IE9yaWdpbmFsU291cmNlKG9wdGlvbnMuY29kZSwgb3B0aW9ucy5maWxlbmFtZSksXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU291cmNlTG9jYWxlID0gbG9jYWxlID09PSBpMThuLnNvdXJjZUxvY2FsZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHRyYW5zbGF0aW9uczogYW55ID0gaXNTb3VyY2VMb2NhbGUgPyB7fSA6IGkxOG4ubG9jYWxlc1tsb2NhbGVdLnRyYW5zbGF0aW9uIHx8IHt9O1xuICAgIGZvciAoY29uc3QgcG9zaXRpb24gb2YgcG9zaXRpb25zKSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkID0gbG9jYWxpemVEaWFnLnRyYW5zbGF0ZShcbiAgICAgICAgZGlhZ25vc3RpY3MsXG4gICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgcG9zaXRpb24ubWVzc2FnZVBhcnRzLFxuICAgICAgICBwb3NpdGlvbi5leHByZXNzaW9ucyxcbiAgICAgICAgaXNTb3VyY2VMb2NhbGUgPyAnaWdub3JlJyA6IG9wdGlvbnMubWlzc2luZ1RyYW5zbGF0aW9uIHx8ICd3YXJuaW5nJyxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBsb2NhbGl6ZURpYWcuYnVpbGRMb2NhbGl6ZVJlcGxhY2VtZW50KHRyYW5zbGF0ZWRbMF0sIHRyYW5zbGF0ZWRbMV0pO1xuICAgICAgY29uc3QgeyBjb2RlIH0gPSBnZW5lcmF0ZShleHByZXNzaW9uKTtcblxuICAgICAgY29udGVudC5yZXBsYWNlKHBvc2l0aW9uLnN0YXJ0LCBwb3NpdGlvbi5lbmQgLSAxLCBjb2RlKTtcbiAgICB9XG5cbiAgICBsZXQgb3V0cHV0U291cmNlOiBpbXBvcnQoJ3dlYnBhY2snKS5zb3VyY2VzLlNvdXJjZSA9IGNvbnRlbnQ7XG4gICAgaWYgKG9wdGlvbnMuc2V0TG9jYWxlKSB7XG4gICAgICBjb25zdCBzZXRMb2NhbGVUZXh0ID0gYGdsb2JhbFRoaXMuJGxvY2FsaXplPU9iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcy4kbG9jYWxpemUgfHwge30se2xvY2FsZTpcIiR7bG9jYWxlfVwifSk7XFxuYDtcblxuICAgICAgLy8gSWYgbG9jYWxlIGRhdGEgaXMgcHJvdmlkZWQsIGxvYWQgaXQgYW5kIHByZXBlbmQgdG8gZmlsZVxuICAgICAgbGV0IGxvY2FsZURhdGFTb3VyY2U7XG4gICAgICBjb25zdCBsb2NhbGVEYXRhUGF0aCA9IGkxOG4ubG9jYWxlc1tsb2NhbGVdICYmIGkxOG4ubG9jYWxlc1tsb2NhbGVdLmRhdGFQYXRoO1xuICAgICAgaWYgKGxvY2FsZURhdGFQYXRoKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsZURhdGFDb250ZW50ID0gYXdhaXQgbG9hZExvY2FsZURhdGEobG9jYWxlRGF0YVBhdGgsIHRydWUpO1xuICAgICAgICBsb2NhbGVEYXRhU291cmNlID0gbmV3IE9yaWdpbmFsU291cmNlKGxvY2FsZURhdGFDb250ZW50LCBwYXRoLmJhc2VuYW1lKGxvY2FsZURhdGFQYXRoKSk7XG4gICAgICB9XG5cbiAgICAgIG91dHB1dFNvdXJjZSA9IGxvY2FsZURhdGFTb3VyY2VcbiAgICAgICAgPyAvLyBUaGUgc2VtaWNvbG9uIGVuc3VyZXMgdGhhdCB0aGVyZSBpcyBubyBzeW50YXggZXJyb3IgYmV0d2VlbiBzdGF0ZW1lbnRzXG4gICAgICAgICAgbmV3IENvbmNhdFNvdXJjZShzZXRMb2NhbGVUZXh0LCBsb2NhbGVEYXRhU291cmNlLCAnO1xcbicsIGNvbnRlbnQpXG4gICAgICAgIDogbmV3IENvbmNhdFNvdXJjZShzZXRMb2NhbGVUZXh0LCBjb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHNvdXJjZTogb3V0cHV0Q29kZSwgbWFwOiBvdXRwdXRNYXAgfSA9IG91dHB1dFNvdXJjZS5zb3VyY2VBbmRNYXAoKSBhcyB7XG4gICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgIG1hcDogeyBmaWxlOiBzdHJpbmc7IHNvdXJjZVJvb3Q/OiBzdHJpbmcgfTtcbiAgICB9O1xuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLmpvaW4oXG4gICAgICBvcHRpb25zLm91dHB1dFBhdGgsXG4gICAgICBpMThuLmZsYXRPdXRwdXQgPyAnJyA6IGxvY2FsZSxcbiAgICAgIG9wdGlvbnMuZmlsZW5hbWUsXG4gICAgKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUob3V0cHV0UGF0aCwgb3V0cHV0Q29kZSk7XG5cbiAgICBpZiAoaW5wdXRNYXAgJiYgb3V0cHV0TWFwKSB7XG4gICAgICBvdXRwdXRNYXAuZmlsZSA9IG9wdGlvbnMuZmlsZW5hbWU7XG4gICAgICBpZiAobWFwU291cmNlUm9vdCkge1xuICAgICAgICBvdXRwdXRNYXAuc291cmNlUm9vdCA9IG1hcFNvdXJjZVJvb3Q7XG4gICAgICB9XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUob3V0cHV0UGF0aCArICcubWFwJywgSlNPTi5zdHJpbmdpZnkob3V0cHV0TWFwKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgZmlsZTogb3B0aW9ucy5maWxlbmFtZSwgZGlhZ25vc3RpY3M6IGRpYWdub3N0aWNzLm1lc3NhZ2VzLCBjb3VudDogcG9zaXRpb25zLmxlbmd0aCB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbmxpbmVDb3B5T25seShvcHRpb25zOiBJbmxpbmVPcHRpb25zKSB7XG4gIGlmICghaTE4bikge1xuICAgIHRocm93IG5ldyBFcnJvcignaTE4biBvcHRpb25zIGFyZSBtaXNzaW5nJyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBpMThuLmlubGluZUxvY2FsZXMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKFxuICAgICAgb3B0aW9ucy5vdXRwdXRQYXRoLFxuICAgICAgaTE4bi5mbGF0T3V0cHV0ID8gJycgOiBsb2NhbGUsXG4gICAgICBvcHRpb25zLmZpbGVuYW1lLFxuICAgICk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG91dHB1dFBhdGgsIG9wdGlvbnMuY29kZSk7XG4gICAgaWYgKG9wdGlvbnMubWFwKSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUob3V0cHV0UGF0aCArICcubWFwJywgb3B0aW9ucy5tYXApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGZpbGU6IG9wdGlvbnMuZmlsZW5hbWUsIGRpYWdub3N0aWNzOiBbXSwgY291bnQ6IDAgfTtcbn1cblxuZnVuY3Rpb24gZmluZExvY2FsaXplUG9zaXRpb25zKFxuICBhc3Q6IFBhcnNlUmVzdWx0LFxuICBvcHRpb25zOiBJbmxpbmVPcHRpb25zLFxuICB1dGlsczogTG9jYWxpemVVdGlsaXR5TW9kdWxlLFxuKTogTG9jYWxpemVQb3NpdGlvbltdIHtcbiAgY29uc3QgcG9zaXRpb25zOiBMb2NhbGl6ZVBvc2l0aW9uW10gPSBbXTtcblxuICAvLyBXb3JrYXJvdW5kIHRvIGVuc3VyZSBhIHBhdGggaHViIGlzIHByZXNlbnQgZm9yIHRyYXZlcnNhbFxuICBjb25zdCB7IEZpbGUgfSA9IHJlcXVpcmUoJ0BiYWJlbC9jb3JlJyk7XG4gIGNvbnN0IGZpbGUgPSBuZXcgRmlsZSh7fSwgeyBjb2RlOiBvcHRpb25zLmNvZGUsIGFzdCB9KTtcblxuICB0cmF2ZXJzZShmaWxlLmFzdCwge1xuICAgIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbihwYXRoKSB7XG4gICAgICBpZiAodHlwZXMuaXNJZGVudGlmaWVyKHBhdGgubm9kZS50YWcpICYmIHBhdGgubm9kZS50YWcubmFtZSA9PT0gbG9jYWxpemVOYW1lKSB7XG4gICAgICAgIGNvbnN0IFttZXNzYWdlUGFydHMsIGV4cHJlc3Npb25zXSA9IHVud3JhcFRlbXBsYXRlTGl0ZXJhbChwYXRoLCB1dGlscyk7XG4gICAgICAgIHBvc2l0aW9ucy5wdXNoKHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgIHN0YXJ0OiBwYXRoLm5vZGUuc3RhcnQhLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgZW5kOiBwYXRoLm5vZGUuZW5kISxcbiAgICAgICAgICBtZXNzYWdlUGFydHMsXG4gICAgICAgICAgZXhwcmVzc2lvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiBwb3NpdGlvbnM7XG59XG5cbmZ1bmN0aW9uIHVud3JhcFRlbXBsYXRlTGl0ZXJhbChcbiAgcGF0aDogTm9kZVBhdGg8dHlwZXMuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uPixcbiAgdXRpbHM6IExvY2FsaXplVXRpbGl0eU1vZHVsZSxcbik6IFtUZW1wbGF0ZVN0cmluZ3NBcnJheSwgdHlwZXMuRXhwcmVzc2lvbltdXSB7XG4gIGNvbnN0IFttZXNzYWdlUGFydHNdID0gdXRpbHMudW53cmFwTWVzc2FnZVBhcnRzRnJvbVRlbXBsYXRlTGl0ZXJhbChcbiAgICBwYXRoLmdldCgncXVhc2knKS5nZXQoJ3F1YXNpcycpLFxuICApO1xuICBjb25zdCBbZXhwcmVzc2lvbnNdID0gdXRpbHMudW53cmFwRXhwcmVzc2lvbnNGcm9tVGVtcGxhdGVMaXRlcmFsKHBhdGguZ2V0KCdxdWFzaScpKTtcblxuICByZXR1cm4gW21lc3NhZ2VQYXJ0cywgZXhwcmVzc2lvbnNdO1xufVxuXG5mdW5jdGlvbiB1bndyYXBMb2NhbGl6ZUNhbGwoXG4gIHBhdGg6IE5vZGVQYXRoPHR5cGVzLkNhbGxFeHByZXNzaW9uPixcbiAgdXRpbHM6IExvY2FsaXplVXRpbGl0eU1vZHVsZSxcbik6IFtUZW1wbGF0ZVN0cmluZ3NBcnJheSwgdHlwZXMuRXhwcmVzc2lvbltdXSB7XG4gIGNvbnN0IFttZXNzYWdlUGFydHNdID0gdXRpbHMudW53cmFwTWVzc2FnZVBhcnRzRnJvbUxvY2FsaXplQ2FsbChwYXRoKTtcbiAgY29uc3QgW2V4cHJlc3Npb25zXSA9IHV0aWxzLnVud3JhcFN1YnN0aXR1dGlvbnNGcm9tTG9jYWxpemVDYWxsKHBhdGgpO1xuXG4gIHJldHVybiBbbWVzc2FnZVBhcnRzLCBleHByZXNzaW9uc107XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRMb2NhbGVEYXRhKHBhdGg6IHN0cmluZywgb3B0aW1pemU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyBUaGUgcGF0aCBpcyB2YWxpZGF0ZWQgZHVyaW5nIG9wdGlvbiBwcm9jZXNzaW5nIGJlZm9yZSB0aGUgYnVpbGQgc3RhcnRzXG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLCAndXRmOCcpO1xuXG4gIC8vIERvd25sZXZlbCBhbmQgb3B0aW1pemUgdGhlIGRhdGFcbiAgY29uc3QgdHJhbnNmb3JtUmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtQXN5bmMoY29udGVudCwge1xuICAgIGZpbGVuYW1lOiBwYXRoLFxuICAgIC8vIFRoZSB0eXBlcyBkbyBub3QgaW5jbHVkZSB0aGUgZmFsc2Ugb3B0aW9uIGV2ZW4gdGhvdWdoIGl0IGlzIHZhbGlkXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBpbnB1dFNvdXJjZU1hcDogZmFsc2UgYXMgYW55LFxuICAgIGJhYmVscmM6IGZhbHNlLFxuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIHByZXNldHM6IFtcbiAgICAgIFtcbiAgICAgICAgcmVxdWlyZS5yZXNvbHZlKCdAYmFiZWwvcHJlc2V0LWVudicpLFxuICAgICAgICB7XG4gICAgICAgICAgYnVnZml4ZXM6IHRydWUsXG4gICAgICAgICAgdGFyZ2V0czogeyBlc21vZHVsZXM6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXSxcbiAgICBtaW5pZmllZDogYWxsb3dNaW5pZnkgJiYgb3B0aW1pemUsXG4gICAgY29tcGFjdDogIXNob3VsZEJlYXV0aWZ5ICYmIG9wdGltaXplLFxuICAgIGNvbW1lbnRzOiAhb3B0aW1pemUsXG4gIH0pO1xuXG4gIGlmICghdHJhbnNmb3JtUmVzdWx0IHx8ICF0cmFuc2Zvcm1SZXN1bHQuY29kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBlcnJvciBvY2N1cnJlZCBwcm9jZXNzaW5nIGJ1bmRsZSBmb3IgXCIke3BhdGh9XCIuYCk7XG4gIH1cblxuICByZXR1cm4gdHJhbnNmb3JtUmVzdWx0LmNvZGU7XG59XG4iXX0=
@@ -14,7 +14,7 @@ exports.getSupportedBrowsers = void 0;
14
14
  const browserslist_1 = __importDefault(require("browserslist"));
15
15
  function getSupportedBrowsers(projectRoot, logger) {
16
16
  browserslist_1.default.defaults = [
17
- 'last 1 Chrome version',
17
+ 'last 2 Chrome versions',
18
18
  'last 1 Firefox version',
19
19
  'last 2 Edge major versions',
20
20
  'last 2 Safari major versions',
@@ -40,4 +40,4 @@ function getSupportedBrowsers(projectRoot, logger) {
40
40
  return Array.from(browsersFromConfigOrDefault);
41
41
  }
42
42
  exports.getSupportedBrowsers = getSupportedBrowsers;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWJyb3dzZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc3VwcG9ydGVkLWJyb3dzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUdILGdFQUF3QztBQUV4QyxTQUFnQixvQkFBb0IsQ0FBQyxXQUFtQixFQUFFLE1BQXlCO0lBQ2pGLHNCQUFZLENBQUMsUUFBUSxHQUFHO1FBQ3RCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLDhCQUE4QjtRQUM5QiwyQkFBMkI7UUFDM0IsYUFBYTtLQUNkLENBQUM7SUFFRix1Q0FBdUM7SUFDdkMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1Rix5Q0FBeUM7SUFDekMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFBLHNCQUFZLEVBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sbUJBQW1CLEdBQWEsRUFBRSxDQUFDO0lBQ3pDLEtBQUssTUFBTSxPQUFPLElBQUksMkJBQTJCLEVBQUU7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO0tBQ0Y7SUFFRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtRQUM5QixNQUFNLENBQUMsSUFBSSxDQUNULHdGQUF3RjtZQUN0RixzRUFBc0U7WUFDdEUscUJBQXFCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN4RCxDQUFDO0tBQ0g7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBakNELG9EQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBsb2dnaW5nIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IGJyb3dzZXJzbGlzdCBmcm9tICdicm93c2Vyc2xpc3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQnJvd3NlcnMocHJvamVjdFJvb3Q6IHN0cmluZywgbG9nZ2VyOiBsb2dnaW5nLkxvZ2dlckFwaSk6IHN0cmluZ1tdIHtcbiAgYnJvd3NlcnNsaXN0LmRlZmF1bHRzID0gW1xuICAgICdsYXN0IDEgQ2hyb21lIHZlcnNpb24nLFxuICAgICdsYXN0IDEgRmlyZWZveCB2ZXJzaW9uJyxcbiAgICAnbGFzdCAyIEVkZ2UgbWFqb3IgdmVyc2lvbnMnLFxuICAgICdsYXN0IDIgU2FmYXJpIG1ham9yIHZlcnNpb25zJyxcbiAgICAnbGFzdCAyIGlPUyBtYWpvciB2ZXJzaW9ucycsXG4gICAgJ0ZpcmVmb3ggRVNSJyxcbiAgXTtcblxuICAvLyBHZXQgYnJvd3NlcnMgZnJvbSBjb25maWcgb3IgZGVmYXVsdC5cbiAgY29uc3QgYnJvd3NlcnNGcm9tQ29uZmlnT3JEZWZhdWx0ID0gbmV3IFNldChicm93c2Vyc2xpc3QodW5kZWZpbmVkLCB7IHBhdGg6IHByb2plY3RSb290IH0pKTtcblxuICAvLyBHZXQgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IEVTNiBtb2R1bGVzLlxuICBjb25zdCBicm93c2Vyc1RoYXRTdXBwb3J0RXM2ID0gbmV3IFNldChicm93c2Vyc2xpc3QoJ3N1cHBvcnRzIGVzNi1tb2R1bGUnKSk7XG5cbiAgY29uc3QgdW5zdXBwb3J0ZWRCcm93c2Vyczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBicm93c2VyIG9mIGJyb3dzZXJzRnJvbUNvbmZpZ09yRGVmYXVsdCkge1xuICAgIGlmICghYnJvd3NlcnNUaGF0U3VwcG9ydEVzNi5oYXMoYnJvd3NlcikpIHtcbiAgICAgIGJyb3dzZXJzRnJvbUNvbmZpZ09yRGVmYXVsdC5kZWxldGUoYnJvd3Nlcik7XG4gICAgICB1bnN1cHBvcnRlZEJyb3dzZXJzLnB1c2goYnJvd3Nlcik7XG4gICAgfVxuICB9XG5cbiAgaWYgKHVuc3VwcG9ydGVkQnJvd3NlcnMubGVuZ3RoKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICBgT25lIG9yIG1vcmUgYnJvd3NlcnMgd2hpY2ggYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIHByb2plY3QncyBCcm93c2Vyc2xpc3QgY29uZmlndXJhdGlvbiBgICtcbiAgICAgICAgJ3dpbGwgYmUgaWdub3JlZCBhcyBFUzUgb3V0cHV0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEFuZ3VsYXIgQ0xJLlxcbicgK1xuICAgICAgICBgSWdub3JlZCBicm93c2VyczogJHt1bnN1cHBvcnRlZEJyb3dzZXJzLmpvaW4oJywgJyl9YCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oYnJvd3NlcnNGcm9tQ29uZmlnT3JEZWZhdWx0KTtcbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWJyb3dzZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc3VwcG9ydGVkLWJyb3dzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUdILGdFQUF3QztBQUV4QyxTQUFnQixvQkFBb0IsQ0FBQyxXQUFtQixFQUFFLE1BQXlCO0lBQ2pGLHNCQUFZLENBQUMsUUFBUSxHQUFHO1FBQ3RCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLDhCQUE4QjtRQUM5QiwyQkFBMkI7UUFDM0IsYUFBYTtLQUNkLENBQUM7SUFFRix1Q0FBdUM7SUFDdkMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1Rix5Q0FBeUM7SUFDekMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFBLHNCQUFZLEVBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sbUJBQW1CLEdBQWEsRUFBRSxDQUFDO0lBQ3pDLEtBQUssTUFBTSxPQUFPLElBQUksMkJBQTJCLEVBQUU7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO0tBQ0Y7SUFFRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtRQUM5QixNQUFNLENBQUMsSUFBSSxDQUNULHdGQUF3RjtZQUN0RixzRUFBc0U7WUFDdEUscUJBQXFCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN4RCxDQUFDO0tBQ0g7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBakNELG9EQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBsb2dnaW5nIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IGJyb3dzZXJzbGlzdCBmcm9tICdicm93c2Vyc2xpc3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQnJvd3NlcnMocHJvamVjdFJvb3Q6IHN0cmluZywgbG9nZ2VyOiBsb2dnaW5nLkxvZ2dlckFwaSk6IHN0cmluZ1tdIHtcbiAgYnJvd3NlcnNsaXN0LmRlZmF1bHRzID0gW1xuICAgICdsYXN0IDIgQ2hyb21lIHZlcnNpb25zJyxcbiAgICAnbGFzdCAxIEZpcmVmb3ggdmVyc2lvbicsXG4gICAgJ2xhc3QgMiBFZGdlIG1ham9yIHZlcnNpb25zJyxcbiAgICAnbGFzdCAyIFNhZmFyaSBtYWpvciB2ZXJzaW9ucycsXG4gICAgJ2xhc3QgMiBpT1MgbWFqb3IgdmVyc2lvbnMnLFxuICAgICdGaXJlZm94IEVTUicsXG4gIF07XG5cbiAgLy8gR2V0IGJyb3dzZXJzIGZyb20gY29uZmlnIG9yIGRlZmF1bHQuXG4gIGNvbnN0IGJyb3dzZXJzRnJvbUNvbmZpZ09yRGVmYXVsdCA9IG5ldyBTZXQoYnJvd3NlcnNsaXN0KHVuZGVmaW5lZCwgeyBwYXRoOiBwcm9qZWN0Um9vdCB9KSk7XG5cbiAgLy8gR2V0IGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBFUzYgbW9kdWxlcy5cbiAgY29uc3QgYnJvd3NlcnNUaGF0U3VwcG9ydEVzNiA9IG5ldyBTZXQoYnJvd3NlcnNsaXN0KCdzdXBwb3J0cyBlczYtbW9kdWxlJykpO1xuXG4gIGNvbnN0IHVuc3VwcG9ydGVkQnJvd3NlcnM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgYnJvd3NlciBvZiBicm93c2Vyc0Zyb21Db25maWdPckRlZmF1bHQpIHtcbiAgICBpZiAoIWJyb3dzZXJzVGhhdFN1cHBvcnRFczYuaGFzKGJyb3dzZXIpKSB7XG4gICAgICBicm93c2Vyc0Zyb21Db25maWdPckRlZmF1bHQuZGVsZXRlKGJyb3dzZXIpO1xuICAgICAgdW5zdXBwb3J0ZWRCcm93c2Vycy5wdXNoKGJyb3dzZXIpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1bnN1cHBvcnRlZEJyb3dzZXJzLmxlbmd0aCkge1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgYE9uZSBvciBtb3JlIGJyb3dzZXJzIHdoaWNoIGFyZSBjb25maWd1cmVkIGluIHRoZSBwcm9qZWN0J3MgQnJvd3NlcnNsaXN0IGNvbmZpZ3VyYXRpb24gYCArXG4gICAgICAgICd3aWxsIGJlIGlnbm9yZWQgYXMgRVM1IG91dHB1dCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBBbmd1bGFyIENMSS5cXG4nICtcbiAgICAgICAgYElnbm9yZWQgYnJvd3NlcnM6ICR7dW5zdXBwb3J0ZWRCcm93c2Vycy5qb2luKCcsICcpfWAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBBcnJheS5mcm9tKGJyb3dzZXJzRnJvbUNvbmZpZ09yRGVmYXVsdCk7XG59XG4iXX0=