@angular-devkit/build-angular 15.2.0 → 16.0.0-next.0
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.
- package/package.json +21 -21
- package/src/babel/plugins/adjust-static-class-members.js +5 -6
- package/src/babel/plugins/adjust-typescript-enums.js +2 -2
- package/src/babel/plugins/elide-angular-metadata.js +2 -3
- package/src/babel/presets/application.js +7 -8
- package/src/babel/webpack-loader.js +4 -6
- package/src/builders/app-shell/index.js +4 -5
- package/src/builders/browser/index.js +22 -30
- package/src/builders/browser-esbuild/angular/jit-compilation.js +3 -6
- package/src/builders/browser-esbuild/angular/jit-plugin-callbacks.js +3 -5
- package/src/builders/browser-esbuild/angular/jit-resource-transformer.js +2 -3
- package/src/builders/browser-esbuild/angular-compilation.js +6 -8
- package/src/builders/browser-esbuild/angular-host.js +3 -5
- package/src/builders/browser-esbuild/compiler-plugin.js +22 -30
- package/src/builders/browser-esbuild/css-resource-plugin.js +4 -6
- package/src/builders/browser-esbuild/esbuild.js +5 -7
- package/src/builders/browser-esbuild/index.js +15 -18
- package/src/builders/browser-esbuild/javascript-transformer-worker.js +6 -7
- package/src/builders/browser-esbuild/less-plugin.js +3 -4
- package/src/builders/browser-esbuild/license-extractor.js +4 -4
- package/src/builders/browser-esbuild/options.js +10 -11
- package/src/builders/browser-esbuild/profiling.js +5 -6
- package/src/builders/browser-esbuild/sass-plugin.js +5 -6
- package/src/builders/browser-esbuild/stylesheets.js +4 -5
- package/src/builders/browser-esbuild/watcher.js +5 -5
- package/src/builders/dev-server/index.js +14 -19
- package/src/builders/extract-i18n/index.js +7 -8
- package/src/builders/extract-i18n/ivy-extract-loader.js +4 -4
- package/src/builders/karma/find-tests-plugin.js +4 -4
- package/src/builders/karma/index.js +13 -17
- package/src/builders/ng-packagr/index.js +3 -5
- package/src/builders/protractor/index.js +3 -3
- package/src/builders/server/index.js +7 -11
- package/src/sass/rebasing-importer.js +6 -8
- package/src/sass/sass-service-legacy.js +3 -3
- package/src/sass/sass-service.js +7 -10
- package/src/sass/worker-legacy.js +4 -5
- package/src/sass/worker.js +6 -8
- package/src/utils/action-executor.js +2 -3
- package/src/utils/bundle-calculator.js +2 -2
- package/src/utils/i18n-options.js +5 -5
- package/src/utils/index-file/augment-index-html.js +2 -2
- package/src/utils/index-file/index-html-generator.js +5 -8
- package/src/utils/index-file/inline-fonts.js +3 -5
- package/src/utils/load-translations.js +2 -2
- package/src/utils/normalize-asset-patterns.js +2 -2
- package/src/utils/normalize-cache.js +2 -3
- package/src/utils/process-bundle.js +2 -3
- package/src/utils/purge-cache.js +2 -3
- package/src/utils/version.js +3 -3
- package/src/utils/webpack-browser-config.js +3 -5
- package/src/webpack/configs/common.js +6 -7
- package/src/webpack/configs/dev-server.js +2 -3
- package/src/webpack/configs/styles.js +4 -5
- package/src/webpack/plugins/builder-watch-plugin.js +4 -5
- package/src/webpack/plugins/common-js-usage-warn-plugin.js +3 -4
- package/src/webpack/plugins/css-optimizer-plugin.js +4 -4
- package/src/webpack/plugins/dedupe-module-resolve-plugin.js +4 -5
- package/src/webpack/plugins/esbuild-executor.js +3 -3
- package/src/webpack/plugins/hmr/hmr-accept.js +3 -3
- package/src/webpack/plugins/index-html-webpack-plugin.js +2 -3
- package/src/webpack/plugins/javascript-optimizer-plugin.js +3 -3
- package/src/webpack/plugins/karma/karma.js +4 -4
- package/src/webpack/plugins/postcss-cli-resources.js +2 -2
- package/src/webpack/plugins/remove-hash-plugin.js +3 -4
- package/src/webpack/plugins/scripts-webpack-plugin.js +2 -3
- package/src/webpack/plugins/styles-webpack-plugin.js +4 -5
- package/src/webpack/plugins/typescript.js +4 -5
- package/src/webpack/plugins/watch-files-logs-plugin.js +3 -3
- package/src/webpack/utils/async-chunks.js +2 -2
- package/src/webpack/utils/helpers.js +3 -4
- package/src/webpack/utils/stats.js +15 -18
|
@@ -36,7 +36,6 @@ const build_webpack_1 = require("@angular-devkit/build-webpack");
|
|
|
36
36
|
const core_1 = require("@angular-devkit/core");
|
|
37
37
|
const path = __importStar(require("path"));
|
|
38
38
|
const rxjs_1 = require("rxjs");
|
|
39
|
-
const operators_1 = require("rxjs/operators");
|
|
40
39
|
const url = __importStar(require("url"));
|
|
41
40
|
const utils_1 = require("../../utils");
|
|
42
41
|
const check_port_1 = require("../../utils/check-port");
|
|
@@ -70,14 +69,13 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
70
69
|
(0, version_1.assertCompatibleAngularVersion)(workspaceRoot);
|
|
71
70
|
const browserTarget = (0, architect_1.targetFromTargetString)(options.browserTarget);
|
|
72
71
|
async function setup() {
|
|
73
|
-
|
|
74
|
-
const projectName = (_a = context.target) === null || _a === void 0 ? void 0 : _a.project;
|
|
72
|
+
const projectName = context.target?.project;
|
|
75
73
|
if (!projectName) {
|
|
76
74
|
throw new Error('The builder requires a target.');
|
|
77
75
|
}
|
|
78
76
|
// Purge old build disk cache.
|
|
79
77
|
await (0, purge_cache_1.purgeStaleBuildCache)(context);
|
|
80
|
-
options.port = await (0, check_port_1.checkPort)(
|
|
78
|
+
options.port = await (0, check_port_1.checkPort)(options.port ?? 4200, options.host || 'localhost');
|
|
81
79
|
if (options.hmr) {
|
|
82
80
|
logger.warn(core_1.tags.stripIndents `NOTICE: Hot Module Replacement (HMR) is enabled for the dev server.
|
|
83
81
|
See https://webpack.js.org/guides/hot-module-replacement for information on working with HMR for Webpack.`);
|
|
@@ -162,7 +160,7 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
162
160
|
if (transforms.webpackConfiguration) {
|
|
163
161
|
webpackConfig = await transforms.webpackConfiguration(webpackConfig);
|
|
164
162
|
}
|
|
165
|
-
|
|
163
|
+
webpackConfig.plugins ?? (webpackConfig.plugins = []);
|
|
166
164
|
if (browserOptions.index) {
|
|
167
165
|
const { scripts = [], styles = [], baseHref } = browserOptions;
|
|
168
166
|
const entrypoints = (0, package_chunk_sort_1.generateEntryPoints)({
|
|
@@ -171,7 +169,7 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
171
169
|
// The below is needed as otherwise HMR for CSS will break.
|
|
172
170
|
// styles.js and runtime.js needs to be loaded as a non-module scripts as otherwise `document.currentScript` will be null.
|
|
173
171
|
// https://github.com/webpack-contrib/mini-css-extract-plugin/blob/90445dd1d81da0c10b9b0e8a17b417d0651816b8/src/hmr/hotModuleReplacement.js#L39
|
|
174
|
-
isHMREnabled: !!
|
|
172
|
+
isHMREnabled: !!webpackConfig.devServer?.hot,
|
|
175
173
|
});
|
|
176
174
|
webpackConfig.plugins.push(new index_html_webpack_plugin_1.IndexHtmlWebpackPlugin({
|
|
177
175
|
indexPath: path.resolve(workspaceRoot, (0, webpack_browser_config_1.getIndexInputFile)(browserOptions.index)),
|
|
@@ -201,19 +199,18 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
201
199
|
projectRoot,
|
|
202
200
|
};
|
|
203
201
|
}
|
|
204
|
-
return (0, rxjs_1.from)(setup()).pipe((0,
|
|
202
|
+
return (0, rxjs_1.from)(setup()).pipe((0, rxjs_1.switchMap)(({ browserOptions, webpackConfig }) => {
|
|
205
203
|
return (0, build_webpack_1.runWebpackDevServer)(webpackConfig, context, {
|
|
206
204
|
logging: transforms.logging || (0, stats_1.createWebpackLoggingCallback)(browserOptions, logger),
|
|
207
205
|
webpackFactory: require('webpack'),
|
|
208
206
|
webpackDevServerFactory: require('webpack-dev-server'),
|
|
209
|
-
}).pipe((0,
|
|
210
|
-
var _a, _b;
|
|
207
|
+
}).pipe((0, rxjs_1.concatMap)(async (buildEvent, index) => {
|
|
211
208
|
const webpackRawStats = buildEvent.webpackStats;
|
|
212
209
|
if (!webpackRawStats) {
|
|
213
210
|
throw new Error('Webpack stats build result is required.');
|
|
214
211
|
}
|
|
215
212
|
// Resolve serve address.
|
|
216
|
-
const publicPath =
|
|
213
|
+
const publicPath = webpackConfig.devServer?.devMiddleware?.publicPath;
|
|
217
214
|
const serverAddress = url.format({
|
|
218
215
|
protocol: options.ssl ? 'https' : 'http',
|
|
219
216
|
hostname: options.host === '0.0.0.0' ? 'localhost' : options.host,
|
|
@@ -250,10 +247,9 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
250
247
|
}
|
|
251
248
|
exports.serveWebpackBrowser = serveWebpackBrowser;
|
|
252
249
|
async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheOptions, context) {
|
|
253
|
-
var _a;
|
|
254
250
|
const localeDescription = i18n.locales[locale];
|
|
255
251
|
// Modify main entrypoint to include locale data
|
|
256
|
-
if (
|
|
252
|
+
if (localeDescription?.dataPath &&
|
|
257
253
|
typeof webpackConfig.entry === 'object' &&
|
|
258
254
|
!Array.isArray(webpackConfig.entry) &&
|
|
259
255
|
webpackConfig.entry['main']) {
|
|
@@ -268,7 +264,7 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
268
264
|
}
|
|
269
265
|
}
|
|
270
266
|
let missingTranslationBehavior = browserOptions.i18nMissingTranslation || 'ignore';
|
|
271
|
-
let translation =
|
|
267
|
+
let translation = localeDescription?.translation || {};
|
|
272
268
|
if (locale === i18n.sourceLocale) {
|
|
273
269
|
missingTranslationBehavior = 'ignore';
|
|
274
270
|
translation = {};
|
|
@@ -277,7 +273,7 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
277
273
|
locale,
|
|
278
274
|
missingTranslationBehavior,
|
|
279
275
|
translation: i18n.shouldInline ? translation : undefined,
|
|
280
|
-
translationFiles: localeDescription
|
|
276
|
+
translationFiles: localeDescription?.files.map((file) => path.resolve(context.workspaceRoot, file.path)),
|
|
281
277
|
};
|
|
282
278
|
const i18nRule = {
|
|
283
279
|
test: /\.[cm]?[tj]sx?$/,
|
|
@@ -290,7 +286,7 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
290
286
|
false,
|
|
291
287
|
cacheIdentifier: JSON.stringify({
|
|
292
288
|
locale,
|
|
293
|
-
translationIntegrity: localeDescription
|
|
289
|
+
translationIntegrity: localeDescription?.files.map((file) => file.integrity),
|
|
294
290
|
}),
|
|
295
291
|
i18n: i18nLoaderOptions,
|
|
296
292
|
},
|
|
@@ -298,7 +294,7 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
298
294
|
],
|
|
299
295
|
};
|
|
300
296
|
// Get the rules and ensure the Webpack configuration is setup properly
|
|
301
|
-
const rules =
|
|
297
|
+
const rules = webpackConfig.module?.rules || [];
|
|
302
298
|
if (!webpackConfig.module) {
|
|
303
299
|
webpackConfig.module = { rules };
|
|
304
300
|
}
|
|
@@ -312,7 +308,6 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
312
308
|
webpackConfig.plugins.push({
|
|
313
309
|
apply: (compiler) => {
|
|
314
310
|
compiler.hooks.thisCompilation.tap('build-angular', (compilation) => {
|
|
315
|
-
var _a;
|
|
316
311
|
if (i18n.shouldInline && i18nLoaderOptions.translation === undefined) {
|
|
317
312
|
// Reload translations
|
|
318
313
|
(0, i18n_options_1.loadTranslations)(locale, localeDescription, context.workspaceRoot, loader, {
|
|
@@ -323,7 +318,7 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
323
318
|
(0, webpack_diagnostics_1.addError)(compilation, message);
|
|
324
319
|
},
|
|
325
320
|
}, undefined, browserOptions.i18nDuplicateTranslation);
|
|
326
|
-
i18nLoaderOptions.translation =
|
|
321
|
+
i18nLoaderOptions.translation = localeDescription.translation ?? {};
|
|
327
322
|
}
|
|
328
323
|
compilation.hooks.finishModules.tap('build-angular', () => {
|
|
329
324
|
// After loaders are finished, clear out the now unneeded translations
|
|
@@ -334,4 +329,4 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig, cacheO
|
|
|
334
329
|
});
|
|
335
330
|
}
|
|
336
331
|
exports.default = (0, architect_1.createBuilder)(serveWebpackBrowser);
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9kZXYtc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBQWtHO0FBQ2xHLGlFQUl1QztBQUN2QywrQ0FBa0Q7QUFDbEQsMkNBQTZCO0FBQzdCLCtCQUF3QztBQUN4Qyw4Q0FBc0Q7QUFDdEQseUNBQTJCO0FBSTNCLHVDQUFvRDtBQUNwRCx1REFBbUQ7QUFDbkQsNkNBQTJDO0FBQzNDLDJEQUF5RTtBQUV6RSxxRUFBd0U7QUFDeEUsaUVBQTZGO0FBQzdGLHVFQUFxRTtBQUNyRSx5REFBK0Q7QUFDL0QsaURBQXFFO0FBQ3JFLCtFQUk0QztBQUM1Qyx5RUFBdUU7QUFDdkUsbURBQTZGO0FBQzdGLCtGQUF5RjtBQUN6Rix1RkFBa0Y7QUFDbEYscURBSW1DO0FBQ25DLDhDQUFrRjtBQWFsRjs7Ozs7Ozs7R0FRRztBQUNILGtEQUFrRDtBQUNsRCxTQUFnQixtQkFBbUIsQ0FDakMsT0FBZ0MsRUFDaEMsT0FBdUIsRUFDdkIsYUFJSSxFQUFFO0lBRU4seUJBQXlCO0lBQ3pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzFDLElBQUEsd0NBQThCLEVBQUMsYUFBYSxDQUFDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFcEUsS0FBSyxVQUFVLEtBQUs7O1FBS2xCLE1BQU0sV0FBVyxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sMENBQUUsT0FBTyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUss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Q0FBQztBQUNMLENBQUM7QUFFRCxrQkFBZSxJQUFBLHlCQUFhLEVBQWtELG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQnVpbGRlckNvbnRleHQsIGNyZWF0ZUJ1aWxkZXIsIHRhcmdldEZyb21UYXJnZXRTdHJpbmcgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB7XG4gIERldlNlcnZlckJ1aWxkT3V0cHV0LFxuICBXZWJwYWNrTG9nZ2luZ0NhbGxiYWNrLFxuICBydW5XZWJwYWNrRGV2U2VydmVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYnVpbGQtd2VicGFjayc7XG5pbXBvcnQgeyBqc29uLCB0YWdzIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgdXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgd2VicGFjayBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB3ZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgeyBFeGVjdXRpb25UcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW1pemF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgY2hlY2tQb3J0IH0gZnJvbSAnLi4vLi4vdXRpbHMvY2hlY2stcG9ydCc7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvcic7XG5pbXBvcnQgeyBJMThuT3B0aW9ucywgbG9hZFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4tb3B0aW9ucyc7XG5pbXBvcnQgeyBJbmRleEh0bWxUcmFuc2Zvcm0gfSBmcm9tICcuLi8uLi91dGlscy9pbmRleC1maWxlL2luZGV4LWh0bWwtZ2VuZXJhdG9yJztcbmltcG9ydCB7IGNyZWF0ZVRyYW5zbGF0aW9uTG9hZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZC10cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHsgTm9ybWFsaXplZENhY2hlZE9wdGlvbnMsIG5vcm1hbGl6ZUNhY2hlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL25vcm1hbGl6ZS1jYWNoZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUVudHJ5UG9pbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFja2FnZS1jaHVuay1zb3J0JztcbmltcG9ydCB7IHB1cmdlU3RhbGVCdWlsZENhY2hlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHVyZ2UtY2FjaGUnO1xuaW1wb3J0IHsgYXNzZXJ0Q29tcGF0aWJsZUFuZ3VsYXJWZXJzaW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmVyc2lvbic7XG5pbXBvcnQge1xuICBnZW5lcmF0ZUkxOG5Ccm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0LFxuICBnZXRJbmRleElucHV0RmlsZSxcbiAgZ2V0SW5kZXhPdXRwdXRGaWxlLFxufSBmcm9tICcuLi8uLi91dGlscy93ZWJwYWNrLWJyb3dzZXItY29uZmlnJztcbmltcG9ydCB7IGFkZEVycm9yLCBhZGRXYXJuaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvd2VicGFjay1kaWFnbm9zdGljcyc7XG5pbXBvcnQgeyBnZXRDb21tb25Db25maWcsIGdldERldlNlcnZlckNvbmZpZywgZ2V0U3R5bGVzQ29uZmlnIH0gZnJvbSAnLi4vLi4vd2VicGFjay9jb25maWdzJztcbmltcG9ydCB7IEluZGV4SHRtbFdlYnBhY2tQbHVnaW4gfSBmcm9tICcuLi8uLi93ZWJwYWNrL3BsdWdpbnMvaW5kZXgtaHRtbC13ZWJwYWNrLXBsdWdpbic7XG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyUGx1Z2luIH0gZnJvbSAnLi4vLi4vd2VicGFjay9wbHVnaW5zL3NlcnZpY2Utd29ya2VyLXBsdWdpbic7XG5pbXBvcnQge1xuICBCdWlsZEV2ZW50U3RhdHMsXG4gIGNyZWF0ZVdlYnBhY2tMb2dnaW5nQ2FsbGJhY2ssXG4gIGdlbmVyYXRlQnVpbGRFdmVudFN0YXRzLFxufSBmcm9tICcuLi8uLi93ZWJwYWNrL3V0aWxzL3N0YXRzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBCcm93c2VyQnVpbGRlclNjaGVtYSwgT3V0cHV0SGFzaGluZyB9IGZyb20gJy4uL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IHR5cGUgRGV2U2VydmVyQnVpbGRlck9wdGlvbnMgPSBTY2hlbWE7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbCBEaXJlY3QgdXNhZ2Ugb2YgdGhpcyB0eXBlIGlzIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLlxuICovXG5leHBvcnQgdHlwZSBEZXZTZXJ2ZXJCdWlsZGVyT3V0cHV0ID0gRGV2U2VydmVyQnVpbGRPdXRwdXQgJiB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgc3RhdHM6IEJ1aWxkRXZlbnRTdGF0cztcbn07XG5cbi8qKlxuICogUmV1c2FibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFuZ3VsYXIgV2VicGFjayBkZXZlbG9wbWVudCBzZXJ2ZXIgYnVpbGRlci5cbiAqIEBwYXJhbSBvcHRpb25zIERldiBTZXJ2ZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IFRoZSBidWlsZCBjb250ZXh0LlxuICogQHBhcmFtIHRyYW5zZm9ybXMgQSBtYXAgb2YgdHJhbnNmb3JtcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGhvb2sgaW50byBzb21lIGxvZ2ljIChzdWNoIGFzXG4gKiAgICAgdHJhbnNmb3JtaW5nIHdlYnBhY2sgY29uZmlndXJhdGlvbiBiZWZvcmUgcGFzc2luZyBpdCB0byB3ZWJwYWNrKS5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIERpcmVjdCB1c2FnZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlV2VicGFja0Jyb3dzZXIoXG4gIG9wdGlvbnM6IERldlNlcnZlckJ1aWxkZXJPcHRpb25zLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgdHJhbnNmb3Jtczoge1xuICAgIHdlYnBhY2tDb25maWd1cmF0aW9uPzogRXhlY3V0aW9uVHJhbnNmb3JtZXI8d2VicGFjay5Db25maWd1cmF0aW9uPjtcbiAgICBsb2dnaW5nPzogV2VicGFja0xvZ2dpbmdDYWxsYmFjaztcbiAgICBpbmRleEh0bWw/OiBJbmRleEh0bWxUcmFuc2Zvcm07XG4gIH0gPSB7fSxcbik6IE9ic2VydmFibGU8RGV2U2VydmVyQnVpbGRlck91dHB1dD4ge1xuICAvLyBDaGVjayBBbmd1bGFyIHZlcnNpb24uXG4gIGNvbnN0IHsgbG9nZ2VyLCB3b3Jrc3BhY2VSb290IH0gPSBjb250ZXh0O1xuICBhc3NlcnRDb21wYXRpYmxlQW5ndWxhclZlcnNpb24od29ya3NwYWNlUm9vdCk7XG5cbiAgY29uc3QgYnJvd3NlclRhcmdldCA9IHRhcmdldEZyb21UYXJnZXRTdHJpbmcob3B0aW9ucy5icm93c2VyVGFyZ2V0KTtcblxuICBhc3luYyBmdW5jdGlvbiBzZXR1cCgpOiBQcm9taXNlPHtcbiAgICBicm93c2VyT3B0aW9uczogQnJvd3NlckJ1aWxkZXJTY2hlbWE7XG4gICAgd2VicGFja0NvbmZpZzogd2VicGFjay5Db25maWd1cmF0aW9uO1xuICAgIHByb2plY3RSb290OiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGNvbnRleHQudGFyZ2V0Py5wcm9qZWN0O1xuICAgIGlmICghcHJvamVjdE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGJ1aWxkZXIgcmVxdWlyZXMgYSB0YXJnZXQuJyk7XG4gICAgfVxuXG4gICAgLy8gUHVyZ2Ugb2xkIGJ1aWxkIGRpc2sgY2FjaGUuXG4gICAgYXdhaXQgcHVyZ2VTdGFsZUJ1aWxkQ2FjaGUoY29udGV4dCk7XG5cbiAgICBvcHRpb25zLnBvcnQgPSBhd2FpdCBjaGVja1BvcnQob3B0aW9ucy5wb3J0ID8/IDQyMDAsIG9wdGlvbnMuaG9zdCB8fCAnbG9jYWxob3N0Jyk7XG5cbiAgICBpZiAob3B0aW9ucy5obXIpIHtcbiAgICAgIGxvZ2dlci53YXJuKHRhZ3Muc3RyaXBJbmRlbnRzYE5PVElDRTogSG90IE1vZHVsZSBSZXBsYWNlbWVudCAoSE1SKSBpcyBlbmFibGVkIGZvciB0aGUgZGV2IHNlcnZlci5cbiAgICAgIFNlZSBodHRwczovL3dlYnBhY2suanMub3JnL2d1aWRlcy9ob3QtbW9kdWxlLXJlcGxhY2VtZW50IGZvciBpbmZvcm1hdGlvbiBvbiB3b3JraW5nIHdpdGggSE1SIGZvciBXZWJwYWNrLmApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFvcHRpb25zLmRpc2FibGVIb3N0Q2hlY2sgJiZcbiAgICAgIG9wdGlvbnMuaG9zdCAmJlxuICAgICAgIS9eMTI3XFwuXFxkK1xcLlxcZCtcXC5cXGQrL2cudGVzdChvcHRpb25zLmhvc3QpICYmXG4gICAgICBvcHRpb25zLmhvc3QgIT09ICdsb2NhbGhvc3QnXG4gICAgKSB7XG4gICAgICBsb2dnZXIud2Fybih0YWdzLnN0cmlwSW5kZW50YFxuICAgICAgICBXYXJuaW5nOiBUaGlzIGlzIGEgc2ltcGxlIHNlcnZlciBmb3IgdXNlIGluIHRlc3Rpbmcgb3IgZGVidWdnaW5nIEFuZ3VsYXIgYXBwbGljYXRpb25zXG4gICAgICAgIGxvY2FsbHkuIEl0IGhhc24ndCBiZWVuIHJldmlld2VkIGZvciBzZWN1cml0eSBpc3N1ZXMuXG5cbiAgICAgICAgQmluZGluZyB0aGlzIHNlcnZlciB0byBhbiBvcGVuIGNvbm5lY3Rpb24gY2FuIHJlc3VsdCBpbiBjb21wcm9taXNpbmcgeW91ciBhcHBsaWNhdGlvbiBvclxuICAgICAgICBjb21wdXRlci4gVXNpbmcgYSBkaWZmZXJlbnQgaG9zdCB0aGFuIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBcIi0taG9zdFwiIGZsYWcgbWlnaHQgcmVzdWx0IGluXG4gICAgICAgIHdlYnNvY2tldCBjb25uZWN0aW9uIGlzc3Vlcy4gWW91IG1pZ2h0IG5lZWQgdG8gdXNlIFwiLS1kaXNhYmxlLWhvc3QtY2hlY2tcIiBpZiB0aGF0J3MgdGhlXG4gICAgICAgIGNhc2UuXG4gICAgICBgKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kaXNhYmxlSG9zdENoZWNrKSB7XG4gICAgICBsb2dnZXIud2Fybih0YWdzLm9uZUxpbmVgXG4gICAgICAgIFdhcm5pbmc6IFJ1bm5pbmcgYSBzZXJ2ZXIgd2l0aCAtLWRpc2FibGUtaG9zdC1jaGVjayBpcyBhIHNlY3VyaXR5IHJpc2suXG4gICAgICAgIFNlZSBodHRwczovL21lZGl1bS5jb20vd2VicGFjay93ZWJwYWNrLWRldi1zZXJ2ZXItbWlkZGxld2FyZS1zZWN1cml0eS1pc3N1ZXMtMTQ4OWQ5NTA4NzRhXG4gICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgYCk7XG4gICAgfVxuICAgIC8vIEdldCB0aGUgYnJvd3NlciBjb25maWd1cmF0aW9uIGZyb20gdGhlIHRhcmdldCBuYW1lLlxuICAgIGNvbnN0IHJhd0Jyb3dzZXJPcHRpb25zID0gKGF3YWl0IGNvbnRleHQuZ2V0VGFyZ2V0T3B0aW9ucyhicm93c2VyVGFyZ2V0KSkgYXMganNvbi5Kc29uT2JqZWN0ICZcbiAgICAgIEJyb3dzZXJCdWlsZGVyU2NoZW1hO1xuXG4gICAgaWYgKHJhd0Jyb3dzZXJPcHRpb25zLm91dHB1dEhhc2hpbmcgJiYgcmF3QnJvd3Nlck9wdGlvbnMub3V0cHV0SGFzaGluZyAhPT0gT3V0cHV0SGFzaGluZy5Ob25lKSB7XG4gICAgICAvLyBEaXNhYmxlIG91dHB1dCBoYXNoaW5nIGZvciBkZXYgYnVpbGQgYXMgdGhpcyBjYW4gY2F1c2UgbWVtb3J5IGxlYWtzXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2stZGV2LXNlcnZlci9pc3N1ZXMvMzc3I2lzc3VlY29tbWVudC0yNDEyNTg0MDVcbiAgICAgIHJhd0Jyb3dzZXJPcHRpb25zLm91dHB1dEhhc2hpbmcgPSBPdXRwdXRIYXNoaW5nLk5vbmU7XG4gICAgICBsb2dnZXIud2FybihgV2FybmluZzogJ291dHB1dEhhc2hpbmcnIG9wdGlvbiBpcyBkaXNhYmxlZCB3aGVuIHVzaW5nIHRoZSBkZXYtc2VydmVyLmApO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWUpO1xuICAgIGNvbnN0IGNhY2hlT3B0aW9ucyA9IG5vcm1hbGl6ZUNhY2hlT3B0aW9ucyhtZXRhZGF0YSwgY29udGV4dC53b3Jrc3BhY2VSb290KTtcblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lID0gYXdhaXQgY29udGV4dC5nZXRCdWlsZGVyTmFtZUZvclRhcmdldChicm93c2VyVGFyZ2V0KTtcblxuICAgIC8vIElzc3VlIGEgd2FybmluZyB0aGF0IHRoZSBkZXYtc2VydmVyIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHRoZSBleHBlcmltZW50YWwgZXNidWlsZC1cbiAgICAvLyBiYXNlZCBidWlsZGVyIGFuZCB3aWxsIHVzZSBXZWJwYWNrLlxuICAgIGlmIChicm93c2VyTmFtZSA9PT0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmJyb3dzZXItZXNidWlsZCcpIHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAnV0FSTklORzogVGhlIGV4cGVyaW1lbnRhbCBlc2J1aWxkLWJhc2VkIGJ1aWxkZXIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgJyArXG4gICAgICAgICAgJ2J5IHRoZSBkZXYtc2VydmVyLiBUaGUgc3RhYmxlIFdlYnBhY2stYmFzZWQgYnVpbGRlciB3aWxsIGJlIHVzZWQgaW5zdGVhZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyT3B0aW9ucyA9IChhd2FpdCBjb250ZXh0LnZhbGlkYXRlT3B0aW9ucyhcbiAgICAgIHtcbiAgICAgICAgLi4ucmF3QnJvd3Nlck9wdGlvbnMsXG4gICAgICAgIHdhdGNoOiBvcHRpb25zLndhdGNoLFxuICAgICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UsXG4gICAgICAgIC8vIEluIGRldiBzZXJ2ZXIgd2Ugc2hvdWxkIG5vdCBoYXZlIGJ1ZGdldHMgYmVjYXVzZSBvZiBleHRyYSBsaWJzIHN1Y2ggYXMgc29ja3MtanNcbiAgICAgICAgYnVkZ2V0czogdW5kZWZpbmVkLFxuICAgICAgfSBhcyBqc29uLkpzb25PYmplY3QgJiBCcm93c2VyQnVpbGRlclNjaGVtYSxcbiAgICAgIGJyb3dzZXJOYW1lLFxuICAgICkpIGFzIGpzb24uSnNvbk9iamVjdCAmIEJyb3dzZXJCdWlsZGVyU2NoZW1hO1xuXG4gICAgY29uc3QgeyBzdHlsZXMsIHNjcmlwdHMgfSA9IG5vcm1hbGl6ZU9wdGltaXphdGlvbihicm93c2VyT3B0aW9ucy5vcHRpbWl6YXRpb24pO1xuICAgIGlmIChzY3JpcHRzIHx8IHN0eWxlcy5taW5pZnkpIHtcbiAgICAgIGxvZ2dlci5lcnJvcih0YWdzLnN0cmlwSW5kZW50c2BcbiAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAgICBUaGlzIGlzIGEgc2ltcGxlIHNlcnZlciBmb3IgdXNlIGluIHRlc3Rpbmcgb3IgZGVidWdnaW5nIEFuZ3VsYXIgYXBwbGljYXRpb25zIGxvY2FsbHkuXG4gICAgICAgIEl0IGhhc24ndCBiZWVuIHJldmlld2VkIGZvciBzZWN1cml0eSBpc3N1ZXMuXG5cbiAgICAgICAgRE9OJ1QgVVNFIElUIEZPUiBQUk9EVUNUSU9OIVxuICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICBgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbmZpZywgcHJvamVjdFJvb3QsIGkxOG4gfSA9IGF3YWl0IGdlbmVyYXRlSTE4bkJyb3dzZXJXZWJwYWNrQ29uZmlnRnJvbUNvbnRleHQoXG4gICAgICBicm93c2VyT3B0aW9ucyxcbiAgICAgIGNvbnRleHQsXG4gICAgICAod2NvKSA9PiBbZ2V0RGV2U2VydmVyQ29uZmlnKHdjbyksIGdldENvbW1vbkNvbmZpZyh3Y28pLCBnZXRTdHlsZXNDb25maWcod2NvKV0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG5cbiAgICBpZiAoIWNvbmZpZy5kZXZTZXJ2ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2VicGFjayBEZXYgU2VydmVyIGNvbmZpZ3VyYXRpb24gd2FzIG5vdCBzZXQuJyk7XG4gICAgfVxuXG4gICAgbGV0IGxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChpMThuLnNob3VsZElubGluZSkge1xuICAgICAgLy8gRGV2LXNlcnZlciBvbmx5IHN1cHBvcnRzIG9uZSBsb2NhbGVcbiAgICAgIGxvY2FsZSA9IFsuLi5pMThuLmlubGluZUxvY2FsZXNdWzBdO1xuICAgIH0gZWxzZSBpZiAoaTE4bi5oYXNEZWZpbmVkU291cmNlTG9jYWxlKSB7XG4gICAgICAvLyB1c2Ugc291cmNlIGxvY2FsZSBpZiBub3QgbG9jYWxpemluZ1xuICAgICAgbG9jYWxlID0gaTE4bi5zb3VyY2VMb2NhbGU7XG4gICAgfVxuXG4gICAgbGV0IHdlYnBhY2tDb25maWcgPSBjb25maWc7XG5cbiAgICAvLyBJZiBhIGxvY2FsZSBpcyBkZWZpbmVkLCBzZXR1cCBsb2NhbGl6YXRpb25cbiAgICBpZiAobG9jYWxlKSB7XG4gICAgICBpZiAoaTE4bi5pbmxpbmVMb2NhbGVzLnNpemUgPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVGhlIGRldmVsb3BtZW50IHNlcnZlciBvbmx5IHN1cHBvcnRzIGxvY2FsaXppbmcgYSBzaW5nbGUgbG9jYWxlIHBlciBidWlsZC4nLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBzZXR1cExvY2FsaXplKGxvY2FsZSwgaTE4biwgYnJvd3Nlck9wdGlvbnMsIHdlYnBhY2tDb25maWcsIGNhY2hlT3B0aW9ucywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHRyYW5zZm9ybXMud2VicGFja0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHdlYnBhY2tDb25maWcgPSBhd2FpdCB0cmFuc2Zvcm1zLndlYnBhY2tDb25maWd1cmF0aW9uKHdlYnBhY2tDb25maWcpO1xuICAgIH1cblxuICAgIHdlYnBhY2tDb25maWcucGx1Z2lucyA/Pz0gW107XG5cbiAgICBpZiAoYnJvd3Nlck9wdGlvbnMuaW5kZXgpIHtcbiAgICAgIGNvbnN0IHsgc2NyaXB0cyA9IFtdLCBzdHlsZXMgPSBbXSwgYmFzZUhyZWYgfSA9IGJyb3dzZXJPcHRpb25zO1xuICAgICAgY29uc3QgZW50cnlwb2ludHMgPSBnZW5lcmF0ZUVudHJ5UG9pbnRzKHtcbiAgICAgICAgc2NyaXB0cyxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICAvLyBUaGUgYmVsb3cgaXMgbmVlZGVkIGFzIG90aGVyd2lzZSBITVIgZm9yIENTUyB3aWxsIGJyZWFrLlxuICAgICAgICAvLyBzdHlsZXMuanMgYW5kIHJ1bnRpbWUuanMgbmVlZHMgdG8gYmUgbG9hZGVkIGFzIGEgbm9uLW1vZHVsZSBzY3JpcHRzIGFzIG90aGVyd2lzZSBgZG9jdW1lbnQuY3VycmVudFNjcmlwdGAgd2lsbCBiZSBudWxsLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Jsb2IvOTA0NDVkZDFkODFkYTBjMTBiOWIwZThhMTdiNDE3ZDA2NTE4MTZiOC9zcmMvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzI0wzOVxuICAgICAgICBpc0hNUkVuYWJsZWQ6ICEhd2VicGFja0NvbmZpZy5kZXZTZXJ2ZXI/LmhvdCxcbiAgICAgIH0pO1xuXG4gICAgICB3ZWJwYWNrQ29uZmlnLnBsdWdpbnMucHVzaChcbiAgICAgICAgbmV3IEluZGV4SHRtbFdlYnBhY2tQbHVnaW4oe1xuICAgICAgICAgIGluZGV4UGF0aDogcGF0aC5yZXNvbHZlKHdvcmtzcGFjZVJvb3QsIGdldEluZGV4SW5wdXRGaWxlKGJyb3dzZXJPcHRpb25zLmluZGV4KSksXG4gICAgICAgICAgb3V0cHV0UGF0aDogZ2V0SW5kZXhPdXRwdXRGaWxlKGJyb3dzZXJPcHRpb25zLmluZGV4KSxcbiAgICAgICAgICBiYXNlSHJlZixcbiAgICAgICAgICBlbnRyeXBvaW50cyxcbiAgICAgICAgICBkZXBsb3lVcmw6IGJyb3dzZXJPcHRpb25zLmRlcGxveVVybCxcbiAgICAgICAgICBzcmk6IGJyb3dzZXJPcHRpb25zLnN1YnJlc291cmNlSW50ZWdyaXR5LFxuICAgICAgICAgIGNhY2hlOiBjYWNoZU9wdGlvbnMsXG4gICAgICAgICAgcG9zdFRyYW5zZm9ybTogdHJhbnNmb3Jtcy5pbmRleEh0bWwsXG4gICAgICAgICAgb3B0aW1pemF0aW9uOiBub3JtYWxpemVPcHRpbWl6YXRpb24oYnJvd3Nlck9wdGlvbnMub3B0aW1pemF0aW9uKSxcbiAgICAgICAgICBjcm9zc09yaWdpbjogYnJvd3Nlck9wdGlvbnMuY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgbGFuZzogbG9jYWxlLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGJyb3dzZXJPcHRpb25zLnNlcnZpY2VXb3JrZXIpIHtcbiAgICAgIHdlYnBhY2tDb25maWcucGx1Z2lucy5wdXNoKFxuICAgICAgICBuZXcgU2VydmljZVdvcmtlclBsdWdpbih7XG4gICAgICAgICAgYmFzZUhyZWY6IGJyb3dzZXJPcHRpb25zLmJhc2VIcmVmLFxuICAgICAgICAgIHJvb3Q6IGNvbnRleHQud29ya3NwYWNlUm9vdCxcbiAgICAgICAgICBwcm9qZWN0Um9vdCxcbiAgICAgICAgICBuZ3N3Q29uZmlnUGF0aDogYnJvd3Nlck9wdGlvbnMubmdzd0NvbmZpZ1BhdGgsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYnJvd3Nlck9wdGlvbnMsXG4gICAgICB3ZWJwYWNrQ29uZmlnLFxuICAgICAgcHJvamVjdFJvb3QsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmcm9tKHNldHVwKCkpLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh7IGJyb3dzZXJPcHRpb25zLCB3ZWJwYWNrQ29uZmlnIH0pID0+IHtcbiAgICAgIHJldHVybiBydW5XZWJwYWNrRGV2U2VydmVyKHdlYnBhY2tDb25maWcsIGNvbnRleHQsIHtcbiAgICAgICAgbG9nZ2luZzogdHJhbnNmb3Jtcy5sb2dnaW5nIHx8IGNyZWF0ZVdlYnBhY2tMb2dnaW5nQ2FsbGJhY2soYnJvd3Nlck9wdGlvbnMsIGxvZ2dlciksXG4gICAgICAgIHdlYnBhY2tGYWN0b3J5OiByZXF1aXJlKCd3ZWJwYWNrJykgYXMgdHlwZW9mIHdlYnBhY2ssXG4gICAgICAgIHdlYnBhY2tEZXZTZXJ2ZXJGYWN0b3J5OiByZXF1aXJlKCd3ZWJwYWNrLWRldi1zZXJ2ZXInKSBhcyB0eXBlb2Ygd2VicGFja0RldlNlcnZlcixcbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcChhc3luYyAoYnVpbGRFdmVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCB3ZWJwYWNrUmF3U3RhdHMgPSBidWlsZEV2ZW50LndlYnBhY2tTdGF0cztcbiAgICAgICAgICBpZiAoIXdlYnBhY2tSYXdTdGF0cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJwYWNrIHN0YXRzIGJ1aWxkIHJlc3VsdCBpcyByZXF1aXJlZC4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZXNvbHZlIHNlcnZlIGFkZHJlc3MuXG4gICAgICAgICAgY29uc3QgcHVibGljUGF0aCA9IHdlYnBhY2tDb25maWcuZGV2U2VydmVyPy5kZXZNaWRkbGV3YXJlPy5wdWJsaWNQYXRoO1xuXG4gICAgICAgICAgY29uc3Qgc2VydmVyQWRkcmVzcyA9IHVybC5mb3JtYXQoe1xuICAgICAgICAgICAgcHJvdG9jb2w6IG9wdGlvbnMuc3NsID8gJ2h0dHBzJyA6ICdodHRwJyxcbiAgICAgICAgICAgIGhvc3RuYW1lOiBvcHRpb25zLmhvc3QgPT09ICcwLjAuMC4wJyA/ICdsb2NhbGhvc3QnIDogb3B0aW9ucy5ob3N0LFxuICAgICAgICAgICAgcG9ydDogYnVpbGRFdmVudC5wb3J0LFxuICAgICAgICAgICAgcGF0aG5hbWU6IHR5cGVvZiBwdWJsaWNQYXRoID09PSAnc3RyaW5nJyA/IHB1YmxpY1BhdGggOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgdGFncy5vbmVMaW5lYFxuICAgICAgICAgICAgICAqKlxuICAgICAgICAgICAgICBBbmd1bGFyIExpdmUgRGV2ZWxvcG1lbnQgU2VydmVyIGlzIGxpc3RlbmluZyBvbiAke29wdGlvbnMuaG9zdH06JHtidWlsZEV2ZW50LnBvcnR9LFxuICAgICAgICAgICAgICBvcGVuIHlvdXIgYnJvd3NlciBvbiAke3NlcnZlckFkZHJlc3N9XG4gICAgICAgICAgICAgICoqXG4gICAgICAgICAgICBgICtcbiAgICAgICAgICAgICAgICAnXFxuJyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLm9wZW4pIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3BlbiA9IChhd2FpdCBpbXBvcnQoJ29wZW4nKSkuZGVmYXVsdDtcbiAgICAgICAgICAgICAgYXdhaXQgb3BlbihzZXJ2ZXJBZGRyZXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYnVpbGRFdmVudC5zdWNjZXNzKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgXFxuJHtjb2xvcnMuZ3JlZW5CcmlnaHQoY29sb3JzLnN5bWJvbHMuY2hlY2spfSBDb21waWxlZCBzdWNjZXNzZnVsbHkuYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBcXG4ke2NvbG9ycy5yZWRCcmlnaHQoY29sb3JzLnN5bWJvbHMuY3Jvc3MpfSBGYWlsZWQgdG8gY29tcGlsZS5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYnVpbGRFdmVudCxcbiAgICAgICAgICAgIGJhc2VVcmw6IHNlcnZlckFkZHJlc3MsXG4gICAgICAgICAgICBzdGF0czogZ2VuZXJhdGVCdWlsZEV2ZW50U3RhdHMod2VicGFja1Jhd1N0YXRzLCBicm93c2VyT3B0aW9ucyksXG4gICAgICAgICAgfSBhcyBEZXZTZXJ2ZXJCdWlsZGVyT3V0cHV0O1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSksXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwTG9jYWxpemUoXG4gIGxvY2FsZTogc3RyaW5nLFxuICBpMThuOiBJMThuT3B0aW9ucyxcbiAgYnJvd3Nlck9wdGlvbnM6IEJyb3dzZXJCdWlsZGVyU2NoZW1hLFxuICB3ZWJwYWNrQ29uZmlnOiB3ZWJwYWNrLkNvbmZpZ3VyYXRpb24sXG4gIGNhY2hlT3B0aW9uczogTm9ybWFsaXplZENhY2hlZE9wdGlvbnMsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuKSB7XG4gIGNvbnN0IGxvY2FsZURlc2NyaXB0aW9uID0gaTE4bi5sb2NhbGVzW2xvY2FsZV07XG5cbiAgLy8gTW9kaWZ5IG1haW4gZW50cnlwb2ludCB0byBpbmNsdWRlIGxvY2FsZSBkYXRhXG4gIGlmIChcbiAgICBsb2NhbGVEZXNjcmlwdGlvbj8uZGF0YVBhdGggJiZcbiAgICB0eXBlb2Ygd2VicGFja0NvbmZpZy5lbnRyeSA9PT0gJ29iamVjdCcgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh3ZWJwYWNrQ29uZmlnLmVudHJ5KSAmJlxuICAgIHdlYnBhY2tDb25maWcuZW50cnlbJ21haW4nXVxuICApIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh3ZWJwYWNrQ29uZmlnLmVudHJ5WydtYWluJ10pKSB7XG4gICAgICB3ZWJwYWNrQ29uZmlnLmVudHJ5WydtYWluJ10udW5zaGlmdChsb2NhbGVEZXNjcmlwdGlvbi5kYXRhUGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlYnBhY2tDb25maWcuZW50cnlbJ21haW4nXSA9IFtcbiAgICAgICAgbG9jYWxlRGVzY3JpcHRpb24uZGF0YVBhdGgsXG4gICAgICAgIHdlYnBhY2tDb25maWcuZW50cnlbJ21haW4nXSBhcyBzdHJpbmcsXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGxldCBtaXNzaW5nVHJhbnNsYXRpb25CZWhhdmlvciA9IGJyb3dzZXJPcHRpb25zLmkxOG5NaXNzaW5nVHJhbnNsYXRpb24gfHwgJ2lnbm9yZSc7XG4gIGxldCB0cmFuc2xhdGlvbiA9IGxvY2FsZURlc2NyaXB0aW9uPy50cmFuc2xhdGlvbiB8fCB7fTtcblxuICBpZiAobG9jYWxlID09PSBpMThuLnNvdXJjZUxvY2FsZSkge1xuICAgIG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yID0gJ2lnbm9yZSc7XG4gICAgdHJhbnNsYXRpb24gPSB7fTtcbiAgfVxuXG4gIGNvbnN0IGkxOG5Mb2FkZXJPcHRpb25zID0ge1xuICAgIGxvY2FsZSxcbiAgICBtaXNzaW5nVHJhbnNsYXRpb25CZWhhdmlvcixcbiAgICB0cmFuc2xhdGlvbjogaTE4bi5zaG91bGRJbmxpbmUgPyB0cmFuc2xhdGlvbiA6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2xhdGlvbkZpbGVzOiBsb2NhbGVEZXNjcmlwdGlvbj8uZmlsZXMubWFwKChmaWxlKSA9PlxuICAgICAgcGF0aC5yZXNvbHZlKGNvbnRleHQud29ya3NwYWNlUm9vdCwgZmlsZS5wYXRoKSxcbiAgICApLFxuICB9O1xuXG4gIGNvbnN0IGkxOG5SdWxlOiB3ZWJwYWNrLlJ1bGVTZXRSdWxlID0ge1xuICAgIHRlc3Q6IC9cXC5bY21dP1t0al1zeD8kLyxcbiAgICBlbmZvcmNlOiAncG9zdCcsXG4gICAgdXNlOiBbXG4gICAgICB7XG4gICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKCcuLi8uLi9iYWJlbC93ZWJwYWNrLWxvYWRlcicpLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgY2FjaGVEaXJlY3Rvcnk6XG4gICAgICAgICAgICAoY2FjaGVPcHRpb25zLmVuYWJsZWQgJiYgcGF0aC5qb2luKGNhY2hlT3B0aW9ucy5wYXRoLCAnYmFiZWwtZGV2LXNlcnZlci1pMThuJykpIHx8XG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBjYWNoZUlkZW50aWZpZXI6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uSW50ZWdyaXR5OiBsb2NhbGVEZXNjcmlwdGlvbj8uZmlsZXMubWFwKChmaWxlKSA9PiBmaWxlLmludGVncml0eSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaTE4bjogaTE4bkxvYWRlck9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgLy8gR2V0IHRoZSBydWxlcyBhbmQgZW5zdXJlIHRoZSBXZWJwYWNrIGNvbmZpZ3VyYXRpb24gaXMgc2V0dXAgcHJvcGVybHlcbiAgY29uc3QgcnVsZXMgPSB3ZWJwYWNrQ29uZmlnLm1vZHVsZT8ucnVsZXMgfHwgW107XG4gIGlmICghd2VicGFja0NvbmZpZy5tb2R1bGUpIHtcbiAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZSA9IHsgcnVsZXMgfTtcbiAgfSBlbHNlIGlmICghd2VicGFja0NvbmZpZy5tb2R1bGUucnVsZXMpIHtcbiAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcyA9IHJ1bGVzO1xuICB9XG5cbiAgcnVsZXMucHVzaChpMThuUnVsZSk7XG5cbiAgLy8gQWRkIGEgcGx1Z2luIHRvIHJlbG9hZCB0cmFuc2xhdGlvbiBmaWxlcyBvbiByZWJ1aWxkc1xuICBjb25zdCBsb2FkZXIgPSBhd2FpdCBjcmVhdGVUcmFuc2xhdGlvbkxvYWRlcigpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICB3ZWJwYWNrQ29uZmlnLnBsdWdpbnMhLnB1c2goe1xuICAgIGFwcGx5OiAoY29tcGlsZXI6IHdlYnBhY2suQ29tcGlsZXIpID0+IHtcbiAgICAgIGNvbXBpbGVyLmhvb2tzLnRoaXNDb21waWxhdGlvbi50YXAoJ2J1aWxkLWFuZ3VsYXInLCAoY29tcGlsYXRpb24pID0+IHtcbiAgICAgICAgaWYgKGkxOG4uc2hvdWxkSW5saW5lICYmIGkxOG5Mb2FkZXJPcHRpb25zLnRyYW5zbGF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBSZWxvYWQgdHJhbnNsYXRpb25zXG4gICAgICAgICAgbG9hZFRyYW5zbGF0aW9ucyhcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIGxvY2FsZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29udGV4dC53b3Jrc3BhY2VSb290LFxuICAgICAgICAgICAgbG9hZGVyLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB3YXJuKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBhZGRXYXJuaW5nKGNvbXBpbGF0aW9uLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZXJyb3IobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGFkZEVycm9yKGNvbXBpbGF0aW9uLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBicm93c2VyT3B0aW9ucy5pMThuRHVwbGljYXRlVHJhbnNsYXRpb24sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGkxOG5Mb2FkZXJPcHRpb25zLnRyYW5zbGF0aW9uID0gbG9jYWxlRGVzY3JpcHRpb24udHJhbnNsYXRpb24gPz8ge307XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxhdGlvbi5ob29rcy5maW5pc2hNb2R1bGVzLnRhcCgnYnVpbGQtYW5ndWxhcicsICgpID0+IHtcbiAgICAgICAgICAvLyBBZnRlciBsb2FkZXJzIGFyZSBmaW5pc2hlZCwgY2xlYXIgb3V0IHRoZSBub3cgdW5uZWVkZWQgdHJhbnNsYXRpb25zXG4gICAgICAgICAgaTE4bkxvYWRlck9wdGlvbnMudHJhbnNsYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUJ1aWxkZXI8RGV2U2VydmVyQnVpbGRlck9wdGlvbnMsIERldlNlcnZlckJ1aWxkZXJPdXRwdXQ+KHNlcnZlV2VicGFja0Jyb3dzZXIpO1xuIl19
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9kZXYtc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBQWtHO0FBQ2xHLGlFQUl1QztBQUN2QywrQ0FBa0Q7QUFDbEQsMkNBQTZCO0FBQzdCLCtCQUE4RDtBQUM5RCx5Q0FBMkI7QUFJM0IsdUNBQW9EO0FBQ3BELHVEQUFtRDtBQUNuRCw2Q0FBMkM7QUFDM0MsMkRBQXlFO0FBRXpFLHFFQUF3RTtBQUN4RSxpRUFBNkY7QUFDN0YsdUVBQXFFO0FBQ3JFLHlEQUErRDtBQUMvRCxpREFBcUU7QUFDckUsK0VBSTRDO0FBQzVDLHlFQUF1RTtBQUN2RSxtREFBNkY7QUFDN0YsK0ZBQXlGO0FBQ3pGLHVGQUFrRjtBQUNsRixxREFJbUM7QUFDbkMsOENBQWtGO0FBYWxGOzs7Ozs7OztHQVFHO0FBQ0gsa0RBQWtEO0FBQ2xELFNBQWdCLG1CQUFtQixDQUNqQyxPQUFnQyxFQUNoQyxPQUF1QixFQUN2QixhQUlJLEVBQUU7SUFFTix5QkFBeUI7SUFDekIsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDMUMsSUFBQSx3Q0FBOEIsRUFBQyxhQUFhLENBQUMsQ0FBQztJQUU5QyxNQUFNLGFBQWEsR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVwRSxLQUFLLFVBQVUsS0FBSztRQUtsQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FB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MEIsRUFBRSxFQUFFO1lBQ3BDLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDbEUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUU7b0JBQ3BFLHNCQUFzQjtvQkFDdEIsSUFBQSwrQkFBZ0IsRUFDZCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE1BQU0sRUFDTjt3QkFDRSxJQUFJLENBQUMsT0FBTzs0QkFDVixJQUFBLGdDQUFVLEVBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUNuQyxDQUFDO3dCQUNELEtBQUssQ0FBQyxPQUFPOzRCQUNYLElBQUEsOEJBQVEsRUFBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ2pDLENBQUM7cUJBQ0YsRUFDRCxTQUFTLEVBQ1QsY0FBYyxDQUFDLHdCQUF3QixDQUN4QyxDQUFDO29CQUVGLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2lCQUNyRTtnQkFFRCxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtvQkFDeEQsc0VBQXNFO29CQUN0RSxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO2dCQUM1QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxrQkFBZSxJQUFBLHlCQUFhLEVBQWtELG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQnVpbGRlckNvbnRleHQsIGNyZWF0ZUJ1aWxkZXIsIHRhcmdldEZyb21UYXJnZXRTdHJpbmcgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB7XG4gIERldlNlcnZlckJ1aWxkT3V0cHV0LFxuICBXZWJwYWNrTG9nZ2luZ0NhbGxiYWNrLFxuICBydW5XZWJwYWNrRGV2U2VydmVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYnVpbGQtd2VicGFjayc7XG5pbXBvcnQgeyBqc29uLCB0YWdzIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbmNhdE1hcCwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB3ZWJwYWNrIGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHdlYnBhY2tEZXZTZXJ2ZXIgZnJvbSAnd2VicGFjay1kZXYtc2VydmVyJztcbmltcG9ydCB7IEV4ZWN1dGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpbWl6YXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBjaGVja1BvcnQgfSBmcm9tICcuLi8uLi91dGlscy9jaGVjay1wb3J0JztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yJztcbmltcG9ydCB7IEkxOG5PcHRpb25zLCBsb2FkVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi1vcHRpb25zJztcbmltcG9ydCB7IEluZGV4SHRtbFRyYW5zZm9ybSB9IGZyb20gJy4uLy4uL3V0aWxzL2luZGV4LWZpbGUvaW5kZXgtaHRtbC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgY3JlYXRlVHJhbnNsYXRpb25Mb2FkZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyBOb3JtYWxpemVkQ2FjaGVkT3B0aW9ucywgbm9ybWFsaXplQ2FjaGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplLWNhY2hlJztcbmltcG9ydCB7IGdlbmVyYXRlRW50cnlQb2ludHMgfSBmcm9tICcuLi8uLi91dGlscy9wYWNrYWdlLWNodW5rLXNvcnQnO1xuaW1wb3J0IHsgcHVyZ2VTdGFsZUJ1aWxkQ2FjaGUgfSBmcm9tICcuLi8uLi91dGlscy9wdXJnZS1jYWNoZSc7XG5pbXBvcnQgeyBhc3NlcnRDb21wYXRpYmxlQW5ndWxhclZlcnNpb24gfSBmcm9tICcuLi8uLi91dGlscy92ZXJzaW9uJztcbmltcG9ydCB7XG4gIGdlbmVyYXRlSTE4bkJyb3dzZXJXZWJwYWNrQ29uZmlnRnJvbUNvbnRleHQsXG4gIGdldEluZGV4SW5wdXRGaWxlLFxuICBnZXRJbmRleE91dHB1dEZpbGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL3dlYnBhY2stYnJvd3Nlci1jb25maWcnO1xuaW1wb3J0IHsgYWRkRXJyb3IsIGFkZFdhcm5pbmcgfSBmcm9tICcuLi8uLi91dGlscy93ZWJwYWNrLWRpYWdub3N0aWNzJztcbmltcG9ydCB7IGdldENvbW1vbkNvbmZpZywgZ2V0RGV2U2VydmVyQ29uZmlnLCBnZXRTdHlsZXNDb25maWcgfSBmcm9tICcuLi8uLi93ZWJwYWNrL2NvbmZpZ3MnO1xuaW1wb3J0IHsgSW5kZXhIdG1sV2VicGFja1BsdWdpbiB9IGZyb20gJy4uLy4uL3dlYnBhY2svcGx1Z2lucy9pbmRleC1odG1sLXdlYnBhY2stcGx1Z2luJztcbmltcG9ydCB7IFNlcnZpY2VXb3JrZXJQbHVnaW4gfSBmcm9tICcuLi8uLi93ZWJwYWNrL3BsdWdpbnMvc2VydmljZS13b3JrZXItcGx1Z2luJztcbmltcG9ydCB7XG4gIEJ1aWxkRXZlbnRTdGF0cyxcbiAgY3JlYXRlV2VicGFja0xvZ2dpbmdDYWxsYmFjayxcbiAgZ2VuZXJhdGVCdWlsZEV2ZW50U3RhdHMsXG59IGZyb20gJy4uLy4uL3dlYnBhY2svdXRpbHMvc3RhdHMnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEJyb3dzZXJCdWlsZGVyU2NoZW1hLCBPdXRwdXRIYXNoaW5nIH0gZnJvbSAnLi4vYnJvd3Nlci9zY2hlbWEnO1xuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5leHBvcnQgdHlwZSBEZXZTZXJ2ZXJCdWlsZGVyT3B0aW9ucyA9IFNjaGVtYTtcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIERpcmVjdCB1c2FnZSBvZiB0aGlzIHR5cGUgaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbmV4cG9ydCB0eXBlIERldlNlcnZlckJ1aWxkZXJPdXRwdXQgPSBEZXZTZXJ2ZXJCdWlsZE91dHB1dCAmIHtcbiAgYmFzZVVybDogc3RyaW5nO1xuICBzdGF0czogQnVpbGRFdmVudFN0YXRzO1xufTtcblxuLyoqXG4gKiBSZXVzYWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQW5ndWxhciBXZWJwYWNrIGRldmVsb3BtZW50IHNlcnZlciBidWlsZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgRGV2IFNlcnZlciBvcHRpb25zLlxuICogQHBhcmFtIGNvbnRleHQgVGhlIGJ1aWxkIGNvbnRleHQuXG4gKiBAcGFyYW0gdHJhbnNmb3JtcyBBIG1hcCBvZiB0cmFuc2Zvcm1zIHRoYXQgY2FuIGJlIHVzZWQgdG8gaG9vayBpbnRvIHNvbWUgbG9naWMgKHN1Y2ggYXNcbiAqICAgICB0cmFuc2Zvcm1pbmcgd2VicGFjayBjb25maWd1cmF0aW9uIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHdlYnBhY2spLlxuICpcbiAqIEBleHBlcmltZW50YWwgRGlyZWN0IHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uXG5leHBvcnQgZnVuY3Rpb24gc2VydmVXZWJwYWNrQnJvd3NlcihcbiAgb3B0aW9uczogRGV2U2VydmVyQnVpbGRlck9wdGlvbnMsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB0cmFuc2Zvcm1zOiB7XG4gICAgd2VicGFja0NvbmZpZ3VyYXRpb24/OiBFeGVjdXRpb25UcmFuc2Zvcm1lcjx3ZWJwYWNrLkNvbmZpZ3VyYXRpb24+O1xuICAgIGxvZ2dpbmc/OiBXZWJwYWNrTG9nZ2luZ0NhbGxiYWNrO1xuICAgIGluZGV4SHRtbD86IEluZGV4SHRtbFRyYW5zZm9ybTtcbiAgfSA9IHt9LFxuKTogT2JzZXJ2YWJsZTxEZXZTZXJ2ZXJCdWlsZGVyT3V0cHV0PiB7XG4gIC8vIENoZWNrIEFuZ3VsYXIgdmVyc2lvbi5cbiAgY29uc3QgeyBsb2dnZXIsIHdvcmtzcGFjZVJvb3QgfSA9IGNvbnRleHQ7XG4gIGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbih3b3Jrc3BhY2VSb290KTtcblxuICBjb25zdCBicm93c2VyVGFyZ2V0ID0gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhvcHRpb25zLmJyb3dzZXJUYXJnZXQpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKCk6IFByb21pc2U8e1xuICAgIGJyb3dzZXJPcHRpb25zOiBCcm93c2VyQnVpbGRlclNjaGVtYTtcbiAgICB3ZWJwYWNrQ29uZmlnOiB3ZWJwYWNrLkNvbmZpZ3VyYXRpb247XG4gICAgcHJvamVjdFJvb3Q6IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHByb2plY3ROYW1lID0gY29udGV4dC50YXJnZXQ/LnByb2plY3Q7XG4gICAgaWYgKCFwcm9qZWN0TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYnVpbGRlciByZXF1aXJlcyBhIHRhcmdldC4nKTtcbiAgICB9XG5cbiAgICAvLyBQdXJnZSBvbGQgYnVpbGQgZGlzayBjYWNoZS5cbiAgICBhd2FpdCBwdXJnZVN0YWxlQnVpbGRDYWNoZShjb250ZXh0KTtcblxuICAgIG9wdGlvbnMucG9ydCA9IGF3YWl0IGNoZWNrUG9ydChvcHRpb25zLnBvcnQgPz8gNDIwMCwgb3B0aW9ucy5ob3N0IHx8ICdsb2NhbGhvc3QnKTtcblxuICAgIGlmIChvcHRpb25zLmhtcikge1xuICAgICAgbG9nZ2VyLndhcm4odGFncy5zdHJpcEluZGVudHNgTk9USUNFOiBIb3QgTW9kdWxlIFJlcGxhY2VtZW50IChITVIpIGlzIGVuYWJsZWQgZm9yIHRoZSBkZXYgc2VydmVyLlxuICAgICAgU2VlIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvZ3VpZGVzL2hvdC1tb2R1bGUtcmVwbGFjZW1lbnQgZm9yIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aCBITVIgZm9yIFdlYnBhY2suYCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIW9wdGlvbnMuZGlzYWJsZUhvc3RDaGVjayAmJlxuICAgICAgb3B0aW9ucy5ob3N0ICYmXG4gICAgICAhL14xMjdcXC5cXGQrXFwuXFxkK1xcLlxcZCsvZy50ZXN0KG9wdGlvbnMuaG9zdCkgJiZcbiAgICAgIG9wdGlvbnMuaG9zdCAhPT0gJ2xvY2FsaG9zdCdcbiAgICApIHtcbiAgICAgIGxvZ2dlci53YXJuKHRhZ3Muc3RyaXBJbmRlbnRgXG4gICAgICAgIFdhcm5pbmc6IFRoaXMgaXMgYSBzaW1wbGUgc2VydmVyIGZvciB1c2UgaW4gdGVzdGluZyBvciBkZWJ1Z2dpbmcgQW5ndWxhciBhcHBsaWNhdGlvbnNcbiAgICAgICAgbG9jYWxseS4gSXQgaGFzbid0IGJlZW4gcmV2aWV3ZWQgZm9yIHNlY3VyaXR5IGlzc3Vlcy5cblxuICAgICAgICBCaW5kaW5nIHRoaXMgc2VydmVyIHRvIGFuIG9wZW4gY29ubmVjdGlvbiBjYW4gcmVzdWx0IGluIGNvbXByb21pc2luZyB5b3VyIGFwcGxpY2F0aW9uIG9yXG4gICAgICAgIGNvbXB1dGVyLiBVc2luZyBhIGRpZmZlcmVudCBob3N0IHRoYW4gdGhlIG9uZSBwYXNzZWQgdG8gdGhlIFwiLS1ob3N0XCIgZmxhZyBtaWdodCByZXN1bHQgaW5cbiAgICAgICAgd2Vic29ja2V0IGNvbm5lY3Rpb24gaXNzdWVzLiBZb3UgbWlnaHQgbmVlZCB0byB1c2UgXCItLWRpc2FibGUtaG9zdC1jaGVja1wiIGlmIHRoYXQncyB0aGVcbiAgICAgICAgY2FzZS5cbiAgICAgIGApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2FibGVIb3N0Q2hlY2spIHtcbiAgICAgIGxvZ2dlci53YXJuKHRhZ3Mub25lTGluZWBcbiAgICAgICAgV2FybmluZzogUnVubmluZyBhIHNlcnZlciB3aXRoIC0tZGlzYWJsZS1ob3N0LWNoZWNrIGlzIGEgc2VjdXJpdHkgcmlzay5cbiAgICAgICAgU2VlIGh0dHBzOi8vbWVkaXVtLmNvbS93ZWJwYWNrL3dlYnBhY2stZGV2LXNlcnZlci1taWRkbGV3YXJlLXNlY3VyaXR5LWlzc3Vlcy0xNDg5ZDk1MDg3NGFcbiAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICBgKTtcbiAgICB9XG4gICAgLy8gR2V0IHRoZSBicm93c2VyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgdGFyZ2V0IG5hbWUuXG4gICAgY29uc3QgcmF3QnJvd3Nlck9wdGlvbnMgPSAoYXdhaXQgY29udGV4dC5nZXRUYXJnZXRPcHRpb25zKGJyb3dzZXJUYXJnZXQpKSBhcyBqc29uLkpzb25PYmplY3QgJlxuICAgICAgQnJvd3NlckJ1aWxkZXJTY2hlbWE7XG5cbiAgICBpZiAocmF3QnJvd3Nlck9wdGlvbnMub3V0cHV0SGFzaGluZyAmJiByYXdCcm93c2VyT3B0aW9ucy5vdXRwdXRIYXNoaW5nICE9PSBPdXRwdXRIYXNoaW5nLk5vbmUpIHtcbiAgICAgIC8vIERpc2FibGUgb3V0cHV0IGhhc2hpbmcgZm9yIGRldiBidWlsZCBhcyB0aGlzIGNhbiBjYXVzZSBtZW1vcnkgbGVha3NcbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay1kZXYtc2VydmVyL2lzc3Vlcy8zNzcjaXNzdWVjb21tZW50LTI0MTI1ODQwNVxuICAgICAgcmF3QnJvd3Nlck9wdGlvbnMub3V0cHV0SGFzaGluZyA9IE91dHB1dEhhc2hpbmcuTm9uZTtcbiAgICAgIGxvZ2dlci53YXJuKGBXYXJuaW5nOiAnb3V0cHV0SGFzaGluZycgb3B0aW9uIGlzIGRpc2FibGVkIHdoZW4gdXNpbmcgdGhlIGRldi1zZXJ2ZXIuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBjb250ZXh0LmdldFByb2plY3RNZXRhZGF0YShwcm9qZWN0TmFtZSk7XG4gICAgY29uc3QgY2FjaGVPcHRpb25zID0gbm9ybWFsaXplQ2FjaGVPcHRpb25zKG1ldGFkYXRhLCBjb250ZXh0LndvcmtzcGFjZVJvb3QpO1xuXG4gICAgY29uc3QgYnJvd3Nlck5hbWUgPSBhd2FpdCBjb250ZXh0LmdldEJ1aWxkZXJOYW1lRm9yVGFyZ2V0KGJyb3dzZXJUYXJnZXQpO1xuXG4gICAgLy8gSXNzdWUgYSB3YXJuaW5nIHRoYXQgdGhlIGRldi1zZXJ2ZXIgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgdGhlIGV4cGVyaW1lbnRhbCBlc2J1aWxkLVxuICAgIC8vIGJhc2VkIGJ1aWxkZXIgYW5kIHdpbGwgdXNlIFdlYnBhY2suXG4gICAgaWYgKGJyb3dzZXJOYW1lID09PSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6YnJvd3Nlci1lc2J1aWxkJykge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICdXQVJOSU5HOiBUaGUgZXhwZXJpbWVudGFsIGVzYnVpbGQtYmFzZWQgYnVpbGRlciBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCAnICtcbiAgICAgICAgICAnYnkgdGhlIGRldi1zZXJ2ZXIuIFRoZSBzdGFibGUgV2VicGFjay1iYXNlZCBidWlsZGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJPcHRpb25zID0gKGF3YWl0IGNvbnRleHQudmFsaWRhdGVPcHRpb25zKFxuICAgICAge1xuICAgICAgICAuLi5yYXdCcm93c2VyT3B0aW9ucyxcbiAgICAgICAgd2F0Y2g6IG9wdGlvbnMud2F0Y2gsXG4gICAgICAgIHZlcmJvc2U6IG9wdGlvbnMudmVyYm9zZSxcbiAgICAgICAgLy8gSW4gZGV2IHNlcnZlciB3ZSBzaG91bGQgbm90IGhhdmUgYnVkZ2V0cyBiZWNhdXNlIG9mIGV4dHJhIGxpYnMgc3VjaCBhcyBzb2Nrcy1qc1xuICAgICAgICBidWRnZXRzOiB1bmRlZmluZWQsXG4gICAgICB9IGFzIGpzb24uSnNvbk9iamVjdCAmIEJyb3dzZXJCdWlsZGVyU2NoZW1hLFxuICAgICAgYnJvd3Nlck5hbWUsXG4gICAgKSkgYXMganNvbi5Kc29uT2JqZWN0ICYgQnJvd3NlckJ1aWxkZXJTY2hlbWE7XG5cbiAgICBjb25zdCB7IHN0eWxlcywgc2NyaXB0cyB9ID0gbm9ybWFsaXplT3B0aW1pemF0aW9uKGJyb3dzZXJPcHRpb25zLm9wdGltaXphdGlvbik7XG4gICAgaWYgKHNjcmlwdHMgfHwgc3R5bGVzLm1pbmlmeSkge1xuICAgICAgbG9nZ2VyLmVycm9yKHRhZ3Muc3RyaXBJbmRlbnRzYFxuICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAgIFRoaXMgaXMgYSBzaW1wbGUgc2VydmVyIGZvciB1c2UgaW4gdGVzdGluZyBvciBkZWJ1Z2dpbmcgQW5ndWxhciBhcHBsaWNhdGlvbnMgbG9jYWxseS5cbiAgICAgICAgSXQgaGFzbid0IGJlZW4gcmV2aWV3ZWQgZm9yIHNlY3VyaXR5IGlzc3Vlcy5cblxuICAgICAgICBET04nVCBVU0UgSVQgRk9SIFBST0RVQ1RJT04hXG4gICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgIGApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY29uZmlnLCBwcm9qZWN0Um9vdCwgaTE4biB9ID0gYXdhaXQgZ2VuZXJhdGVJMThuQnJvd3NlcldlYnBhY2tDb25maWdGcm9tQ29udGV4dChcbiAgICAgIGJyb3dzZXJPcHRpb25zLFxuICAgICAgY29udGV4dCxcbiAgICAgICh3Y28pID0+IFtnZXREZXZTZXJ2ZXJDb25maWcod2NvKSwgZ2V0Q29tbW9uQ29uZmlnKHdjbyksIGdldFN0eWxlc0NvbmZpZyh3Y28pXSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcblxuICAgIGlmICghY29uZmlnLmRldlNlcnZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJwYWNrIERldiBTZXJ2ZXIgY29uZmlndXJhdGlvbiB3YXMgbm90IHNldC4nKTtcbiAgICB9XG5cbiAgICBsZXQgbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGkxOG4uc2hvdWxkSW5saW5lKSB7XG4gICAgICAvLyBEZXYtc2VydmVyIG9ubHkgc3VwcG9ydHMgb25lIGxvY2FsZVxuICAgICAgbG9jYWxlID0gWy4uLmkxOG4uaW5saW5lTG9jYWxlc11bMF07XG4gICAgfSBlbHNlIGlmIChpMThuLmhhc0RlZmluZWRTb3VyY2VMb2NhbGUpIHtcbiAgICAgIC8vIHVzZSBzb3VyY2UgbG9jYWxlIGlmIG5vdCBsb2NhbGl6aW5nXG4gICAgICBsb2NhbGUgPSBpMThuLnNvdXJjZUxvY2FsZTtcbiAgICB9XG5cbiAgICBsZXQgd2VicGFja0NvbmZpZyA9IGNvbmZpZztcblxuICAgIC8vIElmIGEgbG9jYWxlIGlzIGRlZmluZWQsIHNldHVwIGxvY2FsaXphdGlvblxuICAgIGlmIChsb2NhbGUpIHtcbiAgICAgIGlmIChpMThuLmlubGluZUxvY2FsZXMuc2l6ZSA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdUaGUgZGV2ZWxvcG1lbnQgc2VydmVyIG9ubHkgc3VwcG9ydHMgbG9jYWxpemluZyBhIHNpbmdsZSBsb2NhbGUgcGVyIGJ1aWxkLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHNldHVwTG9jYWxpemUobG9jYWxlLCBpMThuLCBicm93c2VyT3B0aW9ucywgd2VicGFja0NvbmZpZywgY2FjaGVPcHRpb25zLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNmb3Jtcy53ZWJwYWNrQ29uZmlndXJhdGlvbikge1xuICAgICAgd2VicGFja0NvbmZpZyA9IGF3YWl0IHRyYW5zZm9ybXMud2VicGFja0NvbmZpZ3VyYXRpb24od2VicGFja0NvbmZpZyk7XG4gICAgfVxuXG4gICAgd2VicGFja0NvbmZpZy5wbHVnaW5zID8/PSBbXTtcblxuICAgIGlmIChicm93c2VyT3B0aW9ucy5pbmRleCkge1xuICAgICAgY29uc3QgeyBzY3JpcHRzID0gW10sIHN0eWxlcyA9IFtdLCBiYXNlSHJlZiB9ID0gYnJvd3Nlck9wdGlvbnM7XG4gICAgICBjb25zdCBlbnRyeXBvaW50cyA9IGdlbmVyYXRlRW50cnlQb2ludHMoe1xuICAgICAgICBzY3JpcHRzLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIC8vIFRoZSBiZWxvdyBpcyBuZWVkZWQgYXMgb3RoZXJ3aXNlIEhNUiBmb3IgQ1NTIHdpbGwgYnJlYWsuXG4gICAgICAgIC8vIHN0eWxlcy5qcyBhbmQgcnVudGltZS5qcyBuZWVkcyB0byBiZSBsb2FkZWQgYXMgYSBub24tbW9kdWxlIHNjcmlwdHMgYXMgb3RoZXJ3aXNlIGBkb2N1bWVudC5jdXJyZW50U2NyaXB0YCB3aWxsIGJlIG51bGwuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vYmxvYi85MDQ0NWRkMWQ4MWRhMGMxMGI5YjBlOGExN2I0MTdkMDY1MTgxNmI4L3NyYy9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanMjTDM5XG4gICAgICAgIGlzSE1SRW5hYmxlZDogISF3ZWJwYWNrQ29uZmlnLmRldlNlcnZlcj8uaG90LFxuICAgICAgfSk7XG5cbiAgICAgIHdlYnBhY2tDb25maWcucGx1Z2lucy5wdXNoKFxuICAgICAgICBuZXcgSW5kZXhIdG1sV2VicGFja1BsdWdpbih7XG4gICAgICAgICAgaW5kZXhQYXRoOiBwYXRoLnJlc29sdmUod29ya3NwYWNlUm9vdCwgZ2V0SW5kZXhJbnB1dEZpbGUoYnJvd3Nlck9wdGlvbnMuaW5kZXgpKSxcbiAgICAgICAgICBvdXRwdXRQYXRoOiBnZXRJbmRleE91dHB1dEZpbGUoYnJvd3Nlck9wdGlvbnMuaW5kZXgpLFxuICAgICAgICAgIGJhc2VIcmVmLFxuICAgICAgICAgIGVudHJ5cG9pbnRzLFxuICAgICAgICAgIGRlcGxveVVybDogYnJvd3Nlck9wdGlvbnMuZGVwbG95VXJsLFxuICAgICAgICAgIHNyaTogYnJvd3Nlck9wdGlvbnMuc3VicmVzb3VyY2VJbnRlZ3JpdHksXG4gICAgICAgICAgY2FjaGU6IGNhY2hlT3B0aW9ucyxcbiAgICAgICAgICBwb3N0VHJhbnNmb3JtOiB0cmFuc2Zvcm1zLmluZGV4SHRtbCxcbiAgICAgICAgICBvcHRpbWl6YXRpb246IG5vcm1hbGl6ZU9wdGltaXphdGlvbihicm93c2VyT3B0aW9ucy5vcHRpbWl6YXRpb24pLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiBicm93c2VyT3B0aW9ucy5jcm9zc09yaWdpbixcbiAgICAgICAgICBsYW5nOiBsb2NhbGUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYnJvd3Nlck9wdGlvbnMuc2VydmljZVdvcmtlcikge1xuICAgICAgd2VicGFja0NvbmZpZy5wbHVnaW5zLnB1c2goXG4gICAgICAgIG5ldyBTZXJ2aWNlV29ya2VyUGx1Z2luKHtcbiAgICAgICAgICBiYXNlSHJlZjogYnJvd3Nlck9wdGlvbnMuYmFzZUhyZWYsXG4gICAgICAgICAgcm9vdDogY29udGV4dC53b3Jrc3BhY2VSb290LFxuICAgICAgICAgIHByb2plY3RSb290LFxuICAgICAgICAgIG5nc3dDb25maWdQYXRoOiBicm93c2VyT3B0aW9ucy5uZ3N3Q29uZmlnUGF0aCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBicm93c2VyT3B0aW9ucyxcbiAgICAgIHdlYnBhY2tDb25maWcsXG4gICAgICBwcm9qZWN0Um9vdCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZyb20oc2V0dXAoKSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKHsgYnJvd3Nlck9wdGlvbnMsIHdlYnBhY2tDb25maWcgfSkgPT4ge1xuICAgICAgcmV0dXJuIHJ1bldlYnBhY2tEZXZTZXJ2ZXIod2VicGFja0NvbmZpZywgY29udGV4dCwge1xuICAgICAgICBsb2dnaW5nOiB0cmFuc2Zvcm1zLmxvZ2dpbmcgfHwgY3JlYXRlV2VicGFja0xvZ2dpbmdDYWxsYmFjayhicm93c2VyT3B0aW9ucywgbG9nZ2VyKSxcbiAgICAgICAgd2VicGFja0ZhY3Rvcnk6IHJlcXVpcmUoJ3dlYnBhY2snKSBhcyB0eXBlb2Ygd2VicGFjayxcbiAgICAgICAgd2VicGFja0RldlNlcnZlckZhY3Rvcnk6IHJlcXVpcmUoJ3dlYnBhY2stZGV2LXNlcnZlcicpIGFzIHR5cGVvZiB3ZWJwYWNrRGV2U2VydmVyLFxuICAgICAgfSkucGlwZShcbiAgICAgICAgY29uY2F0TWFwKGFzeW5jIChidWlsZEV2ZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdlYnBhY2tSYXdTdGF0cyA9IGJ1aWxkRXZlbnQud2VicGFja1N0YXRzO1xuICAgICAgICAgIGlmICghd2VicGFja1Jhd1N0YXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYnBhY2sgc3RhdHMgYnVpbGQgcmVzdWx0IGlzIHJlcXVpcmVkLicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlc29sdmUgc2VydmUgYWRkcmVzcy5cbiAgICAgICAgICBjb25zdCBwdWJsaWNQYXRoID0gd2VicGFja0NvbmZpZy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmU/LnB1YmxpY1BhdGg7XG5cbiAgICAgICAgICBjb25zdCBzZXJ2ZXJBZGRyZXNzID0gdXJsLmZvcm1hdCh7XG4gICAgICAgICAgICBwcm90b2NvbDogb3B0aW9ucy5zc2wgPyAnaHR0cHMnIDogJ2h0dHAnLFxuICAgICAgICAgICAgaG9zdG5hbWU6IG9wdGlvbnMuaG9zdCA9PT0gJzAuMC4wLjAnID8gJ2xvY2FsaG9zdCcgOiBvcHRpb25zLmhvc3QsXG4gICAgICAgICAgICBwb3J0OiBidWlsZEV2ZW50LnBvcnQsXG4gICAgICAgICAgICBwYXRobmFtZTogdHlwZW9mIHB1YmxpY1BhdGggPT09ICdzdHJpbmcnID8gcHVibGljUGF0aCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICB0YWdzLm9uZUxpbmVgXG4gICAgICAgICAgICAgICoqXG4gICAgICAgICAgICAgIEFuZ3VsYXIgTGl2ZSBEZXZlbG9wbWVudCBTZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uICR7b3B0aW9ucy5ob3N0fToke2J1aWxkRXZlbnQucG9ydH0sXG4gICAgICAgICAgICAgIG9wZW4geW91ciBicm93c2VyIG9uICR7c2VydmVyQWRkcmVzc31cbiAgICAgICAgICAgICAgKipcbiAgICAgICAgICAgIGAgK1xuICAgICAgICAgICAgICAgICdcXG4nLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub3Blbikge1xuICAgICAgICAgICAgICBjb25zdCBvcGVuID0gKGF3YWl0IGltcG9ydCgnb3BlbicpKS5kZWZhdWx0O1xuICAgICAgICAgICAgICBhd2FpdCBvcGVuKHNlcnZlckFkZHJlc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChidWlsZEV2ZW50LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBcXG4ke2NvbG9ycy5ncmVlbkJyaWdodChjb2xvcnMuc3ltYm9scy5jaGVjayl9IENvbXBpbGVkIHN1Y2Nlc3NmdWxseS5gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFxcbiR7Y29sb3JzLnJlZEJyaWdodChjb2xvcnMuc3ltYm9scy5jcm9zcyl9IEZhaWxlZCB0byBjb21waWxlLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5idWlsZEV2ZW50LFxuICAgICAgICAgICAgYmFzZVVybDogc2VydmVyQWRkcmVzcyxcbiAgICAgICAgICAgIHN0YXRzOiBnZW5lcmF0ZUJ1aWxkRXZlbnRTdGF0cyh3ZWJwYWNrUmF3U3RhdHMsIGJyb3dzZXJPcHRpb25zKSxcbiAgICAgICAgICB9IGFzIERldlNlcnZlckJ1aWxkZXJPdXRwdXQ7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0dXBMb2NhbGl6ZShcbiAgbG9jYWxlOiBzdHJpbmcsXG4gIGkxOG46IEkxOG5PcHRpb25zLFxuICBicm93c2VyT3B0aW9uczogQnJvd3NlckJ1aWxkZXJTY2hlbWEsXG4gIHdlYnBhY2tDb25maWc6IHdlYnBhY2suQ29uZmlndXJhdGlvbixcbiAgY2FjaGVPcHRpb25zOiBOb3JtYWxpemVkQ2FjaGVkT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4pIHtcbiAgY29uc3QgbG9jYWxlRGVzY3JpcHRpb24gPSBpMThuLmxvY2FsZXNbbG9jYWxlXTtcblxuICAvLyBNb2RpZnkgbWFpbiBlbnRyeXBvaW50IHRvIGluY2x1ZGUgbG9jYWxlIGRhdGFcbiAgaWYgKFxuICAgIGxvY2FsZURlc2NyaXB0aW9uPy5kYXRhUGF0aCAmJlxuICAgIHR5cGVvZiB3ZWJwYWNrQ29uZmlnLmVudHJ5ID09PSAnb2JqZWN0JyAmJlxuICAgICFBcnJheS5pc0FycmF5KHdlYnBhY2tDb25maWcuZW50cnkpICYmXG4gICAgd2VicGFja0NvbmZpZy5lbnRyeVsnbWFpbiddXG4gICkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHdlYnBhY2tDb25maWcuZW50cnlbJ21haW4nXSkpIHtcbiAgICAgIHdlYnBhY2tDb25maWcuZW50cnlbJ21haW4nXS51bnNoaWZ0KGxvY2FsZURlc2NyaXB0aW9uLmRhdGFQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2VicGFja0NvbmZpZy5lbnRyeVsnbWFpbiddID0gW1xuICAgICAgICBsb2NhbGVEZXNjcmlwdGlvbi5kYXRhUGF0aCxcbiAgICAgICAgd2VicGFja0NvbmZpZy5lbnRyeVsnbWFpbiddIGFzIHN0cmluZyxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgbGV0IG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yID0gYnJvd3Nlck9wdGlvbnMuaTE4bk1pc3NpbmdUcmFuc2xhdGlvbiB8fCAnaWdub3JlJztcbiAgbGV0IHRyYW5zbGF0aW9uID0gbG9jYWxlRGVzY3JpcHRpb24/LnRyYW5zbGF0aW9uIHx8IHt9O1xuXG4gIGlmIChsb2NhbGUgPT09IGkxOG4uc291cmNlTG9jYWxlKSB7XG4gICAgbWlzc2luZ1RyYW5zbGF0aW9uQmVoYXZpb3IgPSAnaWdub3JlJztcbiAgICB0cmFuc2xhdGlvbiA9IHt9O1xuICB9XG5cbiAgY29uc3QgaTE4bkxvYWRlck9wdGlvbnMgPSB7XG4gICAgbG9jYWxlLFxuICAgIG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yLFxuICAgIHRyYW5zbGF0aW9uOiBpMThuLnNob3VsZElubGluZSA/IHRyYW5zbGF0aW9uIDogdW5kZWZpbmVkLFxuICAgIHRyYW5zbGF0aW9uRmlsZXM6IGxvY2FsZURlc2NyaXB0aW9uPy5maWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICBwYXRoLnJlc29sdmUoY29udGV4dC53b3Jrc3BhY2VSb290LCBmaWxlLnBhdGgpLFxuICAgICksXG4gIH07XG5cbiAgY29uc3QgaTE4blJ1bGU6IHdlYnBhY2suUnVsZVNldFJ1bGUgPSB7XG4gICAgdGVzdDogL1xcLltjbV0/W3RqXXN4PyQvLFxuICAgIGVuZm9yY2U6ICdwb3N0JyxcbiAgICB1c2U6IFtcbiAgICAgIHtcbiAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoJy4uLy4uL2JhYmVsL3dlYnBhY2stbG9hZGVyJyksXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBjYWNoZURpcmVjdG9yeTpcbiAgICAgICAgICAgIChjYWNoZU9wdGlvbnMuZW5hYmxlZCAmJiBwYXRoLmpvaW4oY2FjaGVPcHRpb25zLnBhdGgsICdiYWJlbC1kZXYtc2VydmVyLWkxOG4nKSkgfHxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGNhY2hlSWRlbnRpZmllcjogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25JbnRlZ3JpdHk6IGxvY2FsZURlc2NyaXB0aW9uPy5maWxlcy5tYXAoKGZpbGUpID0+IGZpbGUuaW50ZWdyaXR5KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpMThuOiBpMThuTG9hZGVyT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICAvLyBHZXQgdGhlIHJ1bGVzIGFuZCBlbnN1cmUgdGhlIFdlYnBhY2sgY29uZmlndXJhdGlvbiBpcyBzZXR1cCBwcm9wZXJseVxuICBjb25zdCBydWxlcyA9IHdlYnBhY2tDb25maWcubW9kdWxlPy5ydWxlcyB8fCBbXTtcbiAgaWYgKCF3ZWJwYWNrQ29uZmlnLm1vZHVsZSkge1xuICAgIHdlYnBhY2tDb25maWcubW9kdWxlID0geyBydWxlcyB9O1xuICB9IGVsc2UgaWYgKCF3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcykge1xuICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzID0gcnVsZXM7XG4gIH1cblxuICBydWxlcy5wdXNoKGkxOG5SdWxlKTtcblxuICAvLyBBZGQgYSBwbHVnaW4gdG8gcmVsb2FkIHRyYW5zbGF0aW9uIGZpbGVzIG9uIHJlYnVpbGRzXG4gIGNvbnN0IGxvYWRlciA9IGF3YWl0IGNyZWF0ZVRyYW5zbGF0aW9uTG9hZGVyKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gIHdlYnBhY2tDb25maWcucGx1Z2lucyEucHVzaCh7XG4gICAgYXBwbHk6IChjb21waWxlcjogd2VicGFjay5Db21waWxlcikgPT4ge1xuICAgICAgY29tcGlsZXIuaG9va3MudGhpc0NvbXBpbGF0aW9uLnRhcCgnYnVpbGQtYW5ndWxhcicsIChjb21waWxhdGlvbikgPT4ge1xuICAgICAgICBpZiAoaTE4bi5zaG91bGRJbmxpbmUgJiYgaTE4bkxvYWRlck9wdGlvbnMudHJhbnNsYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIFJlbG9hZCB0cmFuc2xhdGlvbnNcbiAgICAgICAgICBsb2FkVHJhbnNsYXRpb25zKFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgbG9jYWxlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb250ZXh0LndvcmtzcGFjZVJvb3QsXG4gICAgICAgICAgICBsb2FkZXIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHdhcm4obWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGFkZFdhcm5pbmcoY29tcGlsYXRpb24sIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcihtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgYWRkRXJyb3IoY29tcGlsYXRpb24sIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJyb3dzZXJPcHRpb25zLmkxOG5EdXBsaWNhdGVUcmFuc2xhdGlvbixcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaTE4bkxvYWRlck9wdGlvbnMudHJhbnNsYXRpb24gPSBsb2NhbGVEZXNjcmlwdGlvbi50cmFuc2xhdGlvbiA/PyB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbXBpbGF0aW9uLmhvb2tzLmZpbmlzaE1vZHVsZXMudGFwKCdidWlsZC1hbmd1bGFyJywgKCkgPT4ge1xuICAgICAgICAgIC8vIEFmdGVyIGxvYWRlcnMgYXJlIGZpbmlzaGVkLCBjbGVhciBvdXQgdGhlIG5vdyB1bm5lZWRlZCB0cmFuc2xhdGlvbnNcbiAgICAgICAgICBpMThuTG9hZGVyT3B0aW9ucy50cmFuc2xhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcjxEZXZTZXJ2ZXJCdWlsZGVyT3B0aW9ucywgRGV2U2VydmVyQnVpbGRlck91dHB1dD4oc2VydmVXZWJwYWNrQnJvd3Nlcik7XG4iXX0=
|
|
@@ -38,6 +38,7 @@ const architect_1 = require("@angular-devkit/architect");
|
|
|
38
38
|
const build_webpack_1 = require("@angular-devkit/build-webpack");
|
|
39
39
|
const fs = __importStar(require("fs"));
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
|
+
const rxjs_1 = require("rxjs");
|
|
41
42
|
const webpack_1 = __importDefault(require("webpack"));
|
|
42
43
|
const i18n_options_1 = require("../../utils/i18n-options");
|
|
43
44
|
const load_esm_1 = require("../../utils/load-esm");
|
|
@@ -110,7 +111,7 @@ function normalizeFormatOption(options) {
|
|
|
110
111
|
break;
|
|
111
112
|
}
|
|
112
113
|
// Default format is xliff1
|
|
113
|
-
return format
|
|
114
|
+
return format ?? schema_2.Format.Xlf;
|
|
114
115
|
}
|
|
115
116
|
class NoEmitPlugin {
|
|
116
117
|
apply(compiler) {
|
|
@@ -121,7 +122,6 @@ class NoEmitPlugin {
|
|
|
121
122
|
* @experimental Direct usage of this function is considered experimental.
|
|
122
123
|
*/
|
|
123
124
|
async function execute(options, context, transforms) {
|
|
124
|
-
var _a;
|
|
125
125
|
// Check Angular version.
|
|
126
126
|
(0, version_1.assertCompatibleAngularVersion)(context.workspaceRoot);
|
|
127
127
|
// Purge old build disk cache.
|
|
@@ -142,7 +142,7 @@ async function execute(options, context, transforms) {
|
|
|
142
142
|
try {
|
|
143
143
|
require.resolve('@angular/localize');
|
|
144
144
|
}
|
|
145
|
-
catch
|
|
145
|
+
catch {
|
|
146
146
|
return {
|
|
147
147
|
success: false,
|
|
148
148
|
error: `i18n extraction requires the '@angular/localize' package.`,
|
|
@@ -176,9 +176,8 @@ async function execute(options, context, transforms) {
|
|
|
176
176
|
allowedCommonJsDependencies: undefined,
|
|
177
177
|
};
|
|
178
178
|
const { config, projectRoot } = await (0, webpack_browser_config_1.generateBrowserWebpackConfigFromContext)(builderOptions, context, (wco) => {
|
|
179
|
-
var _a;
|
|
180
179
|
// Default value for legacy message ids is currently true
|
|
181
|
-
useLegacyIds =
|
|
180
|
+
useLegacyIds = wco.tsConfig.options.enableI18nLegacyMessageIdFormat ?? true;
|
|
182
181
|
const partials = [
|
|
183
182
|
{ plugins: [new NoEmitPlugin()] },
|
|
184
183
|
(0, configs_1.getCommonConfig)(wco),
|
|
@@ -215,10 +214,10 @@ async function execute(options, context, transforms) {
|
|
|
215
214
|
// All the localize usages are setup to first try the ESM entry point then fallback to the deep imports.
|
|
216
215
|
// This provides interim compatibility while the framework is transitioned to bundled ESM packages.
|
|
217
216
|
const localizeToolsModule = await (0, load_esm_1.loadEsmModule)('@angular/localize/tools');
|
|
218
|
-
const webpackResult = await (0, build_webpack_1.runWebpack)((await
|
|
217
|
+
const webpackResult = await (0, rxjs_1.lastValueFrom)((0, build_webpack_1.runWebpack)((await transforms?.webpackConfiguration?.(config)) || config, context, {
|
|
219
218
|
logging: (0, stats_1.createWebpackLoggingCallback)(builderOptions, context.logger),
|
|
220
219
|
webpackFactory: webpack_1.default,
|
|
221
|
-
})
|
|
220
|
+
}));
|
|
222
221
|
// Set the outputPath to the extraction output location for downstream consumers
|
|
223
222
|
webpackResult.outputPath = outFile;
|
|
224
223
|
// Complete if Webpack build failed
|
|
@@ -256,4 +255,4 @@ async function execute(options, context, transforms) {
|
|
|
256
255
|
}
|
|
257
256
|
exports.execute = execute;
|
|
258
257
|
exports.default = (0, architect_1.createBuilder)(execute);
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9leHRyYWN0LWkxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCx5REFBa0c7QUFDbEcsaUVBQXdFO0FBRXhFLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0Isc0RBQWlEO0FBRWpELDJEQUE2RDtBQUM3RCxtREFBcUQ7QUFDckQseURBQStEO0FBQy9ELGlEQUFxRTtBQUNyRSwrRUFBNkY7QUFDN0YsbURBQXdEO0FBQ3hELHFEQUF5RTtBQUN6RSw4Q0FBbUY7QUFDbkYscUNBQTBDO0FBSTFDLFNBQVMsY0FBYyxDQUFDLE1BQTBCO0lBQ2hELFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxLQUFLO1lBQ1IsT0FBTyxjQUFjLENBQUM7UUFDeEIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLFFBQVE7WUFDWCxPQUFPLGNBQWMsQ0FBQztRQUN4QixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLEtBQUssS0FBSztZQUNSLE9BQU8sY0FBYyxDQUFDO1FBQ3hCO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsTUFBTSxHQUFHLENBQUMsQ0FBQztLQUNyRDtBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUMxQixtQkFBNkQsRUFDN0QsTUFBYyxFQUNkLFlBQW9CLEVBQ3BCLFFBQWdCLEVBQ2hCLFlBQXFCLEVBQ3JCLFdBQXdCO0lBRXhCLE1BQU0sRUFDSix3QkFBd0IsRUFDeEIsa0NB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TyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyDJtVBhcnNlZE1lc3NhZ2UgYXMgTG9jYWxpemVNZXNzYWdlIH0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHR5cGUgeyBEaWFnbm9zdGljcyB9IGZyb20gJ0Bhbmd1bGFyL2xvY2FsaXplL3Rvb2xzJztcbmltcG9ydCB7IEJ1aWxkZXJDb250ZXh0LCBjcmVhdGVCdWlsZGVyLCB0YXJnZXRGcm9tVGFyZ2V0U3RyaW5nIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgeyBCdWlsZFJlc3VsdCwgcnVuV2VicGFjayB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC13ZWJwYWNrJztcbmltcG9ydCB7IEpzb25PYmplY3QgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHdlYnBhY2ssIHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgRXhlY3V0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGNyZWF0ZUkxOG5PcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi1vcHRpb25zJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkLWVzbSc7XG5pbXBvcnQgeyBwdXJnZVN0YWxlQnVpbGRDYWNoZSB9IGZyb20gJy4uLy4uL3V0aWxzL3B1cmdlLWNhY2hlJztcbmltcG9ydCB7IGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24nO1xuaW1wb3J0IHsgZ2VuZXJhdGVCcm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvd2VicGFjay1icm93c2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBnZXRDb21tb25Db25maWcgfSBmcm9tICcuLi8uLi93ZWJwYWNrL2NvbmZpZ3MnO1xuaW1wb3J0IHsgY3JlYXRlV2VicGFja0xvZ2dpbmdDYWxsYmFjayB9IGZyb20gJy4uLy4uL3dlYnBhY2svdXRpbHMvc3RhdHMnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEJyb3dzZXJCdWlsZGVyT3B0aW9ucywgT3V0cHV0SGFzaGluZyB9IGZyb20gJy4uL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7IEZvcm1hdCwgU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5leHBvcnQgdHlwZSBFeHRyYWN0STE4bkJ1aWxkZXJPcHRpb25zID0gU2NoZW1hO1xuXG5mdW5jdGlvbiBnZXRJMThuT3V0ZmlsZShmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ3htYic6XG4gICAgICByZXR1cm4gJ21lc3NhZ2VzLnhtYic7XG4gICAgY2FzZSAneGxmJzpcbiAgICBjYXNlICd4bGlmJzpcbiAgICBjYXNlICd4bGlmZic6XG4gICAgY2FzZSAneGxmMic6XG4gICAgY2FzZSAneGxpZmYyJzpcbiAgICAgIHJldHVybiAnbWVzc2FnZXMueGxmJztcbiAgICBjYXNlICdqc29uJzpcbiAgICBjYXNlICdsZWdhY3ktbWlncmF0ZSc6XG4gICAgICByZXR1cm4gJ21lc3NhZ2VzLmpzb24nO1xuICAgIGNhc2UgJ2FyYic6XG4gICAgICByZXR1cm4gJ21lc3NhZ2VzLmFyYic7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZm9ybWF0IFwiJHtmb3JtYXR9XCJgKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRTZXJpYWxpemVyKFxuICBsb2NhbGl6ZVRvb2xzTW9kdWxlOiB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9sb2NhbGl6ZS90b29scycpLFxuICBmb3JtYXQ6IEZvcm1hdCxcbiAgc291cmNlTG9jYWxlOiBzdHJpbmcsXG4gIGJhc2VQYXRoOiBzdHJpbmcsXG4gIHVzZUxlZ2FjeUlkczogYm9vbGVhbixcbiAgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNzLFxuKSB7XG4gIGNvbnN0IHtcbiAgICBYbWJUcmFuc2xhdGlvblNlcmlhbGl6ZXIsXG4gICAgTGVnYWN5TWVzc2FnZUlkTWlncmF0aW9uU2VyaWFsaXplcixcbiAgICBBcmJUcmFuc2xhdGlvblNlcmlhbGl6ZXIsXG4gICAgWGxpZmYxVHJhbnNsYXRpb25TZXJpYWxpemVyLFxuICAgIFhsaWZmMlRyYW5zbGF0aW9uU2VyaWFsaXplcixcbiAgICBTaW1wbGVKc29uVHJhbnNsYXRpb25TZXJpYWxpemVyLFxuICB9ID0gbG9jYWxpemVUb29sc01vZHVsZTtcblxuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRm9ybWF0LlhtYjpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICByZXR1cm4gbmV3IFhtYlRyYW5zbGF0aW9uU2VyaWFsaXplcihiYXNlUGF0aCBhcyBhbnksIHVzZUxlZ2FjeUlkcyk7XG4gICAgY2FzZSBGb3JtYXQuWGxmOlxuICAgIGNhc2UgRm9ybWF0LlhsaWY6XG4gICAgY2FzZSBGb3JtYXQuWGxpZmY6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgcmV0dXJuIG5ldyBYbGlmZjFUcmFuc2xhdGlvblNlcmlhbGl6ZXIoc291cmNlTG9jYWxlLCBiYXNlUGF0aCBhcyBhbnksIHVzZUxlZ2FjeUlkcywge30pO1xuICAgIGNhc2UgRm9ybWF0LlhsZjI6XG4gICAgY2FzZSBGb3JtYXQuWGxpZmYyOlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHJldHVybiBuZXcgWGxpZmYyVHJhbnNsYXRpb25TZXJpYWxpemVyKHNvdXJjZUxvY2FsZSwgYmFzZVBhdGggYXMgYW55LCB1c2VMZWdhY3lJZHMsIHt9KTtcbiAgICBjYXNlIEZvcm1hdC5Kc29uOlxuICAgICAgcmV0dXJuIG5ldyBTaW1wbGVKc29uVHJhbnNsYXRpb25TZXJpYWxpemVyKHNvdXJjZUxvY2FsZSk7XG4gICAgY2FzZSBGb3JtYXQuTGVnYWN5TWlncmF0ZTpcbiAgICAgIHJldHVybiBuZXcgTGVnYWN5TWVzc2FnZUlkTWlncmF0aW9uU2VyaWFsaXplcihkaWFnbm9zdGljcyk7XG4gICAgY2FzZSBGb3JtYXQuQXJiOlxuICAgICAgY29uc3QgZmlsZVN5c3RlbSA9IHtcbiAgICAgICAgcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gcGF0aC5yZWxhdGl2ZShmcm9tLCB0byk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgcmV0dXJuIG5ldyBBcmJUcmFuc2xhdGlvblNlcmlhbGl6ZXIoc291cmNlTG9jYWxlLCBiYXNlUGF0aCBhcyBhbnksIGZpbGVTeXN0ZW0gYXMgYW55KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVGb3JtYXRPcHRpb24ob3B0aW9uczogRXh0cmFjdEkxOG5CdWlsZGVyT3B0aW9ucyk6IEZvcm1hdCB7XG4gIGxldCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcblxuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRm9ybWF0LlhsZjpcbiAgICBjYXNlIEZvcm1hdC5YbGlmOlxuICAgIGNhc2UgRm9ybWF0LlhsaWZmOlxuICAgICAgZm9ybWF0ID0gRm9ybWF0LlhsZjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRm9ybWF0LlhsZjI6XG4gICAgY2FzZSBGb3JtYXQuWGxpZmYyOlxuICAgICAgZm9ybWF0ID0gRm9ybWF0LlhsZjI7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIERlZmF1bHQgZm9ybWF0IGlzIHhsaWZmMVxuICByZXR1cm4gZm9ybWF0ID8/IEZvcm1hdC5YbGY7XG59XG5cbmNsYXNzIE5vRW1pdFBsdWdpbiB7XG4gIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogdm9pZCB7XG4gICAgY29tcGlsZXIuaG9va3Muc2hvdWxkRW1pdC50YXAoJ2FuZ3VsYXItbm8tZW1pdCcsICgpID0+IGZhbHNlKTtcbiAgfVxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgRGlyZWN0IHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlKFxuICBvcHRpb25zOiBFeHRyYWN0STE4bkJ1aWxkZXJPcHRpb25zLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgdHJhbnNmb3Jtcz86IHtcbiAgICB3ZWJwYWNrQ29uZmlndXJhdGlvbj86IEV4ZWN1dGlvblRyYW5zZm9ybWVyPHdlYnBhY2suQ29uZmlndXJhdGlvbj47XG4gIH0sXG4pOiBQcm9taXNlPEJ1aWxkUmVzdWx0PiB7XG4gIC8vIENoZWNrIEFuZ3VsYXIgdmVyc2lvbi5cbiAgYXNzZXJ0Q29tcGF0aWJsZUFuZ3VsYXJWZXJzaW9uKGNvbnRleHQud29ya3NwYWNlUm9vdCk7XG5cbiAgLy8gUHVyZ2Ugb2xkIGJ1aWxkIGRpc2sgY2FjaGUuXG4gIGF3YWl0IHB1cmdlU3RhbGVCdWlsZENhY2hlKGNvbnRleHQpO1xuXG4gIGNvbnN0IGJyb3dzZXJUYXJnZXQgPSB0YXJnZXRGcm9tVGFyZ2V0U3RyaW5nKG9wdGlvbnMuYnJvd3NlclRhcmdldCk7XG4gIGNvbnN0IGJyb3dzZXJPcHRpb25zID0gYXdhaXQgY29udGV4dC52YWxpZGF0ZU9wdGlvbnM8SnNvbk9iamVjdCAmIEJyb3dzZXJCdWlsZGVyT3B0aW9ucz4oXG4gICAgYXdhaXQgY29udGV4dC5nZXRUYXJnZXRPcHRpb25zKGJyb3dzZXJUYXJnZXQpLFxuICAgIGF3YWl0IGNvbnRleHQuZ2V0QnVpbGRlck5hbWVGb3JUYXJnZXQoYnJvd3NlclRhcmdldCksXG4gICk7XG5cbiAgY29uc3QgZm9ybWF0ID0gbm9ybWFsaXplRm9ybWF0T3B0aW9uKG9wdGlvbnMpO1xuXG4gIC8vIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBvdXRGaWxlIG5hbWUgc28gdGhhdCBBbmd1bGFyQ29tcGlsZXIgY2FuIHJldHJpZXZlIGl0LlxuICBsZXQgb3V0RmlsZSA9IG9wdGlvbnMub3V0RmlsZSB8fCBnZXRJMThuT3V0ZmlsZShmb3JtYXQpO1xuICBpZiAob3B0aW9ucy5vdXRwdXRQYXRoKSB7XG4gICAgLy8gQW5ndWxhckNvbXBpbGVyUGx1Z2luIGRvZXNuJ3Qgc3VwcG9ydCBnZW5EaXIgc28gd2UgaGF2ZSB0byBhZGp1c3Qgb3V0RmlsZSBpbnN0ZWFkLlxuICAgIG91dEZpbGUgPSBwYXRoLmpvaW4ob3B0aW9ucy5vdXRwdXRQYXRoLCBvdXRGaWxlKTtcbiAgfVxuICBvdXRGaWxlID0gcGF0aC5yZXNvbHZlKGNvbnRleHQud29ya3NwYWNlUm9vdCwgb3V0RmlsZSk7XG5cbiAgaWYgKCFjb250ZXh0LnRhcmdldCB8fCAhY29udGV4dC50YXJnZXQucHJvamVjdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGJ1aWxkZXIgcmVxdWlyZXMgYSB0YXJnZXQuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHJlcXVpcmUucmVzb2x2ZSgnQGFuZ3VsYXIvbG9jYWxpemUnKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3I6IGBpMThuIGV4dHJhY3Rpb24gcmVxdWlyZXMgdGhlICdAYW5ndWxhci9sb2NhbGl6ZScgcGFja2FnZS5gLFxuICAgICAgb3V0cHV0UGF0aDogb3V0RmlsZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBjb250ZXh0LmdldFByb2plY3RNZXRhZGF0YShjb250ZXh0LnRhcmdldCk7XG4gIGNvbnN0IGkxOG4gPSBjcmVhdGVJMThuT3B0aW9ucyhtZXRhZGF0YSk7XG5cbiAgbGV0IHVzZUxlZ2FjeUlkcyA9IHRydWU7XG5cbiAgY29uc3QgaXZ5TWVzc2FnZXM6IExvY2FsaXplTWVzc2FnZVtdID0gW107XG4gIGNvbnN0IGJ1aWxkZXJPcHRpb25zID0ge1xuICAgIC4uLmJyb3dzZXJPcHRpb25zLFxuICAgIG9wdGltaXphdGlvbjogZmFsc2UsXG4gICAgc291cmNlTWFwOiB7XG4gICAgICBzY3JpcHRzOiB0cnVlLFxuICAgICAgc3R5bGVzOiBmYWxzZSxcbiAgICAgIHZlbmRvcjogdHJ1ZSxcbiAgICB9LFxuICAgIGJ1aWxkT3B0aW1pemVyOiBmYWxzZSxcbiAgICBhb3Q6IHRydWUsXG4gICAgcHJvZ3Jlc3M6IG9wdGlvbnMucHJvZ3Jlc3MsXG4gICAgYnVkZ2V0czogW10sXG4gICAgYXNzZXRzOiBbXSxcbiAgICBzY3JpcHRzOiBbXSxcbiAgICBzdHlsZXM6IFtdLFxuICAgIGRlbGV0ZU91dHB1dFBhdGg6IGZhbHNlLFxuICAgIGV4dHJhY3RMaWNlbnNlczogZmFsc2UsXG4gICAgc3VicmVzb3VyY2VJbnRlZ3JpdHk6IGZhbHNlLFxuICAgIG91dHB1dEhhc2hpbmc6IE91dHB1dEhhc2hpbmcuTm9uZSxcbiAgICBuYW1lZENodW5rczogdHJ1ZSxcbiAgICBhbGxvd2VkQ29tbW9uSnNEZXBlbmRlbmNpZXM6IHVuZGVmaW5lZCxcbiAgfTtcbiAgY29uc3QgeyBjb25maWcsIHByb2plY3RSb290IH0gPSBhd2FpdCBnZW5lcmF0ZUJyb3dzZXJXZWJwYWNrQ29uZmlnRnJvbUNvbnRleHQoXG4gICAgYnVpbGRlck9wdGlvbnMsXG4gICAgY29udGV4dCxcbiAgICAod2NvKSA9PiB7XG4gICAgICAvLyBEZWZhdWx0IHZhbHVlIGZvciBsZWdhY3kgbWVzc2FnZSBpZHMgaXMgY3VycmVudGx5IHRydWVcbiAgICAgIHVzZUxlZ2FjeUlkcyA9IHdjby50c0NvbmZpZy5vcHRpb25zLmVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQgPz8gdHJ1ZTtcblxuICAgICAgY29uc3QgcGFydGlhbHM6IChQcm9taXNlPENvbmZpZ3VyYXRpb24+IHwgQ29uZmlndXJhdGlvbilbXSA9IFtcbiAgICAgICAgeyBwbHVnaW5zOiBbbmV3IE5vRW1pdFBsdWdpbigpXSB9LFxuICAgICAgICBnZXRDb21tb25Db25maWcod2NvKSxcbiAgICAgIF07XG5cbiAgICAgIC8vIEFkZCBJdnkgYXBwbGljYXRpb24gZmlsZSBleHRyYWN0b3Igc3VwcG9ydFxuICAgICAgcGFydGlhbHMudW5zaGlmdCh7XG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlc3Q6IC9cXC5bY21dP1t0al1zeD8kLyxcbiAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoJy4vaXZ5LWV4dHJhY3QtbG9hZGVyJyksXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlSGFuZGxlcjogKG1lc3NhZ2VzOiBMb2NhbGl6ZU1lc3NhZ2VbXSkgPT4gaXZ5TWVzc2FnZXMucHVzaCguLi5tZXNzYWdlcyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gUmVwbGFjZSBhbGwgc3R5bGVzaGVldHMgd2l0aCBlbXB0eSBjb250ZW50XG4gICAgICBwYXJ0aWFscy5wdXNoKHtcbiAgICAgICAgbW9kdWxlOiB7XG4gICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGVzdDogL1xcLihjc3N8c2Nzc3xzYXNzfGxlc3MpJC8sXG4gICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKCcuL2VtcHR5LWxvYWRlcicpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwYXJ0aWFscztcbiAgICB9LFxuICAgIC8vIER1cmluZyBleHRyYWN0aW9uIHdlIGRvbid0IG5lZWQgc3BlY2lmaWMgYnJvd3NlciBzdXBwb3J0LlxuICAgIHsgc3VwcG9ydGVkQnJvd3NlcnM6IHVuZGVmaW5lZCB9LFxuICApO1xuXG4gIC8vIEFsbCB0aGUgbG9jYWxpemUgdXNhZ2VzIGFyZSBzZXR1cCB0byBmaXJzdCB0cnkgdGhlIEVTTSBlbnRyeSBwb2ludCB0aGVuIGZhbGxiYWNrIHRvIHRoZSBkZWVwIGltcG9ydHMuXG4gIC8vIFRoaXMgcHJvdmlkZXMgaW50ZXJpbSBjb21wYXRpYmlsaXR5IHdoaWxlIHRoZSBmcmFtZXdvcmsgaXMgdHJhbnNpdGlvbmVkIHRvIGJ1bmRsZWQgRVNNIHBhY2thZ2VzLlxuICBjb25zdCBsb2NhbGl6ZVRvb2xzTW9kdWxlID0gYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9sb2NhbGl6ZS90b29scycpPihcbiAgICAnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnLFxuICApO1xuICBjb25zdCB3ZWJwYWNrUmVzdWx0ID0gYXdhaXQgcnVuV2VicGFjayhcbiAgICAoYXdhaXQgdHJhbnNmb3Jtcz8ud2VicGFja0NvbmZpZ3VyYXRpb24/Lihjb25maWcpKSB8fCBjb25maWcsXG4gICAgY29udGV4dCxcbiAgICB7XG4gICAgICBsb2dnaW5nOiBjcmVhdGVXZWJwYWNrTG9nZ2luZ0NhbGxiYWNrKGJ1aWxkZXJPcHRpb25zLCBjb250ZXh0LmxvZ2dlciksXG4gICAgICB3ZWJwYWNrRmFjdG9yeTogd2VicGFjayxcbiAgICB9LFxuICApLnRvUHJvbWlzZSgpO1xuXG4gIC8vIFNldCB0aGUgb3V0cHV0UGF0aCB0byB0aGUgZXh0cmFjdGlvbiBvdXRwdXQgbG9jYXRpb24gZm9yIGRvd25zdHJlYW0gY29uc3VtZXJzXG4gIHdlYnBhY2tSZXN1bHQub3V0cHV0UGF0aCA9IG91dEZpbGU7XG5cbiAgLy8gQ29tcGxldGUgaWYgV2VicGFjayBidWlsZCBmYWlsZWRcbiAgaWYgKCF3ZWJwYWNrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gd2VicGFja1Jlc3VsdDtcbiAgfVxuXG4gIGNvbnN0IGJhc2VQYXRoID0gY29uZmlnLmNvbnRleHQgfHwgcHJvamVjdFJvb3Q7XG5cbiAgY29uc3QgeyBjaGVja0R1cGxpY2F0ZU1lc3NhZ2VzIH0gPSBsb2NhbGl6ZVRvb2xzTW9kdWxlO1xuXG4gIC8vIFRoZSBmaWxlc3lzdGVtIGlzIHVzZWQgdG8gY3JlYXRlIGEgcmVsYXRpdmUgcGF0aCBmb3IgZWFjaCBmaWxlXG4gIC8vIGZyb20gdGhlIGJhc2VQYXRoLiAgVGhpcyByZWxhdGl2ZSBwYXRoIGlzIHRoZW4gdXNlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgY29uc3QgY2hlY2tGaWxlU3lzdGVtID0ge1xuICAgIHJlbGF0aXZlKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gcGF0aC5yZWxhdGl2ZShmcm9tLCB0byk7XG4gICAgfSxcbiAgfTtcbiAgY29uc3QgZGlhZ25vc3RpY3MgPSBjaGVja0R1cGxpY2F0ZU1lc3NhZ2VzKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY2hlY2tGaWxlU3lzdGVtIGFzIGFueSxcbiAgICBpdnlNZXNzYWdlcyxcbiAgICAnd2FybmluZycsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBiYXNlUGF0aCBhcyBhbnksXG4gICk7XG4gIGlmIChkaWFnbm9zdGljcy5tZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgY29udGV4dC5sb2dnZXIud2FybihkaWFnbm9zdGljcy5mb3JtYXREaWFnbm9zdGljcygnJykpO1xuICB9XG5cbiAgLy8gU2VyaWFsaXplIGFsbCBleHRyYWN0ZWQgbWVzc2FnZXNcbiAgY29uc3Qgc2VyaWFsaXplciA9IGF3YWl0IGdldFNlcmlhbGl6ZXIoXG4gICAgbG9jYWxpemVUb29sc01vZHVsZSxcbiAgICBmb3JtYXQsXG4gICAgaTE4bi5zb3VyY2VMb2NhbGUsXG4gICAgYmFzZVBhdGgsXG4gICAgdXNlTGVnYWN5SWRzLFxuICAgIGRpYWdub3N0aWNzLFxuICApO1xuICBjb25zdCBjb250ZW50ID0gc2VyaWFsaXplci5zZXJpYWxpemUoaXZ5TWVzc2FnZXMpO1xuXG4gIC8vIEVuc3VyZSBkaXJlY3RvcnkgZXhpc3RzXG4gIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLmRpcm5hbWUob3V0RmlsZSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXRQYXRoKSkge1xuICAgIGZzLm1rZGlyU3luYyhvdXRwdXRQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8vIFdyaXRlIHRyYW5zbGF0aW9uIGZpbGVcbiAgZnMud3JpdGVGaWxlU3luYyhvdXRGaWxlLCBjb250ZW50KTtcblxuICByZXR1cm4gd2VicGFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcjxFeHRyYWN0STE4bkJ1aWxkZXJPcHRpb25zPihleGVjdXRlKTtcbiJdfQ==
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9leHRyYWN0LWkxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCx5REFBa0c7QUFDbEcsaUVBQXdFO0FBRXhFLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsK0JBQXFDO0FBQ3JDLHNEQUFpRDtBQUVqRCwyREFBNkQ7QUFDN0QsbURBQXFEO0FBQ3JELHlEQUErRDtBQUMvRCxpREFBcUU7QUFDckUsK0VBQTZGO0FBQzdGLG1EQUF3RDtBQUN4RCxxREFBeUU7QUFDekUsOENBQW1GO0FBQ25GLHFDQUEwQztBQUkxQyxTQUFTLGNBQWMsQ0FBQyxNQUEwQjtJQUNoRCxRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssS0FBSztZQUNSLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxRQUFRO1lBQ1gsT0FBTyxjQUFjLENBQUM7UUFDeEIsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLGdCQUFnQjtZQUNuQixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLEtBQUs7WUFDUixPQUFPLGNBQWMsQ0FBQztRQUN4QjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDckQ7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGFBQWEsQ0FDMUIsbUJBQTZELEVBQzdELE1BQWMsRUFDZCxZQUFvQixFQUNwQixRQUFnQixFQUNoQixZQUFxQixFQUNyQixXQUF3QjtJQUV4QixNQUFNLEVBQ0osd0JB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bGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHsgybVQYXJzZWRNZXNzYWdlIGFzIExvY2FsaXplTWVzc2FnZSB9IGZyb20gJ0Bhbmd1bGFyL2xvY2FsaXplJztcbmltcG9ydCB0eXBlIHsgRGlhZ25vc3RpY3MgfSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZS90b29scyc7XG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCwgY3JlYXRlQnVpbGRlciwgdGFyZ2V0RnJvbVRhcmdldFN0cmluZyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsgQnVpbGRSZXN1bHQsIHJ1bldlYnBhY2sgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYnVpbGQtd2VicGFjayc7XG5pbXBvcnQgeyBKc29uT2JqZWN0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB3ZWJwYWNrLCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IEV4ZWN1dGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBjcmVhdGVJMThuT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4tb3B0aW9ucyc7XG5pbXBvcnQgeyBsb2FkRXNtTW9kdWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZC1lc20nO1xuaW1wb3J0IHsgcHVyZ2VTdGFsZUJ1aWxkQ2FjaGUgfSBmcm9tICcuLi8uLi91dGlscy9wdXJnZS1jYWNoZSc7XG5pbXBvcnQgeyBhc3NlcnRDb21wYXRpYmxlQW5ndWxhclZlcnNpb24gfSBmcm9tICcuLi8uLi91dGlscy92ZXJzaW9uJztcbmltcG9ydCB7IGdlbmVyYXRlQnJvd3NlcldlYnBhY2tDb25maWdGcm9tQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3dlYnBhY2stYnJvd3Nlci1jb25maWcnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vd2VicGFjay9jb25maWdzJztcbmltcG9ydCB7IGNyZWF0ZVdlYnBhY2tMb2dnaW5nQ2FsbGJhY2sgfSBmcm9tICcuLi8uLi93ZWJwYWNrL3V0aWxzL3N0YXRzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBCcm93c2VyQnVpbGRlck9wdGlvbnMsIE91dHB1dEhhc2hpbmcgfSBmcm9tICcuLi9icm93c2VyL3NjaGVtYSc7XG5pbXBvcnQgeyBGb3JtYXQsIFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IHR5cGUgRXh0cmFjdEkxOG5CdWlsZGVyT3B0aW9ucyA9IFNjaGVtYTtcblxuZnVuY3Rpb24gZ2V0STE4bk91dGZpbGUoZm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlICd4bWInOlxuICAgICAgcmV0dXJuICdtZXNzYWdlcy54bWInO1xuICAgIGNhc2UgJ3hsZic6XG4gICAgY2FzZSAneGxpZic6XG4gICAgY2FzZSAneGxpZmYnOlxuICAgIGNhc2UgJ3hsZjInOlxuICAgIGNhc2UgJ3hsaWZmMic6XG4gICAgICByZXR1cm4gJ21lc3NhZ2VzLnhsZic7XG4gICAgY2FzZSAnanNvbic6XG4gICAgY2FzZSAnbGVnYWN5LW1pZ3JhdGUnOlxuICAgICAgcmV0dXJuICdtZXNzYWdlcy5qc29uJztcbiAgICBjYXNlICdhcmInOlxuICAgICAgcmV0dXJuICdtZXNzYWdlcy5hcmInO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZvcm1hdCBcIiR7Zm9ybWF0fVwiYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0U2VyaWFsaXplcihcbiAgbG9jYWxpemVUb29sc01vZHVsZTogdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnKSxcbiAgZm9ybWF0OiBGb3JtYXQsXG4gIHNvdXJjZUxvY2FsZTogc3RyaW5nLFxuICBiYXNlUGF0aDogc3RyaW5nLFxuICB1c2VMZWdhY3lJZHM6IGJvb2xlYW4sXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcyxcbikge1xuICBjb25zdCB7XG4gICAgWG1iVHJhbnNsYXRpb25TZXJpYWxpemVyLFxuICAgIExlZ2FjeU1lc3NhZ2VJZE1pZ3JhdGlvblNlcmlhbGl6ZXIsXG4gICAgQXJiVHJhbnNsYXRpb25TZXJpYWxpemVyLFxuICAgIFhsaWZmMVRyYW5zbGF0aW9uU2VyaWFsaXplcixcbiAgICBYbGlmZjJUcmFuc2xhdGlvblNlcmlhbGl6ZXIsXG4gICAgU2ltcGxlSnNvblRyYW5zbGF0aW9uU2VyaWFsaXplcixcbiAgfSA9IGxvY2FsaXplVG9vbHNNb2R1bGU7XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIEZvcm1hdC5YbWI6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgcmV0dXJuIG5ldyBYbWJUcmFuc2xhdGlvblNlcmlhbGl6ZXIoYmFzZVBhdGggYXMgYW55LCB1c2VMZWdhY3lJZHMpO1xuICAgIGNhc2UgRm9ybWF0LlhsZjpcbiAgICBjYXNlIEZvcm1hdC5YbGlmOlxuICAgIGNhc2UgRm9ybWF0LlhsaWZmOlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHJldHVybiBuZXcgWGxpZmYxVHJhbnNsYXRpb25TZXJpYWxpemVyKHNvdXJjZUxvY2FsZSwgYmFzZVBhdGggYXMgYW55LCB1c2VMZWdhY3lJZHMsIHt9KTtcbiAgICBjYXNlIEZvcm1hdC5YbGYyOlxuICAgIGNhc2UgRm9ybWF0LlhsaWZmMjpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICByZXR1cm4gbmV3IFhsaWZmMlRyYW5zbGF0aW9uU2VyaWFsaXplcihzb3VyY2VMb2NhbGUsIGJhc2VQYXRoIGFzIGFueSwgdXNlTGVnYWN5SWRzLCB7fSk7XG4gICAgY2FzZSBGb3JtYXQuSnNvbjpcbiAgICAgIHJldHVybiBuZXcgU2ltcGxlSnNvblRyYW5zbGF0aW9uU2VyaWFsaXplcihzb3VyY2VMb2NhbGUpO1xuICAgIGNhc2UgRm9ybWF0LkxlZ2FjeU1pZ3JhdGU6XG4gICAgICByZXR1cm4gbmV3IExlZ2FjeU1lc3NhZ2VJZE1pZ3JhdGlvblNlcmlhbGl6ZXIoZGlhZ25vc3RpY3MpO1xuICAgIGNhc2UgRm9ybWF0LkFyYjpcbiAgICAgIGNvbnN0IGZpbGVTeXN0ZW0gPSB7XG4gICAgICAgIHJlbGF0aXZlKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgcmV0dXJuIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHJldHVybiBuZXcgQXJiVHJhbnNsYXRpb25TZXJpYWxpemVyKHNvdXJjZUxvY2FsZSwgYmFzZVBhdGggYXMgYW55LCBmaWxlU3lzdGVtIGFzIGFueSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRm9ybWF0T3B0aW9uKG9wdGlvbnM6IEV4dHJhY3RJMThuQnVpbGRlck9wdGlvbnMpOiBGb3JtYXQge1xuICBsZXQgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIEZvcm1hdC5YbGY6XG4gICAgY2FzZSBGb3JtYXQuWGxpZjpcbiAgICBjYXNlIEZvcm1hdC5YbGlmZjpcbiAgICAgIGZvcm1hdCA9IEZvcm1hdC5YbGY7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEZvcm1hdC5YbGYyOlxuICAgIGNhc2UgRm9ybWF0LlhsaWZmMjpcbiAgICAgIGZvcm1hdCA9IEZvcm1hdC5YbGYyO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBEZWZhdWx0IGZvcm1hdCBpcyB4bGlmZjFcbiAgcmV0dXJuIGZvcm1hdCA/PyBGb3JtYXQuWGxmO1xufVxuXG5jbGFzcyBOb0VtaXRQbHVnaW4ge1xuICBhcHBseShjb21waWxlcjogd2VicGFjay5Db21waWxlcik6IHZvaWQge1xuICAgIGNvbXBpbGVyLmhvb2tzLnNob3VsZEVtaXQudGFwKCdhbmd1bGFyLW5vLWVtaXQnLCAoKSA9PiBmYWxzZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIERpcmVjdCB1c2FnZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZShcbiAgb3B0aW9uczogRXh0cmFjdEkxOG5CdWlsZGVyT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHRyYW5zZm9ybXM/OiB7XG4gICAgd2VicGFja0NvbmZpZ3VyYXRpb24/OiBFeGVjdXRpb25UcmFuc2Zvcm1lcjx3ZWJwYWNrLkNvbmZpZ3VyYXRpb24+O1xuICB9LFxuKTogUHJvbWlzZTxCdWlsZFJlc3VsdD4ge1xuICAvLyBDaGVjayBBbmd1bGFyIHZlcnNpb24uXG4gIGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbihjb250ZXh0LndvcmtzcGFjZVJvb3QpO1xuXG4gIC8vIFB1cmdlIG9sZCBidWlsZCBkaXNrIGNhY2hlLlxuICBhd2FpdCBwdXJnZVN0YWxlQnVpbGRDYWNoZShjb250ZXh0KTtcblxuICBjb25zdCBicm93c2VyVGFyZ2V0ID0gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhvcHRpb25zLmJyb3dzZXJUYXJnZXQpO1xuICBjb25zdCBicm93c2VyT3B0aW9ucyA9IGF3YWl0IGNvbnRleHQudmFsaWRhdGVPcHRpb25zPEpzb25PYmplY3QgJiBCcm93c2VyQnVpbGRlck9wdGlvbnM+KFxuICAgIGF3YWl0IGNvbnRleHQuZ2V0VGFyZ2V0T3B0aW9ucyhicm93c2VyVGFyZ2V0KSxcbiAgICBhd2FpdCBjb250ZXh0LmdldEJ1aWxkZXJOYW1lRm9yVGFyZ2V0KGJyb3dzZXJUYXJnZXQpLFxuICApO1xuXG4gIGNvbnN0IGZvcm1hdCA9IG5vcm1hbGl6ZUZvcm1hdE9wdGlvbihvcHRpb25zKTtcblxuICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSB0aGUgb3V0RmlsZSBuYW1lIHNvIHRoYXQgQW5ndWxhckNvbXBpbGVyIGNhbiByZXRyaWV2ZSBpdC5cbiAgbGV0IG91dEZpbGUgPSBvcHRpb25zLm91dEZpbGUgfHwgZ2V0STE4bk91dGZpbGUoZm9ybWF0KTtcbiAgaWYgKG9wdGlvbnMub3V0cHV0UGF0aCkge1xuICAgIC8vIEFuZ3VsYXJDb21waWxlclBsdWdpbiBkb2Vzbid0IHN1cHBvcnQgZ2VuRGlyIHNvIHdlIGhhdmUgdG8gYWRqdXN0IG91dEZpbGUgaW5zdGVhZC5cbiAgICBvdXRGaWxlID0gcGF0aC5qb2luKG9wdGlvbnMub3V0cHV0UGF0aCwgb3V0RmlsZSk7XG4gIH1cbiAgb3V0RmlsZSA9IHBhdGgucmVzb2x2ZShjb250ZXh0LndvcmtzcGFjZVJvb3QsIG91dEZpbGUpO1xuXG4gIGlmICghY29udGV4dC50YXJnZXQgfHwgIWNvbnRleHQudGFyZ2V0LnByb2plY3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBidWlsZGVyIHJlcXVpcmVzIGEgdGFyZ2V0LicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXF1aXJlLnJlc29sdmUoJ0Bhbmd1bGFyL2xvY2FsaXplJyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yOiBgaTE4biBleHRyYWN0aW9uIHJlcXVpcmVzIHRoZSAnQGFuZ3VsYXIvbG9jYWxpemUnIHBhY2thZ2UuYCxcbiAgICAgIG91dHB1dFBhdGg6IG91dEZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEoY29udGV4dC50YXJnZXQpO1xuICBjb25zdCBpMThuID0gY3JlYXRlSTE4bk9wdGlvbnMobWV0YWRhdGEpO1xuXG4gIGxldCB1c2VMZWdhY3lJZHMgPSB0cnVlO1xuXG4gIGNvbnN0IGl2eU1lc3NhZ2VzOiBMb2NhbGl6ZU1lc3NhZ2VbXSA9IFtdO1xuICBjb25zdCBidWlsZGVyT3B0aW9ucyA9IHtcbiAgICAuLi5icm93c2VyT3B0aW9ucyxcbiAgICBvcHRpbWl6YXRpb246IGZhbHNlLFxuICAgIHNvdXJjZU1hcDoge1xuICAgICAgc2NyaXB0czogdHJ1ZSxcbiAgICAgIHN0eWxlczogZmFsc2UsXG4gICAgICB2ZW5kb3I6IHRydWUsXG4gICAgfSxcbiAgICBidWlsZE9wdGltaXplcjogZmFsc2UsXG4gICAgYW90OiB0cnVlLFxuICAgIHByb2dyZXNzOiBvcHRpb25zLnByb2dyZXNzLFxuICAgIGJ1ZGdldHM6IFtdLFxuICAgIGFzc2V0czogW10sXG4gICAgc2NyaXB0czogW10sXG4gICAgc3R5bGVzOiBbXSxcbiAgICBkZWxldGVPdXRwdXRQYXRoOiBmYWxzZSxcbiAgICBleHRyYWN0TGljZW5zZXM6IGZhbHNlLFxuICAgIHN1YnJlc291cmNlSW50ZWdyaXR5OiBmYWxzZSxcbiAgICBvdXRwdXRIYXNoaW5nOiBPdXRwdXRIYXNoaW5nLk5vbmUsXG4gICAgbmFtZWRDaHVua3M6IHRydWUsXG4gICAgYWxsb3dlZENvbW1vbkpzRGVwZW5kZW5jaWVzOiB1bmRlZmluZWQsXG4gIH07XG4gIGNvbnN0IHsgY29uZmlnLCBwcm9qZWN0Um9vdCB9ID0gYXdhaXQgZ2VuZXJhdGVCcm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0KFxuICAgIGJ1aWxkZXJPcHRpb25zLFxuICAgIGNvbnRleHQsXG4gICAgKHdjbykgPT4ge1xuICAgICAgLy8gRGVmYXVsdCB2YWx1ZSBmb3IgbGVnYWN5IG1lc3NhZ2UgaWRzIGlzIGN1cnJlbnRseSB0cnVlXG4gICAgICB1c2VMZWdhY3lJZHMgPSB3Y28udHNDb25maWcub3B0aW9ucy5lbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0ID8/IHRydWU7XG5cbiAgICAgIGNvbnN0IHBhcnRpYWxzOiAoUHJvbWlzZTxDb25maWd1cmF0aW9uPiB8IENvbmZpZ3VyYXRpb24pW10gPSBbXG4gICAgICAgIHsgcGx1Z2luczogW25ldyBOb0VtaXRQbHVnaW4oKV0gfSxcbiAgICAgICAgZ2V0Q29tbW9uQ29uZmlnKHdjbyksXG4gICAgICBdO1xuXG4gICAgICAvLyBBZGQgSXZ5IGFwcGxpY2F0aW9uIGZpbGUgZXh0cmFjdG9yIHN1cHBvcnRcbiAgICAgIHBhcnRpYWxzLnVuc2hpZnQoe1xuICAgICAgICBtb2R1bGU6IHtcbiAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXN0OiAvXFwuW2NtXT9bdGpdc3g/JC8sXG4gICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKCcuL2l2eS1leHRyYWN0LWxvYWRlcicpLFxuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUhhbmRsZXI6IChtZXNzYWdlczogTG9jYWxpemVNZXNzYWdlW10pID0+IGl2eU1lc3NhZ2VzLnB1c2goLi4ubWVzc2FnZXMpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlcGxhY2UgYWxsIHN0eWxlc2hlZXRzIHdpdGggZW1wdHkgY29udGVudFxuICAgICAgcGFydGlhbHMucHVzaCh7XG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlc3Q6IC9cXC4oY3NzfHNjc3N8c2Fzc3xsZXNzKSQvLFxuICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZSgnLi9lbXB0eS1sb2FkZXInKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcGFydGlhbHM7XG4gICAgfSxcbiAgICAvLyBEdXJpbmcgZXh0cmFjdGlvbiB3ZSBkb24ndCBuZWVkIHNwZWNpZmljIGJyb3dzZXIgc3VwcG9ydC5cbiAgICB7IHN1cHBvcnRlZEJyb3dzZXJzOiB1bmRlZmluZWQgfSxcbiAgKTtcblxuICAvLyBBbGwgdGhlIGxvY2FsaXplIHVzYWdlcyBhcmUgc2V0dXAgdG8gZmlyc3QgdHJ5IHRoZSBFU00gZW50cnkgcG9pbnQgdGhlbiBmYWxsYmFjayB0byB0aGUgZGVlcCBpbXBvcnRzLlxuICAvLyBUaGlzIHByb3ZpZGVzIGludGVyaW0gY29tcGF0aWJpbGl0eSB3aGlsZSB0aGUgZnJhbWV3b3JrIGlzIHRyYW5zaXRpb25lZCB0byBidW5kbGVkIEVTTSBwYWNrYWdlcy5cbiAgY29uc3QgbG9jYWxpemVUb29sc01vZHVsZSA9IGF3YWl0IGxvYWRFc21Nb2R1bGU8dHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnKT4oXG4gICAgJ0Bhbmd1bGFyL2xvY2FsaXplL3Rvb2xzJyxcbiAgKTtcbiAgY29uc3Qgd2VicGFja1Jlc3VsdCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgcnVuV2VicGFjaygoYXdhaXQgdHJhbnNmb3Jtcz8ud2VicGFja0NvbmZpZ3VyYXRpb24/Lihjb25maWcpKSB8fCBjb25maWcsIGNvbnRleHQsIHtcbiAgICAgIGxvZ2dpbmc6IGNyZWF0ZVdlYnBhY2tMb2dnaW5nQ2FsbGJhY2soYnVpbGRlck9wdGlvbnMsIGNvbnRleHQubG9nZ2VyKSxcbiAgICAgIHdlYnBhY2tGYWN0b3J5OiB3ZWJwYWNrLFxuICAgIH0pLFxuICApO1xuXG4gIC8vIFNldCB0aGUgb3V0cHV0UGF0aCB0byB0aGUgZXh0cmFjdGlvbiBvdXRwdXQgbG9jYXRpb24gZm9yIGRvd25zdHJlYW0gY29uc3VtZXJzXG4gIHdlYnBhY2tSZXN1bHQub3V0cHV0UGF0aCA9IG91dEZpbGU7XG5cbiAgLy8gQ29tcGxldGUgaWYgV2VicGFjayBidWlsZCBmYWlsZWRcbiAgaWYgKCF3ZWJwYWNrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gd2VicGFja1Jlc3VsdDtcbiAgfVxuXG4gIGNvbnN0IGJhc2VQYXRoID0gY29uZmlnLmNvbnRleHQgfHwgcHJvamVjdFJvb3Q7XG5cbiAgY29uc3QgeyBjaGVja0R1cGxpY2F0ZU1lc3NhZ2VzIH0gPSBsb2NhbGl6ZVRvb2xzTW9kdWxlO1xuXG4gIC8vIFRoZSBmaWxlc3lzdGVtIGlzIHVzZWQgdG8gY3JlYXRlIGEgcmVsYXRpdmUgcGF0aCBmb3IgZWFjaCBmaWxlXG4gIC8vIGZyb20gdGhlIGJhc2VQYXRoLiAgVGhpcyByZWxhdGl2ZSBwYXRoIGlzIHRoZW4gdXNlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgY29uc3QgY2hlY2tGaWxlU3lzdGVtID0ge1xuICAgIHJlbGF0aXZlKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gcGF0aC5yZWxhdGl2ZShmcm9tLCB0byk7XG4gICAgfSxcbiAgfTtcbiAgY29uc3QgZGlhZ25vc3RpY3MgPSBjaGVja0R1cGxpY2F0ZU1lc3NhZ2VzKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY2hlY2tGaWxlU3lzdGVtIGFzIGFueSxcbiAgICBpdnlNZXNzYWdlcyxcbiAgICAnd2FybmluZycsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBiYXNlUGF0aCBhcyBhbnksXG4gICk7XG4gIGlmIChkaWFnbm9zdGljcy5tZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgY29udGV4dC5sb2dnZXIud2FybihkaWFnbm9zdGljcy5mb3JtYXREaWFnbm9zdGljcygnJykpO1xuICB9XG5cbiAgLy8gU2VyaWFsaXplIGFsbCBleHRyYWN0ZWQgbWVzc2FnZXNcbiAgY29uc3Qgc2VyaWFsaXplciA9IGF3YWl0IGdldFNlcmlhbGl6ZXIoXG4gICAgbG9jYWxpemVUb29sc01vZHVsZSxcbiAgICBmb3JtYXQsXG4gICAgaTE4bi5zb3VyY2VMb2NhbGUsXG4gICAgYmFzZVBhdGgsXG4gICAgdXNlTGVnYWN5SWRzLFxuICAgIGRpYWdub3N0aWNzLFxuICApO1xuICBjb25zdCBjb250ZW50ID0gc2VyaWFsaXplci5zZXJpYWxpemUoaXZ5TWVzc2FnZXMpO1xuXG4gIC8vIEVuc3VyZSBkaXJlY3RvcnkgZXhpc3RzXG4gIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLmRpcm5hbWUob3V0RmlsZSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXRQYXRoKSkge1xuICAgIGZzLm1rZGlyU3luYyhvdXRwdXRQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8vIFdyaXRlIHRyYW5zbGF0aW9uIGZpbGVcbiAgZnMud3JpdGVGaWxlU3luYyhvdXRGaWxlLCBjb250ZW50KTtcblxuICByZXR1cm4gd2VicGFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcjxFeHRyYWN0STE4bkJ1aWxkZXJPcHRpb25zPihleGVjdXRlKTtcbiJdfQ==
|
|
@@ -59,7 +59,7 @@ async function extract(loaderContext, content, map, options) {
|
|
|
59
59
|
const localizeToolsModule = await (0, load_esm_1.loadEsmModule)('@angular/localize/tools');
|
|
60
60
|
MessageExtractor = localizeToolsModule.MessageExtractor;
|
|
61
61
|
}
|
|
62
|
-
catch
|
|
62
|
+
catch {
|
|
63
63
|
throw new Error(`Unable to load message extractor. Please ensure '@angular/localize' is installed.`);
|
|
64
64
|
}
|
|
65
65
|
// Setup a Webpack-based logger instance
|
|
@@ -82,7 +82,7 @@ async function extract(loaderContext, content, map, options) {
|
|
|
82
82
|
};
|
|
83
83
|
let filename = loaderContext.resourcePath;
|
|
84
84
|
const mapObject = typeof map === 'string' ? JSON.parse(map) : map;
|
|
85
|
-
if (mapObject
|
|
85
|
+
if (mapObject?.file) {
|
|
86
86
|
// The extractor's internal sourcemap handling expects the filenames to match
|
|
87
87
|
filename = nodePath.join(loaderContext.context, mapObject.file);
|
|
88
88
|
}
|
|
@@ -122,7 +122,7 @@ async function extract(loaderContext, content, map, options) {
|
|
|
122
122
|
});
|
|
123
123
|
const messages = extractor.extractMessages(filename);
|
|
124
124
|
if (messages.length > 0) {
|
|
125
|
-
options
|
|
125
|
+
options?.messageHandler(messages);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXZ5LWV4dHJhY3QtbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYnVpbGRlcnMvZXh0cmFjdC1pMThuL2l2eS1leHRyYWN0LWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsK0NBQWlDO0FBQ2pDLG1EQUFxRDtBQVNyRCxTQUF3QixxQkFBcUIsQ0FFM0MsT0FBZSxFQUNmLEdBQW9CO0lBRXBCLG9FQUFvRTtJQUNwRSxxR0FBcUc7SUFDckcsNkZBQTZGO0lBQzdGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUU5QixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN2QyxHQUFHLEVBQUU7UUFDSCwwRUFBMEU7UUFDMUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDUixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBdEJELHdDQXNCQztBQUVELEtBQUssVUFBVSxPQUFPLENBQ3BCLGFBQTRFLEVBQzVFLE9BQWUsRUFDZixHQUF5QyxFQUN6QyxPQUFxQztJQUVyQyx5REFBeUQ7SUFDekQsd0dBQXdHO0lBQ3hHLG1HQUFtRztJQUNuRyxJQUFJLGdCQUFnQixDQUFDO0lBQ3JCLElBQUk7UUFDRixxRkFBcUY7UUFDckYs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Q0FBQyxVQUFpQixFQUFFLE1BQU0sRUFBRTtRQUNoRSw4REFBOEQ7UUFDOUQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxXQUFrQjtRQUMxQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEdBQUc7S0FDckIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG5vZGVQYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbG9hZEVzbU1vZHVsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWQtZXNtJztcblxuLy8gRXh0cmFjdCBsb2FkZXIgc291cmNlIG1hcCBwYXJhbWV0ZXIgdHlwZSBzaW5jZSBpdCBpcyBub3QgZXhwb3J0ZWQgZGlyZWN0bHlcbnR5cGUgTG9hZGVyU291cmNlTWFwID0gUGFyYW1ldGVyczxpbXBvcnQoJ3dlYnBhY2snKS5Mb2FkZXJEZWZpbml0aW9uRnVuY3Rpb24+WzFdO1xuXG5pbnRlcmZhY2UgTG9jYWxpemVFeHRyYWN0TG9hZGVyT3B0aW9ucyB7XG4gIG1lc3NhZ2VIYW5kbGVyOiAobWVzc2FnZXM6IGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUnKS7JtVBhcnNlZE1lc3NhZ2VbXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9jYWxpemVFeHRyYWN0TG9hZGVyKFxuICB0aGlzOiBpbXBvcnQoJ3dlYnBhY2snKS5Mb2FkZXJDb250ZXh0PExvY2FsaXplRXh0cmFjdExvYWRlck9wdGlvbnM+LFxuICBjb250ZW50OiBzdHJpbmcsXG4gIG1hcDogTG9hZGVyU291cmNlTWFwLFxuKSB7XG4gIC8vIFRoaXMgbG9hZGVyIGlzIG5vdCBjYWNoZWFibGUgZHVlIHRvIGhvdyBtZXNzYWdlIGV4dHJhY3Rpb24gd29ya3MuXG4gIC8vIEV4dHJhY3RlZCBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2Ygd2VicGFjayBwaXBlbGluZSBhbmQgaGVuY2UgdGhleSBjYW5ub3QgYmUgcmV0cmlldmVkIGZyb20gY2FjaGUuXG4gIC8vIFRPRE86IFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBpbiB0aGUgZnV0dXJlIG9uIG1ha2luZyB0aGlzIGRldGVybWluaXN0aWMgYW5kIG1vcmUgY2FjaGVhYmxlLlxuICB0aGlzLmNhY2hlYWJsZShmYWxzZSk7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICBjb25zdCBjYWxsYmFjayA9IHRoaXMuYXN5bmMoKTtcblxuICBleHRyYWN0KHRoaXMsIGNvbnRlbnQsIG1hcCwgb3B0aW9ucykudGhlbihcbiAgICAoKSA9PiB7XG4gICAgICAvLyBQYXNzIHRocm91Z2ggdGhlIG9yaWdpbmFsIGNvbnRlbnQgbm93IHRoYXQgbWVzc2FnZXMgaGF2ZSBiZWVuIGV4dHJhY3RlZFxuICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBjb250ZW50LCBtYXApO1xuICAgIH0sXG4gICAgKGVycm9yKSA9PiB7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdChcbiAgbG9hZGVyQ29udGV4dDogaW1wb3J0KCd3ZWJwYWNrJykuTG9hZGVyQ29udGV4dDxMb2NhbGl6ZUV4dHJhY3RMb2FkZXJPcHRpb25zPixcbiAgY29udGVudDogc3RyaW5nLFxuICBtYXA6IHN0cmluZyB8IExvYWRlclNvdXJjZU1hcCB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogTG9jYWxpemVFeHRyYWN0TG9hZGVyT3B0aW9ucyxcbikge1xuICAvLyBUcnkgdG8gbG9hZCB0aGUgYEBhbmd1bGFyL2xvY2FsaXplYCBtZXNzYWdlIGV4dHJhY3Rvci5cbiAgLy8gQWxsIHRoZSBsb2NhbGl6ZSB1c2FnZXMgYXJlIHNldHVwIHRvIGZpcnN0IHRyeSB0aGUgRVNNIGVudHJ5IHBvaW50IHRoZW4gZmFsbGJhY2sgdG8gdGhlIGRlZXAgaW1wb3J0cy5cbiAgLy8gVGhpcyBwcm92aWRlcyBpbnRlcmltIGNvbXBhdGliaWxpdHkgd2hpbGUgdGhlIGZyYW1ld29yayBpcyB0cmFuc2l0aW9uZWQgdG8gYnVuZGxlZCBFU00gcGFja2FnZXMuXG4gIGxldCBNZXNzYWdlRXh0cmFjdG9yO1xuICB0cnkge1xuICAgIC8vIExvYWQgRVNNIGBAYW5ndWxhci9sb2NhbGl6ZS90b29sc2AgdXNpbmcgdGhlIFR5cGVTY3JpcHQgZHluYW1pYyBpbXBvcnQgd29ya2Fyb3VuZC5cbiAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgY29uc3QgbG9jYWxpemVUb29sc01vZHVsZSA9IGF3YWl0IGxvYWRFc21Nb2R1bGU8dHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnKT4oXG4gICAgICAnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnLFxuICAgICk7XG4gICAgTWVzc2FnZUV4dHJhY3RvciA9IGxvY2FsaXplVG9vbHNNb2R1bGUuTWVzc2FnZUV4dHJhY3RvcjtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBsb2FkIG1lc3NhZ2UgZXh0cmFjdG9yLiBQbGVhc2UgZW5zdXJlICdAYW5ndWxhci9sb2NhbGl6ZScgaXMgaW5zdGFsbGVkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNldHVwIGEgV2VicGFjay1iYXNlZCBsb2dnZXIgaW5zdGFuY2VcbiAgY29uc3QgbG9nZ2VyID0ge1xuICAgIC8vIGxldmVsIDIgaXMgd2FybmluZ3NcbiAgICBsZXZlbDogMixcbiAgICBkZWJ1ZyguLi5hcmdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoLi4uYXJncyk7XG4gICAgfSxcbiAgICBpbmZvKC4uLmFyZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICBsb2FkZXJDb250ZXh0LmVtaXRXYXJuaW5nKG5ldyBFcnJvcihhcmdzLmpvaW4oJycpKSk7XG4gICAgfSxcbiAgICB3YXJuKC4uLmFyZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICBsb2FkZXJDb250ZXh0LmVtaXRXYXJuaW5nKG5ldyBFcnJvcihhcmdzLmpvaW4oJycpKSk7XG4gICAgfSxcbiAgICBlcnJvciguLi5hcmdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgbG9hZGVyQ29udGV4dC5lbWl0RXJyb3IobmV3IEVycm9yKGFyZ3Muam9pbignJykpKTtcbiAgICB9LFxuICB9O1xuXG4gIGxldCBmaWxlbmFtZSA9IGxvYWRlckNvbnRleHQucmVzb3VyY2VQYXRoO1xuICBjb25zdCBtYXBPYmplY3QgPVxuICAgIHR5cGVvZiBtYXAgPT09ICdzdHJpbmcnID8gKEpTT04ucGFyc2UobWFwKSBhcyBFeGNsdWRlPExvYWRlclNvdXJjZU1hcCwgc3RyaW5nPikgOiBtYXA7XG4gIGlmIChtYXBPYmplY3Q/LmZpbGUpIHtcbiAgICAvLyBUaGUgZXh0cmFjdG9yJ3MgaW50ZXJuYWwgc291cmNlbWFwIGhhbmRsaW5nIGV4cGVjdHMgdGhlIGZpbGVuYW1lcyB0byBtYXRjaFxuICAgIGZpbGVuYW1lID0gbm9kZVBhdGguam9pbihsb2FkZXJDb250ZXh0LmNvbnRleHQsIG1hcE9iamVjdC5maWxlKTtcbiAgfVxuXG4gIC8vIFNldHVwIGEgdmlydHVhbCBmaWxlIHN5c3RlbSBpbnN0YW5jZSBmb3IgdGhlIGV4dHJhY3RvclxuICAvLyAqIE1lc3NhZ2VFeHRyYWN0b3IgaXRzZWxmIHVzZXMgcmVhZEZpbGUsIHJlbGF0aXZlIGFuZCByZXNvbHZlXG4gIC8vICogSW50ZXJuYWwgU291cmNlRmlsZUxvYWRlciAoc291cmNlbWFwIHN1cHBvcnQpIHVzZXMgZGlybmFtZSwgZXhpc3RzLCByZWFkRmlsZSwgYW5kIHJlc29sdmVcbiAgY29uc3QgZmlsZXN5c3RlbSA9IHtcbiAgICByZWFkRmlsZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgaWYgKHBhdGggPT09IGZpbGVuYW1lKSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfSBlbHNlIGlmIChwYXRoID09PSBmaWxlbmFtZSArICcubWFwJykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG1hcCA9PT0gJ3N0cmluZycgPyBtYXAgOiBKU09OLnN0cmluZ2lmeShtYXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZpbGUgcmVxdWVzdGVkOiAnICsgcGF0aCk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZWxhdGl2ZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIG5vZGVQYXRoLnJlbGF0aXZlKGZyb20sIHRvKTtcbiAgICB9LFxuICAgIHJlc29sdmUoLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBub2RlUGF0aC5yZXNvbHZlKC4uLnBhdGhzKTtcbiAgICB9LFxuICAgIGV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBwYXRoID09PSBmaWxlbmFtZSB8fCBwYXRoID09PSBmaWxlbmFtZSArICcubWFwJztcbiAgICB9LFxuICAgIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBub2RlUGF0aC5kaXJuYW1lKHBhdGgpO1xuICAgIH0sXG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1lc3NhZ2VFeHRyYWN0b3IoZmlsZXN5c3RlbSBhcyBhbnksIGxvZ2dlciwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgYmFzZVBhdGg6IGxvYWRlckNvbnRleHQucm9vdENvbnRleHQgYXMgYW55LFxuICAgIHVzZVNvdXJjZU1hcHM6ICEhbWFwLFxuICB9KTtcblxuICBjb25zdCBtZXNzYWdlcyA9IGV4dHJhY3Rvci5leHRyYWN0TWVzc2FnZXMoZmlsZW5hbWUpO1xuICBpZiAobWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgIG9wdGlvbnM/Lm1lc3NhZ2VIYW5kbGVyKG1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXZ5LWV4dHJhY3QtbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYnVpbGRlcnMvZXh0cmFjdC1pMThuL2l2eS1leHRyYWN0LWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsK0NBQWlDO0FBQ2pDLG1EQUFxRDtBQVNyRCxTQUF3QixxQkFBcUIsQ0FFM0MsT0FBZSxFQUNmLEdBQW9CO0lBRXBCLG9FQUFvRTtJQUNwRSxxR0FBcUc7SUFDckcsNkZBQTZGO0lBQzdGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUU5QixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN2QyxHQUFHLEVBQUU7UUFDSCwwRUFBMEU7UUFDMUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDUixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBdEJELHdDQXNCQztBQUVELEtBQUssVUFBVSxPQUFPLENBQ3BCLGFBQTRFLEVBQzVFLE9BQWUsRUFDZixHQUF5QyxFQUN6QyxPQUFxQztJQUVyQyx5REFBeUQ7SUFDekQsd0dBQXdHO0lBQ3hHLG1HQUFtRztJQUNuRyxJQUFJLGdCQUFnQixDQUFDO0lBQ3JCLElBQUk7UUFDRixxRkFBcUY7UUFDckYs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RUFBRTtRQUNoRSw4REFBOEQ7UUFDOUQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxXQUFrQjtRQUMxQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEdBQUc7S0FDckIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG5vZGVQYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbG9hZEVzbU1vZHVsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWQtZXNtJztcblxuLy8gRXh0cmFjdCBsb2FkZXIgc291cmNlIG1hcCBwYXJhbWV0ZXIgdHlwZSBzaW5jZSBpdCBpcyBub3QgZXhwb3J0ZWQgZGlyZWN0bHlcbnR5cGUgTG9hZGVyU291cmNlTWFwID0gUGFyYW1ldGVyczxpbXBvcnQoJ3dlYnBhY2snKS5Mb2FkZXJEZWZpbml0aW9uRnVuY3Rpb24+WzFdO1xuXG5pbnRlcmZhY2UgTG9jYWxpemVFeHRyYWN0TG9hZGVyT3B0aW9ucyB7XG4gIG1lc3NhZ2VIYW5kbGVyOiAobWVzc2FnZXM6IGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUnKS7JtVBhcnNlZE1lc3NhZ2VbXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9jYWxpemVFeHRyYWN0TG9hZGVyKFxuICB0aGlzOiBpbXBvcnQoJ3dlYnBhY2snKS5Mb2FkZXJDb250ZXh0PExvY2FsaXplRXh0cmFjdExvYWRlck9wdGlvbnM+LFxuICBjb250ZW50OiBzdHJpbmcsXG4gIG1hcDogTG9hZGVyU291cmNlTWFwLFxuKSB7XG4gIC8vIFRoaXMgbG9hZGVyIGlzIG5vdCBjYWNoZWFibGUgZHVlIHRvIGhvdyBtZXNzYWdlIGV4dHJhY3Rpb24gd29ya3MuXG4gIC8vIEV4dHJhY3RlZCBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2Ygd2VicGFjayBwaXBlbGluZSBhbmQgaGVuY2UgdGhleSBjYW5ub3QgYmUgcmV0cmlldmVkIGZyb20gY2FjaGUuXG4gIC8vIFRPRE86IFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBpbiB0aGUgZnV0dXJlIG9uIG1ha2luZyB0aGlzIGRldGVybWluaXN0aWMgYW5kIG1vcmUgY2FjaGVhYmxlLlxuICB0aGlzLmNhY2hlYWJsZShmYWxzZSk7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICBjb25zdCBjYWxsYmFjayA9IHRoaXMuYXN5bmMoKTtcblxuICBleHRyYWN0KHRoaXMsIGNvbnRlbnQsIG1hcCwgb3B0aW9ucykudGhlbihcbiAgICAoKSA9PiB7XG4gICAgICAvLyBQYXNzIHRocm91Z2ggdGhlIG9yaWdpbmFsIGNvbnRlbnQgbm93IHRoYXQgbWVzc2FnZXMgaGF2ZSBiZWVuIGV4dHJhY3RlZFxuICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBjb250ZW50LCBtYXApO1xuICAgIH0sXG4gICAgKGVycm9yKSA9PiB7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdChcbiAgbG9hZGVyQ29udGV4dDogaW1wb3J0KCd3ZWJwYWNrJykuTG9hZGVyQ29udGV4dDxMb2NhbGl6ZUV4dHJhY3RMb2FkZXJPcHRpb25zPixcbiAgY29udGVudDogc3RyaW5nLFxuICBtYXA6IHN0cmluZyB8IExvYWRlclNvdXJjZU1hcCB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogTG9jYWxpemVFeHRyYWN0TG9hZGVyT3B0aW9ucyxcbikge1xuICAvLyBUcnkgdG8gbG9hZCB0aGUgYEBhbmd1bGFyL2xvY2FsaXplYCBtZXNzYWdlIGV4dHJhY3Rvci5cbiAgLy8gQWxsIHRoZSBsb2NhbGl6ZSB1c2FnZXMgYXJlIHNldHVwIHRvIGZpcnN0IHRyeSB0aGUgRVNNIGVudHJ5IHBvaW50IHRoZW4gZmFsbGJhY2sgdG8gdGhlIGRlZXAgaW1wb3J0cy5cbiAgLy8gVGhpcyBwcm92aWRlcyBpbnRlcmltIGNvbXBhdGliaWxpdHkgd2hpbGUgdGhlIGZyYW1ld29yayBpcyB0cmFuc2l0aW9uZWQgdG8gYnVuZGxlZCBFU00gcGFja2FnZXMuXG4gIGxldCBNZXNzYWdlRXh0cmFjdG9yO1xuICB0cnkge1xuICAgIC8vIExvYWQgRVNNIGBAYW5ndWxhci9sb2NhbGl6ZS90b29sc2AgdXNpbmcgdGhlIFR5cGVTY3JpcHQgZHluYW1pYyBpbXBvcnQgd29ya2Fyb3VuZC5cbiAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgY29uc3QgbG9jYWxpemVUb29sc01vZHVsZSA9IGF3YWl0IGxvYWRFc21Nb2R1bGU8dHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnKT4oXG4gICAgICAnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnLFxuICAgICk7XG4gICAgTWVzc2FnZUV4dHJhY3RvciA9IGxvY2FsaXplVG9vbHNNb2R1bGUuTWVzc2FnZUV4dHJhY3RvcjtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBsb2FkIG1lc3NhZ2UgZXh0cmFjdG9yLiBQbGVhc2UgZW5zdXJlICdAYW5ndWxhci9sb2NhbGl6ZScgaXMgaW5zdGFsbGVkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNldHVwIGEgV2VicGFjay1iYXNlZCBsb2dnZXIgaW5zdGFuY2VcbiAgY29uc3QgbG9nZ2VyID0ge1xuICAgIC8vIGxldmVsIDIgaXMgd2FybmluZ3NcbiAgICBsZXZlbDogMixcbiAgICBkZWJ1ZyguLi5hcmdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoLi4uYXJncyk7XG4gICAgfSxcbiAgICBpbmZvKC4uLmFyZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICBsb2FkZXJDb250ZXh0LmVtaXRXYXJuaW5nKG5ldyBFcnJvcihhcmdzLmpvaW4oJycpKSk7XG4gICAgfSxcbiAgICB3YXJuKC4uLmFyZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICBsb2FkZXJDb250ZXh0LmVtaXRXYXJuaW5nKG5ldyBFcnJvcihhcmdzLmpvaW4oJycpKSk7XG4gICAgfSxcbiAgICBlcnJvciguLi5hcmdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgbG9hZGVyQ29udGV4dC5lbWl0RXJyb3IobmV3IEVycm9yKGFyZ3Muam9pbignJykpKTtcbiAgICB9LFxuICB9O1xuXG4gIGxldCBmaWxlbmFtZSA9IGxvYWRlckNvbnRleHQucmVzb3VyY2VQYXRoO1xuICBjb25zdCBtYXBPYmplY3QgPVxuICAgIHR5cGVvZiBtYXAgPT09ICdzdHJpbmcnID8gKEpTT04ucGFyc2UobWFwKSBhcyBFeGNsdWRlPExvYWRlclNvdXJjZU1hcCwgc3RyaW5nPikgOiBtYXA7XG4gIGlmIChtYXBPYmplY3Q/LmZpbGUpIHtcbiAgICAvLyBUaGUgZXh0cmFjdG9yJ3MgaW50ZXJuYWwgc291cmNlbWFwIGhhbmRsaW5nIGV4cGVjdHMgdGhlIGZpbGVuYW1lcyB0byBtYXRjaFxuICAgIGZpbGVuYW1lID0gbm9kZVBhdGguam9pbihsb2FkZXJDb250ZXh0LmNvbnRleHQsIG1hcE9iamVjdC5maWxlKTtcbiAgfVxuXG4gIC8vIFNldHVwIGEgdmlydHVhbCBmaWxlIHN5c3RlbSBpbnN0YW5jZSBmb3IgdGhlIGV4dHJhY3RvclxuICAvLyAqIE1lc3NhZ2VFeHRyYWN0b3IgaXRzZWxmIHVzZXMgcmVhZEZpbGUsIHJlbGF0aXZlIGFuZCByZXNvbHZlXG4gIC8vICogSW50ZXJuYWwgU291cmNlRmlsZUxvYWRlciAoc291cmNlbWFwIHN1cHBvcnQpIHVzZXMgZGlybmFtZSwgZXhpc3RzLCByZWFkRmlsZSwgYW5kIHJlc29sdmVcbiAgY29uc3QgZmlsZXN5c3RlbSA9IHtcbiAgICByZWFkRmlsZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgaWYgKHBhdGggPT09IGZpbGVuYW1lKSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfSBlbHNlIGlmIChwYXRoID09PSBmaWxlbmFtZSArICcubWFwJykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG1hcCA9PT0gJ3N0cmluZycgPyBtYXAgOiBKU09OLnN0cmluZ2lmeShtYXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZpbGUgcmVxdWVzdGVkOiAnICsgcGF0aCk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZWxhdGl2ZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIG5vZGVQYXRoLnJlbGF0aXZlKGZyb20sIHRvKTtcbiAgICB9LFxuICAgIHJlc29sdmUoLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBub2RlUGF0aC5yZXNvbHZlKC4uLnBhdGhzKTtcbiAgICB9LFxuICAgIGV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBwYXRoID09PSBmaWxlbmFtZSB8fCBwYXRoID09PSBmaWxlbmFtZSArICcubWFwJztcbiAgICB9LFxuICAgIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBub2RlUGF0aC5kaXJuYW1lKHBhdGgpO1xuICAgIH0sXG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1lc3NhZ2VFeHRyYWN0b3IoZmlsZXN5c3RlbSBhcyBhbnksIGxvZ2dlciwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgYmFzZVBhdGg6IGxvYWRlckNvbnRleHQucm9vdENvbnRleHQgYXMgYW55LFxuICAgIHVzZVNvdXJjZU1hcHM6ICEhbWFwLFxuICB9KTtcblxuICBjb25zdCBtZXNzYWdlcyA9IGV4dHJhY3Rvci5leHRyYWN0TWVzc2FnZXMoZmlsZW5hbWUpO1xuICBpZiAobWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgIG9wdGlvbnM/Lm1lc3NhZ2VIYW5kbGVyKG1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
|
|
@@ -63,7 +63,7 @@ class FindTestsPlugin {
|
|
|
63
63
|
throw new Error(`Cannot find 'main' entrypoint.`);
|
|
64
64
|
}
|
|
65
65
|
if (specFiles.length) {
|
|
66
|
-
originalImport
|
|
66
|
+
originalImport ?? (originalImport = entrypoint.import);
|
|
67
67
|
entrypoint.import = [...originalImport, ...specFiles];
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
@@ -129,7 +129,7 @@ async function isDirectory(path) {
|
|
|
129
129
|
const stats = await fs_1.promises.stat(path);
|
|
130
130
|
return stats.isDirectory();
|
|
131
131
|
}
|
|
132
|
-
catch
|
|
132
|
+
catch {
|
|
133
133
|
return false;
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -138,8 +138,8 @@ async function exists(path) {
|
|
|
138
138
|
await fs_1.promises.access(path, fs_1.constants.F_OK);
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
|
-
catch
|
|
141
|
+
catch {
|
|
142
142
|
return false;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC10ZXN0cy1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9rYXJtYS9maW5kLXRlc3RzLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILG9EQUE0QjtBQUM1QiwyQkFBeUQ7QUFDekQsNkNBQXNDO0FBQ3RDLHFFQUFxRDtBQUNyRCwrQkFBa0U7QUFDbEUsK0JBQWlDO0FBR2pDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0JBQVMsRUFBQyxjQUFJLENBQUMsQ0FBQztBQUVwQzs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBU2hELE1BQWEsZUFBZTtJQUcxQixZQUFvQixPQUErQjtRQUEvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtJQUFHLENBQUM7SUFFdkQsS0FBSyxDQUFDLFFBQWtCO1FBQ3RCLE1BQU0sRUFDSixPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFDMUIsT0FBTyxHQUFHLEVBQUUsRUFDWixpQkFBaUIsRUFDakIsYUFBYSxHQUNkLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUNULE9BQU8sY0FBYyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUU3RixJQUFJLGNBQW9DLENBQUM7UUFFekMsK0NBQStDO1FBQy9DLGNBQWMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDaEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxTQUFTLENBQUMs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QUFJO1FBQ0YsTUFBTSxhQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUFDLFdBQU07UUFDTixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBQYXRoTGlrZSwgY29uc3RhbnRzLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCBnbG9iLCB7IGhhc01hZ2ljIH0gZnJvbSAnZ2xvYic7XG5pbXBvcnQgeyBwbHVnaW5OYW1lIH0gZnJvbSAnbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4nO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlbGF0aXZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQ29tcGlsYXRpb24sIENvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5cbmNvbnN0IGdsb2JQcm9taXNlID0gcHJvbWlzaWZ5KGdsb2IpO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gcHJvdmlkZWQgdG8gV2VicGFjayB3aGVuIHRhcHBpbmcgV2VicGFjayBjb21waWxlciBob29rcy5cbiAqL1xuY29uc3QgUExVR0lOX05BTUUgPSAnYW5ndWxhci1maW5kLXRlc3RzLXBsdWdpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmluZFRlc3RzUGx1Z2luT3B0aW9ucyB7XG4gIGluY2x1ZGU/OiBzdHJpbmdbXTtcbiAgZXhjbHVkZT86IHN0cmluZ1tdO1xuICB3b3Jrc3BhY2VSb290OiBzdHJpbmc7XG4gIHByb2plY3RTb3VyY2VSb290OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGaW5kVGVzdHNQbHVnaW4ge1xuICBwcml2YXRlIGNvbXBpbGF0aW9uOiBDb21waWxhdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEZpbmRUZXN0c1BsdWdpbk9wdGlvbnMpIHt9XG5cbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgaW5jbHVkZSA9IFsnKiovKi5zcGVjLnRzJ10sXG4gICAgICBleGNsdWRlID0gW10sXG4gICAgICBwcm9qZWN0U291cmNlUm9vdCxcbiAgICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgfSA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCB3ZWJwYWNrT3B0aW9ucyA9IGNvbXBpbGVyLm9wdGlvbnM7XG4gICAgY29uc3QgZW50cnkgPVxuICAgICAgdHlwZW9mIHdlYnBhY2tPcHRpb25zLmVudHJ5ID09PSAnZnVuY3Rpb24nID8gd2VicGFja09wdGlvbnMuZW50cnkoKSA6IHdlYnBhY2tPcHRpb25zLmVudHJ5O1xuXG4gICAgbGV0IG9yaWdpbmFsSW1wb3J0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAgIC8vIEFkZCB0ZXN0cyBmaWxlcyBhcmUgcGFydCBvZiB0aGUgZW50cnktcG9pbnQuXG4gICAgd2VicGFja09wdGlvbnMuZW50cnkgPSBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzcGVjRmlsZXMgPSBhd2FpdCBmaW5kVGVzdHMoaW5jbHVkZSwgZXhjbHVkZSwgd29ya3NwYWNlUm9vdCwgcHJvamVjdFNvdXJjZVJvb3QpO1xuICAgICAgY29uc3QgZW50cnlwb2ludHMgPSBhd2FpdCBlbnRyeTtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBlbnRyeXBvaW50c1snbWFpbiddO1xuICAgICAgaWYgKCFlbnRyeXBvaW50LmltcG9ydCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kICdtYWluJyBlbnRyeXBvaW50LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3BlY0ZpbGVzLmxlbmd0aCkge1xuICAgICAgICBvcmlnaW5hbEltcG9ydCA/Pz0gZW50cnlwb2ludC5pbXBvcnQ7XG4gICAgICAgIGVudHJ5cG9pbnQuaW1wb3J0ID0gWy4uLm9yaWdpbmFsSW1wb3J0LCAuLi5zcGVjRmlsZXNdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KHRoaXMuY29tcGlsYXRpb24sICdDb21waWxhdGlvbiBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgICAgICB0aGlzLmNvbXBpbGF0aW9uXG4gICAgICAgICAgLmdldExvZ2dlcihwbHVnaW5OYW1lKVxuICAgICAgICAgIC5lcnJvcihgU3BlY2lmaWVkIHBhdHRlcm5zOiBcIiR7aW5jbHVkZS5qb2luKCcsICcpfVwiIGRpZCBub3QgbWF0Y2ggYW55IHNwZWMgZmlsZXMuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbnRyeXBvaW50cztcbiAgICB9O1xuXG4gICAgY29tcGlsZXIuaG9va3MudGhpc0NvbXBpbGF0aW9uLnRhcChQTFVHSU5fTkFNRSwgKGNvbXBpbGF0aW9uKSA9PiB7XG4gICAgICB0aGlzLmNvbXBpbGF0aW9uID0gY29tcGlsYXRpb247XG4gICAgICBjb21waWxhdGlvbi5jb250ZXh0RGVwZW5kZW5jaWVzLmFkZChwcm9qZWN0U291cmNlUm9vdCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gZ28gdGhyb3VnaCBhbGwgcGF0dGVybnMgYW5kIGZpbmQgdW5pcXVlIGxpc3Qgb2YgZmlsZXNcbmFzeW5jIGZ1bmN0aW9uIGZpbmRUZXN0cyhcbiAgaW5jbHVkZTogc3RyaW5nW10sXG4gIGV4Y2x1ZGU6IHN0cmluZ1tdLFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIHByb2plY3RTb3VyY2VSb290OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG1hdGNoaW5nVGVzdHNQcm9taXNlcyA9IGluY2x1ZGUubWFwKChwYXR0ZXJuKSA9PlxuICAgIGZpbmRNYXRjaGluZ1Rlc3RzKHBhdHRlcm4sIGV4Y2x1ZGUsIHdvcmtzcGFjZVJvb3QsIHByb2plY3RTb3VyY2VSb290KSxcbiAgKTtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBQcm9taXNlLmFsbChtYXRjaGluZ1Rlc3RzUHJvbWlzZXMpO1xuXG4gIC8vIFVuaXF1ZSBmaWxlIG5hbWVzXG4gIHJldHVybiBbLi4ubmV3IFNldChmaWxlcy5mbGF0KCkpXTtcbn1cblxuY29uc3Qgbm9ybWFsaXplUGF0aCA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4gcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmRNYXRjaGluZ1Rlc3RzKFxuICBwYXR0ZXJuOiBzdHJpbmcsXG4gIGlnbm9yZTogc3RyaW5nW10sXG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZyxcbiAgcHJvamVjdFNvdXJjZVJvb3Q6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgLy8gbm9ybWFsaXplIHBhdHRlcm4sIGdsb2IgbGliIG9ubHkgYWNjZXB0cyBmb3J3YXJkIHNsYXNoZXNcbiAgbGV0IG5vcm1hbGl6ZWRQYXR0ZXJuID0gbm9ybWFsaXplUGF0aChwYXR0ZXJuKTtcbiAgaWYgKG5vcm1hbGl6ZWRQYXR0ZXJuLmNoYXJBdCgwKSA9PT0gJy8nKSB7XG4gICAgbm9ybWFsaXplZFBhdHRlcm4gPSBub3JtYWxpemVkUGF0dGVybi5zdWJzdHJpbmcoMSk7XG4gIH1cblxuICBjb25zdCByZWxhdGl2ZVByb2plY3RSb290ID0gbm9ybWFsaXplUGF0aChyZWxhdGl2ZSh3b3Jrc3BhY2VSb290LCBwcm9qZWN0U291cmNlUm9vdCkgKyAnLycpO1xuXG4gIC8vIHJlbW92ZSByZWxhdGl2ZVByb2plY3RSb290IHRvIHN1cHBvcnQgcmVsYXRpdmUgcGF0aHMgZnJvbSByb290XG4gIC8vIHN1Y2ggcGF0aHMgYXJlIGVhc3kgdG8gZ2V0IHdoZW4gcnVubmluZyBzY3JpcHRzIHZpYSBJREVzXG4gIGlmIChub3JtYWxpemVkUGF0dGVybi5zdGFydHNXaXRoKHJlbGF0aXZlUHJvamVjdFJvb3QpKSB7XG4gICAgbm9ybWFsaXplZFBhdHRlcm4gPSBub3JtYWxpemVkUGF0dGVybi5zdWJzdHJpbmcocmVsYXRpdmVQcm9qZWN0Um9vdC5sZW5ndGgpO1xuICB9XG5cbiAgLy8gc3BlY2lhbCBsb2dpYyB3aGVuIHBhdHRlcm4gZG9lcyBub3QgbG9vayBsaWtlIGEgZ2xvYlxuICBpZiAoIWhhc01hZ2ljKG5vcm1hbGl6ZWRQYXR0ZXJuKSkge1xuICAgIGlmIChhd2FpdCBpc0RpcmVjdG9yeShqb2luKHByb2plY3RTb3VyY2VSb290LCBub3JtYWxpemVkUGF0dGVybikpKSB7XG4gICAgICBub3JtYWxpemVkUGF0dGVybiA9IGAke25vcm1hbGl6ZWRQYXR0ZXJufS8qKi8qLnNwZWMuQCh0c3x0c3gpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2VlIGlmIG1hdGNoaW5nIHNwZWMgZmlsZSBleGlzdHNcbiAgICAgIGNvbnN0IGZpbGVFeHQgPSBleHRuYW1lKG5vcm1hbGl6ZWRQYXR0ZXJuKTtcbiAgICAgIC8vIFJlcGxhY2UgZXh0ZW5zaW9uIHRvIGAuc3BlYy5leHRgLiBFeGFtcGxlOiBgc3JjL2FwcC9hcHAuY29tcG9uZW50LnRzYC0+IGBzcmMvYXBwL2FwcC5jb21wb25lbnQuc3BlYy50c2BcbiAgICAgIGNvbnN0IHBvdGVudGlhbFNwZWMgPSBqb2luKFxuICAgICAgICBwcm9qZWN0U291cmNlUm9vdCxcbiAgICAgICAgZGlybmFtZShub3JtYWxpemVkUGF0dGVybiksXG4gICAgICAgIGAke2Jhc2VuYW1lKG5vcm1hbGl6ZWRQYXR0ZXJuLCBmaWxlRXh0KX0uc3BlYyR7ZmlsZUV4dH1gLFxuICAgICAgKTtcblxuICAgICAgaWYgKGF3YWl0IGV4aXN0cyhwb3RlbnRpYWxTcGVjKSkge1xuICAgICAgICByZXR1cm4gW3BvdGVudGlhbFNwZWNdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBnbG9iUHJvbWlzZShub3JtYWxpemVkUGF0dGVybiwge1xuICAgIGN3ZDogcHJvamVjdFNvdXJjZVJvb3QsXG4gICAgcm9vdDogcHJvamVjdFNvdXJjZVJvb3QsXG4gICAgbm9tb3VudDogdHJ1ZSxcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgLi4uaWdub3JlXSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzRGlyZWN0b3J5KHBhdGg6IFBhdGhMaWtlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmcy5zdGF0KHBhdGgpO1xuXG4gICAgcmV0dXJuIHN0YXRzLmlzRGlyZWN0b3J5KCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleGlzdHMocGF0aDogUGF0aExpa2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5hY2Nlc3MocGF0aCwgY29uc3RhbnRzLkZfT0spO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC10ZXN0cy1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9rYXJtYS9maW5kLXRlc3RzLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILG9EQUE0QjtBQUM1QiwyQkFBeUQ7QUFDekQsNkNBQXNDO0FBQ3RDLHFFQUFxRDtBQUNyRCwrQkFBa0U7QUFDbEUsK0JBQWlDO0FBR2pDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0JBQVMsRUFBQyxjQUFJLENBQUMsQ0FBQztBQUVwQzs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBU2hELE1BQWEsZUFBZTtJQUcxQixZQUFvQixPQUErQjtRQUEvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtJQUFHLENBQUM7SUFFdkQsS0FBSyxDQUFDLFFBQWtCO1FBQ3RCLE1BQU0sRUFDSixPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFDMUIsT0FBTyxHQUFHLEVBQUUsRUFDWixpQkFBaUIsRUFDakIsYUFBYSxHQUNkLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUNULE9BQU8sY0FBYyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUU3RixJQUFJLGNBQW9DLENBQUM7UUFFekMsK0NBQStDO1FBQy9DLGNBQWMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDaEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxTQUFTLENBQUMs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QUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFBQyxNQUFNO1FBQ04sT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUGF0aExpa2UsIGNvbnN0YW50cywgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgZ2xvYiwgeyBoYXNNYWdpYyB9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHsgcGx1Z2luTmFtZSB9IGZyb20gJ21pbmktY3NzLWV4dHJhY3QtcGx1Z2luJztcbmltcG9ydCB7IGJhc2VuYW1lLCBkaXJuYW1lLCBleHRuYW1lLCBqb2luLCByZWxhdGl2ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGF0aW9uLCBDb21waWxlciB9IGZyb20gJ3dlYnBhY2snO1xuXG5jb25zdCBnbG9iUHJvbWlzZSA9IHByb21pc2lmeShnbG9iKTtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHByb3ZpZGVkIHRvIFdlYnBhY2sgd2hlbiB0YXBwaW5nIFdlYnBhY2sgY29tcGlsZXIgaG9va3MuXG4gKi9cbmNvbnN0IFBMVUdJTl9OQU1FID0gJ2FuZ3VsYXItZmluZC10ZXN0cy1wbHVnaW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRUZXN0c1BsdWdpbk9wdGlvbnMge1xuICBpbmNsdWRlPzogc3RyaW5nW107XG4gIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nO1xuICBwcm9qZWN0U291cmNlUm9vdDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRmluZFRlc3RzUGx1Z2luIHtcbiAgcHJpdmF0ZSBjb21waWxhdGlvbjogQ29tcGlsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBGaW5kVGVzdHNQbHVnaW5PcHRpb25zKSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcik6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGluY2x1ZGUgPSBbJyoqLyouc3BlYy50cyddLFxuICAgICAgZXhjbHVkZSA9IFtdLFxuICAgICAgcHJvamVjdFNvdXJjZVJvb3QsXG4gICAgICB3b3Jrc3BhY2VSb290LFxuICAgIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3Qgd2VicGFja09wdGlvbnMgPSBjb21waWxlci5vcHRpb25zO1xuICAgIGNvbnN0IGVudHJ5ID1cbiAgICAgIHR5cGVvZiB3ZWJwYWNrT3B0aW9ucy5lbnRyeSA9PT0gJ2Z1bmN0aW9uJyA/IHdlYnBhY2tPcHRpb25zLmVudHJ5KCkgOiB3ZWJwYWNrT3B0aW9ucy5lbnRyeTtcblxuICAgIGxldCBvcmlnaW5hbEltcG9ydDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgICAvLyBBZGQgdGVzdHMgZmlsZXMgYXJlIHBhcnQgb2YgdGhlIGVudHJ5LXBvaW50LlxuICAgIHdlYnBhY2tPcHRpb25zLmVudHJ5ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BlY0ZpbGVzID0gYXdhaXQgZmluZFRlc3RzKGluY2x1ZGUsIGV4Y2x1ZGUsIHdvcmtzcGFjZVJvb3QsIHByb2plY3RTb3VyY2VSb290KTtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnRzID0gYXdhaXQgZW50cnk7XG4gICAgICBjb25zdCBlbnRyeXBvaW50ID0gZW50cnlwb2ludHNbJ21haW4nXTtcbiAgICAgIGlmICghZW50cnlwb2ludC5pbXBvcnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnbWFpbicgZW50cnlwb2ludC5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNwZWNGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgb3JpZ2luYWxJbXBvcnQgPz89IGVudHJ5cG9pbnQuaW1wb3J0O1xuICAgICAgICBlbnRyeXBvaW50LmltcG9ydCA9IFsuLi5vcmlnaW5hbEltcG9ydCwgLi4uc3BlY0ZpbGVzXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCh0aGlzLmNvbXBpbGF0aW9uLCAnQ29tcGlsYXRpb24gY2Fubm90IGJlIHVuZGVmaW5lZC4nKTtcbiAgICAgICAgdGhpcy5jb21waWxhdGlvblxuICAgICAgICAgIC5nZXRMb2dnZXIocGx1Z2luTmFtZSlcbiAgICAgICAgICAuZXJyb3IoYFNwZWNpZmllZCBwYXR0ZXJuczogXCIke2luY2x1ZGUuam9pbignLCAnKX1cIiBkaWQgbm90IG1hdGNoIGFueSBzcGVjIGZpbGVzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50cnlwb2ludHM7XG4gICAgfTtcblxuICAgIGNvbXBpbGVyLmhvb2tzLnRoaXNDb21waWxhdGlvbi50YXAoUExVR0lOX05BTUUsIChjb21waWxhdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb21waWxhdGlvbiA9IGNvbXBpbGF0aW9uO1xuICAgICAgY29tcGlsYXRpb24uY29udGV4dERlcGVuZGVuY2llcy5hZGQocHJvamVjdFNvdXJjZVJvb3QpO1xuICAgIH0pO1xuICB9XG59XG5cbi8vIGdvIHRocm91Z2ggYWxsIHBhdHRlcm5zIGFuZCBmaW5kIHVuaXF1ZSBsaXN0IG9mIGZpbGVzXG5hc3luYyBmdW5jdGlvbiBmaW5kVGVzdHMoXG4gIGluY2x1ZGU6IHN0cmluZ1tdLFxuICBleGNsdWRlOiBzdHJpbmdbXSxcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nLFxuICBwcm9qZWN0U291cmNlUm9vdDogc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBtYXRjaGluZ1Rlc3RzUHJvbWlzZXMgPSBpbmNsdWRlLm1hcCgocGF0dGVybikgPT5cbiAgICBmaW5kTWF0Y2hpbmdUZXN0cyhwYXR0ZXJuLCBleGNsdWRlLCB3b3Jrc3BhY2VSb290LCBwcm9qZWN0U291cmNlUm9vdCksXG4gICk7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwobWF0Y2hpbmdUZXN0c1Byb21pc2VzKTtcblxuICAvLyBVbmlxdWUgZmlsZSBuYW1lc1xuICByZXR1cm4gWy4uLm5ldyBTZXQoZmlsZXMuZmxhdCgpKV07XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVBhdGggPSAocGF0aDogc3RyaW5nKTogc3RyaW5nID0+IHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG5hc3luYyBmdW5jdGlvbiBmaW5kTWF0Y2hpbmdUZXN0cyhcbiAgcGF0dGVybjogc3RyaW5nLFxuICBpZ25vcmU6IHN0cmluZ1tdLFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIHByb2plY3RTb3VyY2VSb290OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIC8vIG5vcm1hbGl6ZSBwYXR0ZXJuLCBnbG9iIGxpYiBvbmx5IGFjY2VwdHMgZm9yd2FyZCBzbGFzaGVzXG4gIGxldCBub3JtYWxpemVkUGF0dGVybiA9IG5vcm1hbGl6ZVBhdGgocGF0dGVybik7XG4gIGlmIChub3JtYWxpemVkUGF0dGVybi5jaGFyQXQoMCkgPT09ICcvJykge1xuICAgIG5vcm1hbGl6ZWRQYXR0ZXJuID0gbm9ybWFsaXplZFBhdHRlcm4uc3Vic3RyaW5nKDEpO1xuICB9XG5cbiAgY29uc3QgcmVsYXRpdmVQcm9qZWN0Um9vdCA9IG5vcm1hbGl6ZVBhdGgocmVsYXRpdmUod29ya3NwYWNlUm9vdCwgcHJvamVjdFNvdXJjZVJvb3QpICsgJy8nKTtcblxuICAvLyByZW1vdmUgcmVsYXRpdmVQcm9qZWN0Um9vdCB0byBzdXBwb3J0IHJlbGF0aXZlIHBhdGhzIGZyb20gcm9vdFxuICAvLyBzdWNoIHBhdGhzIGFyZSBlYXN5IHRvIGdldCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB2aWEgSURFc1xuICBpZiAobm9ybWFsaXplZFBhdHRlcm4uc3RhcnRzV2l0aChyZWxhdGl2ZVByb2plY3RSb290KSkge1xuICAgIG5vcm1hbGl6ZWRQYXR0ZXJuID0gbm9ybWFsaXplZFBhdHRlcm4uc3Vic3RyaW5nKHJlbGF0aXZlUHJvamVjdFJvb3QubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIHNwZWNpYWwgbG9naWMgd2hlbiBwYXR0ZXJuIGRvZXMgbm90IGxvb2sgbGlrZSBhIGdsb2JcbiAgaWYgKCFoYXNNYWdpYyhub3JtYWxpemVkUGF0dGVybikpIHtcbiAgICBpZiAoYXdhaXQgaXNEaXJlY3Rvcnkoam9pbihwcm9qZWN0U291cmNlUm9vdCwgbm9ybWFsaXplZFBhdHRlcm4pKSkge1xuICAgICAgbm9ybWFsaXplZFBhdHRlcm4gPSBgJHtub3JtYWxpemVkUGF0dGVybn0vKiovKi5zcGVjLkAodHN8dHN4KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlZSBpZiBtYXRjaGluZyBzcGVjIGZpbGUgZXhpc3RzXG4gICAgICBjb25zdCBmaWxlRXh0ID0gZXh0bmFtZShub3JtYWxpemVkUGF0dGVybik7XG4gICAgICAvLyBSZXBsYWNlIGV4dGVuc2lvbiB0byBgLnNwZWMuZXh0YC4gRXhhbXBsZTogYHNyYy9hcHAvYXBwLmNvbXBvbmVudC50c2AtPiBgc3JjL2FwcC9hcHAuY29tcG9uZW50LnNwZWMudHNgXG4gICAgICBjb25zdCBwb3RlbnRpYWxTcGVjID0gam9pbihcbiAgICAgICAgcHJvamVjdFNvdXJjZVJvb3QsXG4gICAgICAgIGRpcm5hbWUobm9ybWFsaXplZFBhdHRlcm4pLFxuICAgICAgICBgJHtiYXNlbmFtZShub3JtYWxpemVkUGF0dGVybiwgZmlsZUV4dCl9LnNwZWMke2ZpbGVFeHR9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChhd2FpdCBleGlzdHMocG90ZW50aWFsU3BlYykpIHtcbiAgICAgICAgcmV0dXJuIFtwb3RlbnRpYWxTcGVjXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2xvYlByb21pc2Uobm9ybWFsaXplZFBhdHRlcm4sIHtcbiAgICBjd2Q6IHByb2plY3RTb3VyY2VSb290LFxuICAgIHJvb3Q6IHByb2plY3RTb3VyY2VSb290LFxuICAgIG5vbW91bnQ6IHRydWUsXG4gICAgYWJzb2x1dGU6IHRydWUsXG4gICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsIC4uLmlnbm9yZV0sXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0RpcmVjdG9yeShwYXRoOiBQYXRoTGlrZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgZnMuc3RhdChwYXRoKTtcblxuICAgIHJldHVybiBzdGF0cy5pc0RpcmVjdG9yeSgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhpc3RzKHBhdGg6IFBhdGhMaWtlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuYWNjZXNzKHBhdGgsIGNvbnN0YW50cy5GX09LKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|