@wavemaker/app-ng-runtime 11.14.1-18.6421 → 11.14.1-18.6427
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/components/base/bundles/index.umd.js +17 -81
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base.component.mjs +6 -61
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -7
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
- package/components/base/fesm2022/index.mjs +18 -82
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/basic/label/bundles/index.umd.js +1 -9
- package/components/basic/label/esm2022/label.directive.mjs +2 -10
- package/components/basic/label/fesm2022/index.mjs +1 -9
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/chart/bundles/index.umd.js +2 -2
- package/components/chart/esm2022/chart.utils.mjs +3 -3
- package/components/chart/fesm2022/index.mjs +2 -2
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/bundles/index.umd.js +2 -21
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +1 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +3 -20
- package/components/containers/wizard/fesm2022/index.mjs +2 -21
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +0 -2
- package/components/data/pagination/bundles/index.umd.js +0 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +1 -5
- package/components/data/pagination/fesm2022/index.mjs +0 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +14 -370
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -107
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +1 -9
- package/components/data/table/esm2022/table-cud.directive.mjs +2 -8
- package/components/data/table/esm2022/table-filter.directive.mjs +2 -12
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +1 -8
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table.component.mjs +12 -219
- package/components/data/table/fesm2022/index.mjs +15 -371
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +2 -3
- package/components/data/table/table-column/table-column.directive.d.ts +2 -3
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -3
- package/components/data/table/table-cud.directive.d.ts +1 -3
- package/components/data/table/table-filter.directive.d.ts +1 -3
- package/components/data/table/table-row/table-row.directive.d.ts +2 -3
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -3
- package/components/data/table/table.component.d.ts +2 -6
- package/components/navigation/menu/bundles/index.umd.js +0 -5
- package/components/navigation/menu/esm2022/menu.component.mjs +1 -6
- package/components/navigation/menu/fesm2022/index.mjs +0 -5
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +6 -6
- package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
- package/components/navigation/popover/fesm2022/index.mjs +3 -3
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +0 -6
- package/core/bundles/index.umd.js +15 -120
- package/core/esm2022/public_api.mjs +2 -2
- package/core/esm2022/utils/utils.mjs +2 -6
- package/core/esm2022/utils/watcher.mjs +15 -118
- package/core/fesm2022/index.mjs +15 -124
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +1 -1
- package/core/utils/utils.d.ts +0 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +2 -3
- package/runtime/base/esm2022/components/base-page.component.mjs +1 -2
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
- package/runtime/base/fesm2022/index.mjs +2 -3
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/bundles/index.umd.js +0 -4
- package/runtime/dynamic/esm2022/app/app.config.mjs +2 -6
- package/runtime/dynamic/fesm2022/index.mjs +1 -5
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +15 -103
package/core/public_api.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { appendNode, insertBefore, insertAfter, removeNode, removeClass, addClas
|
|
|
4
4
|
export * from './enums/enums';
|
|
5
5
|
export * from './utils/event-notifier';
|
|
6
6
|
export { ParseExprResult, $parseExpr, $parseEvent, registerFnByExpr, setPipeProvider, getFnByExpr, getFnForBindExpr, getFnForEventExpr } from './utils/expression-parser';
|
|
7
|
-
export { EVENT_LIFE, isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile,
|
|
7
|
+
export { EVENT_LIFE, isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent, getNavClass, getSheetPositionClass } from './utils/utils';
|
|
8
8
|
export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
|
|
9
9
|
export * from './utils/id-generator';
|
|
10
10
|
export * from './types/types';
|
package/core/utils/utils.d.ts
CHANGED
|
@@ -50,7 +50,6 @@ export declare const isImageFile: (fileName: any) => boolean;
|
|
|
50
50
|
export declare const isAudioFile: (fileName: any) => boolean;
|
|
51
51
|
export declare const isVideoFile: (fileName: any) => boolean;
|
|
52
52
|
export declare const isValidWebURL: (url: string) => boolean;
|
|
53
|
-
export declare const isValidImageUrl: (url: string) => boolean;
|
|
54
53
|
export declare const getResourceURL: (urlString: any) => any;
|
|
55
54
|
export declare function triggerFn(fn: any, ...argmnts: any[]): any;
|
|
56
55
|
/**
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.14.1-18.
|
|
3
|
+
"version": "11.14.1-18.6427",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.14.1-18.
|
|
9
|
+
"version": "11.14.1-18.6427",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.14.1-18.
|
|
3
|
+
"version": "11.14.1-18.6427",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.14.1-18.
|
|
9
|
+
"version": "11.14.1-18.6427",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package.json
CHANGED
|
@@ -1286,7 +1286,6 @@
|
|
|
1286
1286
|
});
|
|
1287
1287
|
}
|
|
1288
1288
|
ngOnDestroy() {
|
|
1289
|
-
// MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
|
|
1290
1289
|
//this.captureApplicationThumbnail();
|
|
1291
1290
|
this.savePageSnapShot();
|
|
1292
1291
|
this.destroy$.complete();
|
|
@@ -3005,7 +3004,7 @@
|
|
|
3005
3004
|
this.preparePipeMeta(i5.CurrencyPipe, 'currency', true, [this._locale]),
|
|
3006
3005
|
this.preparePipeMeta(i5.DatePipe, 'date', true, [this._locale]),
|
|
3007
3006
|
this.preparePipeMeta(base.ToDatePipe, 'toDate', true, [
|
|
3008
|
-
new i5.DatePipe(this._locale), undefined, this.injector.get(i1.
|
|
3007
|
+
new i5.DatePipe(this._locale), undefined, this.injector.get(i1.CustomPipeManager)
|
|
3009
3008
|
]),
|
|
3010
3009
|
this.preparePipeMeta(base.ToNumberPipe, 'toNumber', true, [
|
|
3011
3010
|
new i5.DecimalPipe(this._locale),
|
|
@@ -3022,7 +3021,7 @@
|
|
|
3022
3021
|
new i5.DecimalPipe(this._locale)
|
|
3023
3022
|
]),
|
|
3024
3023
|
this.preparePipeMeta(base.StringToNumberPipe, 'stringToNumber', true),
|
|
3025
|
-
this.preparePipeMeta(base.CustomPipe, 'custom', true, [this.injector.get(i1.
|
|
3024
|
+
this.preparePipeMeta(base.CustomPipe, 'custom', true, [this.injector.get(i1.CustomPipeManager)]),
|
|
3026
3025
|
this.preparePipeMeta(base.TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
3027
3026
|
this.preparePipeMeta(base.SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
3028
3027
|
this.preparePipeMeta(base.TemplateReplacePipe, 'templateReplace', true),
|
|
@@ -257,7 +257,6 @@ export class BasePageComponent extends FragmentMonitor {
|
|
|
257
257
|
});
|
|
258
258
|
}
|
|
259
259
|
ngOnDestroy() {
|
|
260
|
-
// MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
|
|
261
260
|
//this.captureApplicationThumbnail();
|
|
262
261
|
this.savePageSnapShot();
|
|
263
262
|
this.destroy$.complete();
|
|
@@ -355,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
355
354
|
type: HostListener,
|
|
356
355
|
args: ['window:beforeunload']
|
|
357
356
|
}] } });
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixHQUFHLEVBQ0gsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxZQUFZLEVBQ1osUUFBUSxFQUNYLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQU12QyxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLGVBQWU7SUFEL0Q7O1FBa0JJLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMv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Q0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDOUMsQ0FBQztJQUNMLENBQUM7K0dBalppQixpQkFBaUI7bUdBQWpCLGlCQUFpQiw0SUFtQnhCLGFBQWE7OzRGQW5CTixpQkFBaUI7a0JBRHRDLFNBQVM7OEJBb0JvQixhQUFhO3NCQUF0QyxTQUFTO3VCQUFDLGFBQWE7Z0JBaVB4QixhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQXBwLFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzSW9zLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICBub29wLFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgU2NyaXB0TG9hZGVyU2VydmljZSxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICBVdGlsc1NlcnZpY2UsXG4gICAgVmlld3BvcnRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtQYWdlRGlyZWN0aXZlfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29tbW9uUGFydGlhbFdpZGdldHN9IGZyb20gJy4vYmFzZS1wYXJ0aWFsLmNvbXBvbmVudCc7XG5cblxuaW1wb3J0IHtWYXJpYWJsZXNTZXJ2aWNlfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7QXBwTWFuYWdlclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtGcmFnbWVudE1vbml0b3J9IGZyb20gJy4uL3V0aWwvZnJhZ21lbnQtbW9uaXRvcic7XG5pbXBvcnQge0NBQ0hFX1BBR0V9IGZyb20gJy4uL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuaW1wb3J0IHtlYWNoLCBleHRlbmR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuZGVjbGFyZSBjb25zdCBodG1sMmNhbnZhcztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVBhZ2VDb21wb25lbnQgZXh0ZW5kcyBGcmFnbWVudE1vbml0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHN0YXRpYyBsYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICBXaWRnZXRzOiBhbnk7XG4gICAgVmFyaWFibGVzOiBhbnk7XG4gICAgQWN0aW9uczogYW55O1xuICAgIEFwcDogQXBwO1xuICAgIGluamVjdG9yOiBJbmplY3RvcjtcbiAgICBwYWdlTmFtZTogc3RyaW5nO1xuICAgIGFjdGl2ZVBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlO1xuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlO1xuICAgIHJvdXRlcjogUm91dGVyO1xuICAgIHBhZ2VQYXJhbXM6IGFueTtcbiAgICBzaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW47XG4gICAgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2U7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgc3RhcnR1cFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHBhZ2VUcmFuc2l0aW9uQ29tcGxldGVkID0gZmFsc2U7XG4gICAgQFZpZXdDaGlsZChQYWdlRGlyZWN0aXZlKSBwYWdlRGlyZWN0aXZlO1xuICAgICRwYWdlO1xuICAgIHNjcmlwdExvYWRlclNlcnZpY2U6IFNjcmlwdExvYWRlclNlcnZpY2U7XG4gICAgVmlld3BvcnQ6IFZpZXdwb3J0O1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHZpZXdJbml0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgZm9ybWF0c0J5TG9jYWxlID0geyd0aW1lem9uZSc6ICcnfTtcblxuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIG11dGVXYXRjaGVycygpO1xuXG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSkgOiBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWFuYWdlclNlcnZpY2UpIDogaW5qZWN0KEFwcE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpIDogaW5qZWN0KFJvdXRlcik7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcblxuICAgICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMgZm9yIGJpbmRpbmcgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5pbml0VXNlclNjcmlwdCgpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcygpO1xuXG4gICAgICAgIHRoaXMuQXBwLmxhc3RBY3RpdmVQYWdlTmFtZSA9IHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lO1xuICAgICAgICB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZSA9IHRoaXMucGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2UgPSB0aGlzO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTsgLy8gVG9kbzogcmVtb3ZlIHRoaXNcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnZVBhcmFtcygpO1xuICAgICAgICB0aGlzLmRlZmluZUkxOG5Qcm9wcygpO1xuICAgICAgICBzdXBlci5pbml0KCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJXaWRnZXRzKCkge1xuICAgICAgICAvLyBjb21tb24gcGFydGlhbCB3aWRnZXRzIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGZyb20gcGFnZVxuICAgICAgICB0aGlzLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKGNvbW1vblBhcnRpYWxXaWRnZXRzKTtcblxuICAgICAgICAvLyBleHBvc2UgY3VycmVudCBwYWdlIHdpZGdldHMgb24gYXBwXG4gICAgICAgICh0aGlzLkFwcCBhcyBhbnkpLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKHRoaXMuV2lkZ2V0cyk7XG4gICAgfVxuXG4gICAgaW5pdFVzZXJTY3JpcHQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmV2YWxVc2VyU2NyaXB0KHRoaXMsIHRoaXMuQXBwLCB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVXRpbHNTZXJ2aWNlKSA6IGluamVjdChVdGlsc1NlcnZpY2UpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgaW4gZXZhbHVhdGluZyBwYWdlICgke3RoaXMucGFnZU5hbWV9KSBzY3JpcHRcXG5gLCBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyUGFnZVBhcmFtcygpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHRoaXMucGFnZVBhcmFtcyA9ICh0aGlzLkFwcCBhcyBhbnkpLnBhZ2VQYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcykpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICByZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0QXBwTG9jYWxlKCk7XG4gICAgfVxuXG4gICAgaW5pdFZhcmlhYmxlcygpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWYXJpYWJsZXNTZXJ2aWNlKSA6IGluamVjdChWYXJpYWJsZXNTZXJ2aWNlKTtcblxuICAgICAgICAvLyBnZXQgdmFyaWFibGVzIGFuZCBhY3Rpb25zIGluc3RhbmNlcyBmb3IgdGhlIHBhZ2VcbiAgICAgICAgY29uc3QgdmFyaWFibGVDb2xsZWN0aW9uID0gdmFyaWFibGVzU2VydmljZS5yZWdpc3Rlcih0aGlzLnBhZ2VOYW1lLCB0aGlzLmdldFZhcmlhYmxlcygpLCB0aGlzKTtcblxuICAgICAgICAvLyBjcmVhdGUgbmFtZXNwYWNlIGZvciBWYXJpYWJsZXMgbmFkIEFjdGlvbnMgb24gcGFnZS9wYXJ0aWFsLCB3aGljaCBpbmhlcml0cyB0aGUgVmFyaWFibGVzIGFuZCBBY3Rpb25zIGZyb20gQXBwIGluc3RhbmNlXG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLkFwcC5WYXJpYWJsZXMpO1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLkFjdGlvbnMpO1xuXG4gICAgICAgIC8vIGFzc2lnbiBhbGwgdGhlIHBhZ2UgdmFyaWFibGVzIHRvIHRoZSBwYWdlSW5zdGFuY2VcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuZm9yRWFjaCgoW25hbWUsIHZhcmlhYmxlXSkgPT4gdGhpcy5WYXJpYWJsZXNbbmFtZV0gPSB2YXJpYWJsZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKS5mb3JFYWNoKChbbmFtZSwgYWN0aW9uXSkgPT4gdGhpcy5BY3Rpb25zW25hbWVdID0gYWN0aW9uKTtcblxuXG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmFwcE1hbmFnZXIuaXNBcHBWYXJpYWJsZXNGaXJlZCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHRoaXMuQXBwLlZhcmlhYmxlcykuY2F0Y2gobm9vcCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ2FwcC12YXJpYWJsZXMtZGF0YS1sb2FkZWQnLCB7cGFnZU5hbWU6IHRoaXMucGFnZU5hbWV9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodGhpcy5BcHAuQWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLmFwcFZhcmlhYmxlc1JlYWR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLmlzQXBwVmFyaWFibGVzRmlyZWQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKVxuICAgICAgICAgICAgICAgIC5jYXRjaChub29wKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZS12YXJpYWJsZXMtZGF0YS1sb2FkZWQnLCB7cGFnZU5hbWU6IHRoaXMucGFnZU5hbWV9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydHVwVmFyaWFibGVzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaGlkZSB0aGUgbG9hZGVyIG9ubHkgYWZ0ZXIgdGhlIHNvbWUgc2V0VGltZW91dCBmb3Igc21vb3RoIHBhZ2UgbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0VGltZXpvbmUobG9jYWxlKSB7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2Uuc2V0VGltZXpvbmUobG9jYWxlLCB0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhZ2UgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIGVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcikgPT4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBydW5QYWdlVHJhbnNpdGlvbih0cmFuc2l0aW9uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyYW5zaXRpb24gPSB0cmFuc2l0aW9uIHx8IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0UGFnZVRyYW5zaXRpb24oKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgJiYgIXRyYW5zaXRpb24uc3RhcnRzV2l0aCgnbm9uZScpXG4gICAgICAgICAgICAgICAgJiYgbGFzdFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCAkdGFyZ2V0ID0gbGFzdFBhZ2UucGFyZW50KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25UcmFuc2l0aW9uRW5kID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmUgJiYgIShlICYmIGUucHNldWRvRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQub2ZmKCdhbmltYXRpb25lbmQnLCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5yZW1vdmVDbGFzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQuY2hpbGRyZW4oKS5maXJzdCgpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gPSAncGFnZS10cmFuc2l0aW9uIHBhZ2UtdHJhbnNpdGlvbi0nICsgdHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICBsYXN0UGFnZS5hZGRDbGFzcygncGFnZS1leGl0Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGFnZS5hZGRDbGFzcygncGFnZS1lbnRyeScpO1xuICAgICAgICAgICAgICAgICR0YXJnZXQuYWRkQ2xhc3ModHJhbnNpdGlvbik7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5vbignYW5pbWF0aW9uZW5kJywgb25UcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBhIG1heGltdW0gb2YgMSBzZWNvbmQgZm9yIHRyYW5zaXRpb24gdG8gZW5kLlxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQob25UcmFuc2l0aW9uRW5kLCAxMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuJHBhZ2UgJiYgdGhpcy4kcGFnZS5yZW1vdmVDbGFzcygncGFnZS1lbnRyeScpO1xuICAgICAgICAgICAgaWYgKGxhc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgbGFzdFBhZ2UucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhZ2VUcmFuc2l0aW9uQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW52b2tlT25SZWFkeSgpIHtcbiAgICAgICAgdGhpcy5vblJlYWR5KCk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ3BhZ2VSZWFkeScsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgICAgICAodGhpcy5BcHAub25QYWdlUmVhZHkgfHwgbm9vcCkodGhpcy5wYWdlTmFtZSwgdGhpcyk7XG5cbiAgICAgICAgY29uc3QgaG9tZVBhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCk/LmhvbWVQYWdlO1xuICAgICAgICBpZiAod2luZG93LnRvcC5uYW1lICE9PSB3aW5kb3cubmFtZSAmJiBob21lUGFnZSA9PT0gdGhpcy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgd2luZG93LnRvcC5wb3N0TWVzc2FnZSh7a2V5OiAnb25Ib21lcGFnZUxvYWQnfSwgXCIqXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JpcHRzUmVxdWlyZWQgPSB0aGlzLnBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5wYWdlRGlyZWN0aXZlLiRlbGVtZW50LmF0dHIoJ3NjcmlwdHMtdG8tbG9hZCcpO1xuICAgICAgICAgICAgaWYgKHNjcmlwdHNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAubG9hZCguLi5zY3JpcHRzUmVxdWlyZWQuc3BsaXQoJywnKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpIHt9XG5cbiAgICBwcml2YXRlIHNhdmVQYWdlU25hcFNob3QoKSB7XG4gICAgICAgIGlmIChCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90KSB7XG4gICAgICAgICAgICBCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGZuID0gKCRlbCwga2V5LCByZWN1cnNpdmUgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSAgPT4ge1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB4OiAkdGFyZ2V0LnNjcm9sbExlZnQoKSxcbiAgICAgICAgICAgICAgICB5OiAkdGFyZ2V0LnNjcm9sbFRvcCgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYoc2Nyb2xsRGF0YS54ID4gMCB8fCBzY3JvbGxEYXRhLnkgPiAwKSB7XG4gICAgICAgICAgICAgICAgJGVsLmF0dHIoa2V5LCBzY3JvbGxEYXRhLnggKyAnLCcgKyBzY3JvbGxEYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgdGhpcy4kcGFnZS5hdHRyKCdkYXRhLXdpbmRvdy1zY3JvbGwtcG9zaXRpb24nLCB3aW5kb3cuc2Nyb2xsWCArICcsJyArIHdpbmRvdy5zY3JvbGxZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgZm4gPSAoJGVsLCBrZXksIHJlY3Vyc2l2ZSAgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxEYXRhID0gKCRlbC5hdHRyKGtleSkgfHwgJycpLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBpZihzY3JvbGxEYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LnNjcm9sbExlZnQoc2Nyb2xsRGF0YVswXSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5zY3JvbGxUb3Aoc2Nyb2xsRGF0YVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZWwucmVtb3ZlQXR0cihrZXkpO1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgZm4odGhpcy4kcGFnZSwgJ2RhdGEtd2luZG93LXNjcm9sbC1wb3NpdGlvbicsIGZhbHNlLCAkKHdpbmRvdykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbkRlYWN0aXZhdGUgaXMgY2FsbGVkIGJlZm9yZSBhIHJvdXRlIGNoYW5nZS5cbiAgICAgKiBUaGlzIHdpbGwgaW50ZXJuYWxseSBjYWxsIG9uQmVmb3JlUGFnZUxlYXZlIG1ldGhvZCBwcmVzZW50XG4gICAgICogYXQgcGFnZSBsZXZlbCBhbmQgYXBwIGxldmVsIGluIHRoZSBhcHBsaWNhdGlvbiBhbmQgZGVjaWRlXG4gICAgICogd2hldGhlciB0byBjaGFuZ2Ugcm91dGUgb3Igbm90IGJhc2VkIG9uIHJldHVybiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZT86IHN0cmluZyl7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgcGFnZSBsZXZlbFxuICAgICAgICByZXRWYWwgPSB0aGlzLm9uQmVmb3JlUGFnZUxlYXZlKCk7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgYXBwIGxldmVsIG9ubHkgaWYgcGFnZSBsZXZlbCBtZXRob2QgcmV0dXJuIHRydWVcbiAgICAgICAgLy8gb3IgaWYgdGhlcmUgaXMgbm8gcGFnZSBsZXZlbCBtZXRob2RcbiAgICAgICAgaWYgKHJldFZhbCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICByZXRWYWwgPSAgKHRoaXMuQXBwLm9uQmVmb3JlUGFnZUxlYXZlIHx8IG5vb3ApKHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lLCB0aGlzLkFwcC5hY3RpdmVQYWdlLCBuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWwgPT09IHVuZGVmaW5lZCA/IHRydWUgOiByZXRWYWw7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbQ0FDSEVfUEFHRV0gPSB0aGlzLmNhblJldXNlKCk7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuJHBhZ2UgPSB0aGlzLnBhZ2VEaXJlY3RpdmUuJGVsZW1lbnQucGFyZW50KCk7XG4gICAgICAgICAgICBpZiAoaXNJb3MoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHBhZ2UuYWRkQ2xhc3MoJ2lvcy1wYWdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBbmRyb2lkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdhbmRyb2lkLXBhZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCk7XG4gICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucnVuUGFnZVRyYW5zaXRpb24oKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMgYXMgYW55KS5jb21waWxlUGFnZUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25QYWdlQ29udGVudFJlYWR5ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzTG9hZGVkJC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZU9uUmVhZHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bk11dGVXYXRjaGVycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblBhZ2VDb250ZW50UmVhZHkgPSBub29wO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVud2F0Y2ggYWxsIFBhZ2Utc2NvcGVkIHdhdGNoZXJzIGZvciBUSElTIHNwZWNpZmljIHBhZ2Ugd2hlbiBwYWdlIGlzIGRlc3Ryb3llZFxuICAgICAgICAvL3RoaXMuY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsKCk7XG4gICAgICAgIHRoaXMuc2F2ZVBhZ2VTbmFwU2hvdCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsKCkge1xuICAgICAgICBjb25zdCByb290ID0gdGhpcztcbiAgICAgICAgbGV0IGNhcHR1cmVBcHBsaWNhdGlvblRodW1ibmFpbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsXCIpID09PSBcInRydWVcIiA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgaWYgKGNhcHR1cmVBcHBsaWNhdGlvblRodW1ibmFpbCAmJiB0aGlzLkFwcC5sYW5kaW5nUGFnZU5hbWUgPT09IHRoaXMucGFnZU5hbWUgJiYgISg8YW55PnRoaXMpLkFwcC5pc0FwcGxpY2F0aW9uVGh1bWJuYWlsQ2FwdHVyZWQpIHtcbiAgICAgICAgICAgIGh0bWwyY2FudmFzKGRvY3VtZW50LmJvZHkpXG4gICAgICAgICAgICAgICAgLnRoZW4oY2FudmFzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICg8YW55PnJvb3QpLkFwcC5pc0FwcGxpY2F0aW9uVGh1bWJuYWlsQ2FwdHVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyZWVuc2hvdFVybCA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzY3JlZW5zaG90VXJsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5ocmVmID0gc2NyZWVuc2hvdFVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBcInNjcmVlbnNob3QuanBnXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBodG1sMmNhbnZhcyB0aGVuIGJsb2NrOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gaHRtbDJjYW52YXMgcHJvbWlzZTonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVhZHkoKSB7fVxuXG4gICAgb25CZWZvcmVQYWdlUmVhZHkoKSB7fVxuXG4gICAgb25CZWZvcmVQYWdlTGVhdmUoKSB7fVxuXG4gICAgb25QYWdlQ29udGVudFJlYWR5KCkge31cblxuICAgIGNhblJldXNlKCkge1xuICAgICAgICByZXR1cm4gISEodGhpcy5wYWdlRGlyZWN0aXZlICYmIHRoaXMucGFnZURpcmVjdGl2ZS5jYWNoZSk7XG4gICAgfVxuXG4gICAgbXV0ZSgpIHtcbiAgICAgICAgY29uc3QgbSA9IG8gPT4geyBvICYmIG8ubXV0ZSAmJiBvLm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCBtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIG0pO1xuICAgIH1cblxuICAgIHVubXV0ZShjID0gdGhpcykge1xuICAgICAgICBjb25zdCB1bSA9IG8gPT4geyBvICYmIG8udW5tdXRlICYmIG8udW5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHVtKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKCkge1xuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbQ0FDSEVfUEFHRV0gPSB0aGlzLmNhblJldXNlKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdlUGFyYW1zKCk7XG4gICAgICAgIHRoaXMuQXBwLmxhc3RBY3RpdmVQYWdlTmFtZSA9IHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lO1xuICAgICAgICB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZSA9IHRoaXMucGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2UgPSB0aGlzO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5yZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpO1xuICAgICAgICB0aGlzLnVubXV0ZSgpO1xuICAgICAgICAvLyBleHBvc2UgY3VycmVudCBwYWdlIHdpZGdldHMgb24gYXBwXG4gICAgICAgICh0aGlzLkFwcCBhcyBhbnkpLldpZGdldHMgPSBPYmplY3QuY3JlYXRlKHRoaXMuV2lkZ2V0cyk7XG4gICAgICAgIGlmKHRoaXMucGFnZURpcmVjdGl2ZSAmJiB0aGlzLnBhZ2VEaXJlY3RpdmUucmVmcmVzaGRhdGFvbmF0dGFjaCkge1xuICAgICAgICAgICAgY29uc3QgcmVmcmVzaCA9IHYgPT4geyB2ICYmIHYuc3RhcnRVcGRhdGUgJiYgdi5pbnZva2UgJiYgdi5pbnZva2UoKTsgfTtcbiAgICAgICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHJlZnJlc2gpO1xuICAgICAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHJlZnJlc2gpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucnVuUGFnZVRyYW5zaXRpb24oKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgMTAwKTtcbiAgICAgICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uQXR0YWNoICYmIHcubmdPbkF0dGFjaCgpKTtcbiAgICAgICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ3BhZ2VBdHRhY2gnLCB7J25hbWUnIDogdGhpcy5wYWdlTmFtZSwgaW5zdGFuY2U6IHRoaXN9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgdGhpcy5zYXZlU2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5zYXZlUGFnZVNuYXBTaG90KCk7XG4gICAgICAgIHRoaXMubXV0ZSgpO1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ3BhZ2VEZXRhY2gnLCB7J25hbWUnIDogdGhpcy5wYWdlTmFtZSwgaW5zdGFuY2U6IHRoaXN9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMub25CZWZvcmVQYWdlUmVhZHkoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2xlYXIoKSB7XG4gICAgICAgIGlmKEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QpIHtcbiAgICAgICAgICAgIEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QucmVtb3ZlKCk7XG4gICAgICAgICAgICBCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixHQUFHLEVBQ0gsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxZQUFZLEVBQ1osUUFBUSxFQUNYLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQU12QyxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLGVBQWU7SUFEL0Q7O1FBa0JJLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMv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RSxDQUFDO1lBQzVDLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQzsrR0FoWmlCLGlCQUFpQjttR0FBakIsaUJBQWlCLDRJQW1CeEIsYUFBYTs7NEZBbkJOLGlCQUFpQjtrQkFEdEMsU0FBUzs4QkFvQm9CLGFBQWE7c0JBQXRDLFNBQVM7dUJBQUMsYUFBYTtnQkFpUHhCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBcHAsXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyxcbiAgICBpc0FuZHJvaWQsXG4gICAgaXNJb3MsXG4gICAgbXV0ZVdhdGNoZXJzLFxuICAgIG5vb3AsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwcixcbiAgICBTY3JpcHRMb2FkZXJTZXJ2aWNlLFxuICAgIHVuTXV0ZVdhdGNoZXJzLFxuICAgIFV0aWxzU2VydmljZSxcbiAgICBWaWV3cG9ydFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1BhZ2VEaXJlY3RpdmV9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UnO1xuXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjb21tb25QYXJ0aWFsV2lkZ2V0c30gZnJvbSAnLi9iYXNlLXBhcnRpYWwuY29tcG9uZW50JztcblxuXG5pbXBvcnQge1ZhcmlhYmxlc1NlcnZpY2V9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHtBcHBNYW5hZ2VyU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQge0ZyYWdtZW50TW9uaXRvcn0gZnJvbSAnLi4vdXRpbC9mcmFnbWVudC1tb25pdG9yJztcbmltcG9ydCB7Q0FDSEVfUEFHRX0gZnJvbSAnLi4vdXRpbC93bS1yb3V0ZS1yZXVzZS1zdHJhdGVneSc7XG5pbXBvcnQge2VhY2gsIGV4dGVuZH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5kZWNsYXJlIGNvbnN0IGh0bWwyY2FudmFzO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUGFnZUNvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgc3RhdGljIGxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIHBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlUGFnZU5hbWU6IHN0cmluZztcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gICAgYXBwTWFuYWdlcjogQXBwTWFuYWdlclNlcnZpY2U7XG4gICAgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2U7XG4gICAgcm91dGVyOiBSb3V0ZXI7XG4gICAgcGFnZVBhcmFtczogYW55O1xuICAgIHNob3dQYWdlQ29udGVudDogYm9vbGVhbjtcbiAgICBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZTtcbiAgICBhcHBMb2NhbGU6IGFueTtcbiAgICBzdGFydHVwVmFyaWFibGVzTG9hZGVkID0gZmFsc2U7XG4gICAgcGFnZVRyYW5zaXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgICBAVmlld0NoaWxkKFBhZ2VEaXJlY3RpdmUpIHBhZ2VEaXJlY3RpdmU7XG4gICAgJHBhZ2U7XG4gICAgc2NyaXB0TG9hZGVyU2VydmljZTogU2NyaXB0TG9hZGVyU2VydmljZTtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJyd9O1xuXG5cbiAgICBhYnN0cmFjdCBldmFsVXNlclNjcmlwdChwcmVmYWJDb250ZXh0OiBhbnksIGFwcENvbnRleHQ6IGFueSwgdXRpbHM6IGFueSk7XG4gICAgYWJzdHJhY3QgZ2V0VmFyaWFibGVzKCk7XG4gICAgYWJzdHJhY3QgZ2V0RXhwcmVzc2lvbnMoKTtcblxuICAgIGluaXQoKSB7XG5cbiAgICAgICAgbXV0ZVdhdGNoZXJzKCk7XG5cbiAgICAgICAgdGhpcy5BcHAgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwKSA6IGluamVjdChBcHApO1xuICAgICAgICB0aGlzLnJvdXRlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKSA6IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBcHBNYW5hZ2VyU2VydmljZSkgOiBpbmplY3QoQXBwTWFuYWdlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UpO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU2NyaXB0TG9hZGVyU2VydmljZSkgOiBpbmplY3QoU2NyaXB0TG9hZGVyU2VydmljZSk7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWJzdHJhY3RJMThuU2VydmljZSkgOiBpbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSk7XG4gICAgICAgIHRoaXMucm91dGVyID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcikgOiBpbmplY3QoUm91dGVyKTtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWaWV3cG9ydCkgOiBpbmplY3QoVmlld3BvcnQpO1xuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyBmb3IgYmluZGluZyBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFeHByZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmluaXRVc2VyU2NyaXB0KCk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldHMoKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKCk7XG5cbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lOyAvLyBUb2RvOiByZW1vdmUgdGhpc1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdlUGFyYW1zKCk7XG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIC8vIGNvbW1vbiBwYXJ0aWFsIHdpZGdldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBwYWdlXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUoY29tbW9uUGFydGlhbFdpZGdldHMpO1xuXG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICB9XG5cbiAgICBpbml0VXNlclNjcmlwdCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZXZhbFVzZXJTY3JpcHQodGhpcywgdGhpcy5BcHAsIHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChVdGlsc1NlcnZpY2UpIDogaW5qZWN0KFV0aWxzU2VydmljZSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmFsdWF0aW5nIHBhZ2UgKCR7dGhpcy5wYWdlTmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQYWdlUGFyYW1zKCkge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4gdGhpcy5wYWdlUGFyYW1zID0gKHRoaXMuQXBwIGFzIGFueSkucGFnZVBhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICBkZWZpbmVJMThuUHJvcHMoKSB7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gdGhpcy5pMThuU2VydmljZS5nZXRBcHBMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBpbml0VmFyaWFibGVzKCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXNTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZhcmlhYmxlc1NlcnZpY2UpIDogaW5qZWN0KFZhcmlhYmxlc1NlcnZpY2UpO1xuXG4gICAgICAgIC8vIGdldCB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW5zdGFuY2VzIGZvciB0aGUgcGFnZVxuICAgICAgICBjb25zdCB2YXJpYWJsZUNvbGxlY3Rpb24gPSB2YXJpYWJsZXNTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMucGFnZU5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuQWN0aW9ucyk7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYXBwTWFuYWdlci5pc0FwcFZhcmlhYmxlc0ZpcmVkKCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodGhpcy5BcHAuVmFyaWFibGVzKS5jYXRjaChub29wKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgnYXBwLXZhcmlhYmxlcy1kYXRhLWxvYWRlZCcsIHtwYWdlTmFtZTogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh0aGlzLkFwcC5BY3Rpb25zKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIuYXBwVmFyaWFibGVzUmVhZHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIuaXNBcHBWYXJpYWJsZXNGaXJlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpXG4gICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlLXZhcmlhYmxlcy1kYXRhLWxvYWRlZCcsIHtwYWdlTmFtZTogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0dXBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBoaWRlIHRoZSBsb2FkZXIgb25seSBhZnRlciB0aGUgc29tZSBzZXRUaW1lb3V0IGZvciBzbW9vdGggcGFnZSBsb2FkLlxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucyk7XG5cbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRUaW1lem9uZShsb2NhbGUpIHtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZS5zZXRUaW1lem9uZShsb2NhbGUsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJpbmQgZXhwcmVzc2lvbnMgZ2VuZXJhdGVkIGluIHRoaXMgcGFnZSBpbnN0YW5jZVxuICAgICAqIGdldEV4cHJlc3Npb25zIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBwYWdlLmNvbXAudHMgZmlsZVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucywgbWFwIG9mIGJpbmQgZXhwcmVzc2lvbiB2cyBnZW5lcmF0ZWQgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb25zKCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoKTtcbiAgICAgICAgZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RlckZuQnlFeHByKGV4cHIsIGZuWzBdLCBmblsxXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJ1blBhZ2VUcmFuc2l0aW9uKHRyYW5zaXRpb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJhbnNpdGlvbiA9IHRyYW5zaXRpb24gfHwgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRQYWdlVHJhbnNpdGlvbigpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3RcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAmJiAhdHJhbnNpdGlvbi5zdGFydHNXaXRoKCdub25lJylcbiAgICAgICAgICAgICAgICAmJiBsYXN0UGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0ICR0YXJnZXQgPSBsYXN0UGFnZS5wYXJlbnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvblRyYW5zaXRpb25FbmQgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZSAmJiAhKGUgJiYgZS5wc2V1ZG9FbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5vZmYoJ2FuaW1hdGlvbmVuZCcsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0LnJlbW92ZUNsYXNzKHRyYW5zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5jaGlsZHJlbigpLmZpcnN0KCkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbiA9ICdwYWdlLXRyYW5zaXRpb24gcGFnZS10cmFuc2l0aW9uLScgKyB0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIGxhc3RQYWdlLmFkZENsYXNzKCdwYWdlLWV4aXQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdwYWdlLWVudHJ5Jyk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5hZGRDbGFzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0Lm9uKCdhbmltYXRpb25lbmQnLCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGEgbWF4aW11bSBvZiAxIHNlY29uZCBmb3IgdHJhbnNpdGlvbiB0byBlbmQuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChvblRyYW5zaXRpb25FbmQsIDEwMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kcGFnZSAmJiB0aGlzLiRwYWdlLnJlbW92ZUNsYXNzKCdwYWdlLWVudHJ5Jyk7XG4gICAgICAgICAgICBpZiAobGFzdFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBsYXN0UGFnZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBCYXNlUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFnZVRyYW5zaXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VPblJlYWR5KCkge1xuICAgICAgICB0aGlzLm9uUmVhZHkoKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZVJlYWR5JywgeyduYW1lJyA6IHRoaXMucGFnZU5hbWUsIGluc3RhbmNlOiB0aGlzfSk7XG4gICAgICAgICh0aGlzLkFwcC5vblBhZ2VSZWFkeSB8fCBub29wKSh0aGlzLnBhZ2VOYW1lLCB0aGlzKTtcblxuICAgICAgICBjb25zdCBob21lUGFnZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKT8uaG9tZVBhZ2U7XG4gICAgICAgIGlmICh3aW5kb3cudG9wLm5hbWUgIT09IHdpbmRvdy5uYW1lICYmIGhvbWVQYWdlID09PSB0aGlzLnBhZ2VOYW1lKSB7XG4gICAgICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKHtrZXk6ICdvbkhvbWVwYWdlTG9hZCd9LCBcIipcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRTY3JpcHRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdHNSZXF1aXJlZCA9IHRoaXMucGFnZURpcmVjdGl2ZSAmJiB0aGlzLnBhZ2VEaXJlY3RpdmUuJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCkge31cblxuICAgIHByaXZhdGUgc2F2ZVBhZ2VTbmFwU2hvdCgpIHtcbiAgICAgICAgaWYgKEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QpIHtcbiAgICAgICAgICAgIEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgZm4gPSAoJGVsLCBrZXksIHJlY3Vyc2l2ZSA9IHRydWUsICR0YXJnZXQgPSAkZWwpICA9PiB7XG4gICAgICAgICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgJGVsLmNoaWxkcmVuKCkuZWFjaCgoaSwgdikgPT4gZm4oJCh2KSwga2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxEYXRhID0ge1xuICAgICAgICAgICAgICAgIHg6ICR0YXJnZXQuc2Nyb2xsTGVmdCgpLFxuICAgICAgICAgICAgICAgIHk6ICR0YXJnZXQuc2Nyb2xsVG9wKClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZihzY3JvbGxEYXRhLnggPiAwIHx8IHNjcm9sbERhdGEueSA+IDApIHtcbiAgICAgICAgICAgICAgICAkZWwuYXR0cihrZXksIHNjcm9sbERhdGEueCArICcsJyArIHNjcm9sbERhdGEueSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZuKHRoaXMuJHBhZ2UsICdkYXRhLXNjcm9sbC1wb3NpdGlvbicpO1xuICAgICAgICB0aGlzLiRwYWdlLmF0dHIoJ2RhdGEtd2luZG93LXNjcm9sbC1wb3NpdGlvbicsIHdpbmRvdy5zY3JvbGxYICsgJywnICsgd2luZG93LnNjcm9sbFkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBmbiA9ICgkZWwsIGtleSwgcmVjdXJzaXZlICA9IHRydWUsICR0YXJnZXQgPSAkZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbERhdGEgPSAoJGVsLmF0dHIoa2V5KSB8fCAnJykuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGlmKHNjcm9sbERhdGEubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICR0YXJnZXQuc2Nyb2xsTGVmdChzY3JvbGxEYXRhWzBdKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LnNjcm9sbFRvcChzY3JvbGxEYXRhWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRlbC5yZW1vdmVBdHRyKGtleSk7XG4gICAgICAgICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgJGVsLmNoaWxkcmVuKCkuZWFjaCgoaSwgdikgPT4gZm4oJCh2KSwga2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZuKHRoaXMuJHBhZ2UsICdkYXRhLXNjcm9sbC1wb3NpdGlvbicpO1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS13aW5kb3ctc2Nyb2xsLXBvc2l0aW9uJywgZmFsc2UsICQod2luZG93KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FuRGVhY3RpdmF0ZSBpcyBjYWxsZWQgYmVmb3JlIGEgcm91dGUgY2hhbmdlLlxuICAgICAqIFRoaXMgd2lsbCBpbnRlcm5hbGx5IGNhbGwgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnRcbiAgICAgKiBhdCBwYWdlIGxldmVsIGFuZCBhcHAgbGV2ZWwgaW4gdGhlIGFwcGxpY2F0aW9uIGFuZCBkZWNpZGVcbiAgICAgKiB3aGV0aGVyIHRvIGNoYW5nZSByb3V0ZSBvciBub3QgYmFzZWQgb24gcmV0dXJuIHZhbHVlLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnKVxuICAgIGNhbkRlYWN0aXZhdGUobmV4dFN0YXRlPzogc3RyaW5nKXtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgLy8gQ2FsbGluZyBvbkJlZm9yZVBhZ2VMZWF2ZSBtZXRob2QgcHJlc2VudCBhdCBwYWdlIGxldmVsXG4gICAgICAgIHJldFZhbCA9IHRoaXMub25CZWZvcmVQYWdlTGVhdmUoKTtcbiAgICAgICAgLy8gQ2FsbGluZyBvbkJlZm9yZVBhZ2VMZWF2ZSBtZXRob2QgcHJlc2VudCBhdCBhcHAgbGV2ZWwgb25seSBpZiBwYWdlIGxldmVsIG1ldGhvZCByZXR1cm4gdHJ1ZVxuICAgICAgICAvLyBvciBpZiB0aGVyZSBpcyBubyBwYWdlIGxldmVsIG1ldGhvZFxuICAgICAgICBpZiAocmV0VmFsICE9PSBmYWxzZSApIHtcbiAgICAgICAgICAgIHJldFZhbCA9ICAodGhpcy5BcHAub25CZWZvcmVQYWdlTGVhdmUgfHwgbm9vcCkodGhpcy5BcHAuYWN0aXZlUGFnZU5hbWUsIHRoaXMuQXBwLmFjdGl2ZVBhZ2UsIG5leHRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHJldFZhbDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVtDQUNIRV9QQUdFXSA9IHRoaXMuY2FuUmV1c2UoKTtcbiAgICAgICAgaWYgKHRoaXMucGFnZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy4kcGFnZSA9IHRoaXMucGFnZURpcmVjdGl2ZS4kZWxlbWVudC5wYXJlbnQoKTtcbiAgICAgICAgICAgIGlmIChpc0lvcygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGFnZS5hZGRDbGFzcygnaW9zLXBhZ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0FuZHJvaWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHBhZ2UuYWRkQ2xhc3MoJ2FuZHJvaWQtcGFnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzdG9yZUxhc3RQYWdlU25hcHNob3QoKTtcbiAgICAgICAgdGhpcy5sb2FkU2NyaXB0cygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ydW5QYWdlVHJhbnNpdGlvbigpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpLmNvbXBpbGVQYWdlQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblBhZ2VDb250ZW50UmVhZHkgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmFnbWVudHNMb2FkZWQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlT25SZWFkeSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuTXV0ZVdhdGNoZXJzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZUNvbnRlbnRSZWFkeSA9IG5vb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vdGhpcy5jYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWwoKTtcbiAgICAgICAgdGhpcy5zYXZlUGFnZVNuYXBTaG90KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWwoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzO1xuICAgICAgICBsZXQgY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXB0dXJlQXBwbGljYXRpb25UaHVtYm5haWxcIikgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBpZiAoY2FwdHVyZUFwcGxpY2F0aW9uVGh1bWJuYWlsICYmIHRoaXMuQXBwLmxhbmRpbmdQYWdlTmFtZSA9PT0gdGhpcy5wYWdlTmFtZSAmJiAhKDxhbnk+dGhpcykuQXBwLmlzQXBwbGljYXRpb25UaHVtYm5haWxDYXB0dXJlZCkge1xuICAgICAgICAgICAgaHRtbDJjYW52YXMoZG9jdW1lbnQuYm9keSlcbiAgICAgICAgICAgICAgICAudGhlbihjYW52YXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDxhbnk+cm9vdCkuQXBwLmlzQXBwbGljYXRpb25UaHVtYm5haWxDYXB0dXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JlZW5zaG90VXJsID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHNjcmVlbnNob3RVcmwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSBzY3JlZW5zaG90VXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5kb3dubG9hZCA9IFwic2NyZWVuc2hvdC5qcGdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGh0bWwyY2FudmFzIHRoZW4gYmxvY2s6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBodG1sMmNhbnZhcyBwcm9taXNlOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VSZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VMZWF2ZSgpIHt9XG5cbiAgICBvblBhZ2VDb250ZW50UmVhZHkoKSB7fVxuXG4gICAgY2FuUmV1c2UoKSB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLnBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5wYWdlRGlyZWN0aXZlLmNhY2hlKTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKGMgPSB0aGlzKSB7XG4gICAgICAgIGNvbnN0IHVtID0gbyA9PiB7IG8gJiYgby51bm11dGUgJiYgby51bm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgdW0pO1xuICAgIH1cblxuICAgIG5nT25BdHRhY2goKSB7XG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVtDQUNIRV9QQUdFXSA9IHRoaXMuY2FuUmV1c2UoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lO1xuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCk7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICAgICAgaWYodGhpcy5wYWdlRGlyZWN0aXZlICYmIHRoaXMucGFnZURpcmVjdGl2ZS5yZWZyZXNoZGF0YW9uYXR0YWNoKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5QYWdlVHJhbnNpdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCAxMDApO1xuICAgICAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZUF0dGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLnNhdmVTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVQYWdlU25hcFNob3QoKTtcbiAgICAgICAgdGhpcy5tdXRlKCk7XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uRGV0YWNoICYmIHcubmdPbkRldGFjaCgpKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZURldGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5vbkJlZm9yZVBhZ2VSZWFkeSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhcigpIHtcbiAgICAgICAgaWYoQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCkge1xuICAgICAgICAgICAgQmFzZVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIEJhc2VQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Compiler, Injectable, Injector, KeyValueDiffers } from '@angular/core';
|
|
2
2
|
import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LowerCasePipe, NgLocalization, PercentPipe, SlicePipe, TitleCasePipe, UpperCasePipe } from '@angular/common';
|
|
3
3
|
import { CustomPipe, FileExtensionFromMimePipe, FileIconClassPipe, FileSizePipe, FilterPipe, NumberToStringPipe, PrefixPipe, SanitizePipe, StateClassPipe, StringToNumberPipe, SuffixPipe, TemplateReplacePipe, TimeFromNowPipe, ToCurrencyPipe, ToDatePipe, ToNumberPipe, TrustAsPipe } from '@wm/components/base';
|
|
4
|
-
import { AbstractI18nService,
|
|
4
|
+
import { AbstractI18nService, CustomPipeManager, getSessionStorageItem } from '@wm/core';
|
|
5
5
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/platform-browser";
|
|
@@ -34,7 +34,7 @@ export class PipeProvider {
|
|
|
34
34
|
this.preparePipeMeta(CurrencyPipe, 'currency', true, [this._locale]),
|
|
35
35
|
this.preparePipeMeta(DatePipe, 'date', true, [this._locale]),
|
|
36
36
|
this.preparePipeMeta(ToDatePipe, 'toDate', true, [
|
|
37
|
-
new DatePipe(this._locale), undefined, this.injector.get(
|
|
37
|
+
new DatePipe(this._locale), undefined, this.injector.get(CustomPipeManager)
|
|
38
38
|
]),
|
|
39
39
|
this.preparePipeMeta(ToNumberPipe, 'toNumber', true, [
|
|
40
40
|
new DecimalPipe(this._locale),
|
|
@@ -51,7 +51,7 @@ export class PipeProvider {
|
|
|
51
51
|
new DecimalPipe(this._locale)
|
|
52
52
|
]),
|
|
53
53
|
this.preparePipeMeta(StringToNumberPipe, 'stringToNumber', true),
|
|
54
|
-
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(
|
|
54
|
+
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(CustomPipeManager)]),
|
|
55
55
|
this.preparePipeMeta(TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
56
56
|
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
57
57
|
this.preparePipeMeta(TemplateReplacePipe, 'templateReplace', true),
|
|
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
121
121
|
providedIn: 'root'
|
|
122
122
|
}]
|
|
123
123
|
}], ctorParameters: () => [{ type: i0.Compiler }, { type: i0.Injector }, { type: i1.DomSanitizer }, { type: i2.AbstractI18nService }] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QixPQUFPLEVBQ0gsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxZQUFZO0lBZ0JyQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENB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SUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBRztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFJO1FBQ1osTUFBTSxFQUNGLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUN6QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7K0dBMUhRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcGlsZXIsIEluamVjdGFibGUsIEluamVjdG9yLCBLZXlWYWx1ZURpZmZlcnMsIFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBc3luY1BpcGUsXG4gICAgQ3VycmVuY3lQaXBlLFxuICAgIERhdGVQaXBlLFxuICAgIERlY2ltYWxQaXBlLFxuICAgIEkxOG5QbHVyYWxQaXBlLFxuICAgIEkxOG5TZWxlY3RQaXBlLFxuICAgIEpzb25QaXBlLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIE5nTG9jYWxpemF0aW9uLFxuICAgIFBlcmNlbnRQaXBlLFxuICAgIFNsaWNlUGlwZSxcbiAgICBUaXRsZUNhc2VQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgICBDdXN0b21QaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgRmlsZUljb25DbGFzc1BpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgTnVtYmVyVG9TdHJpbmdQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIFN0YXRlQ2xhc3NQaXBlLFxuICAgIFN0cmluZ1RvTnVtYmVyUGlwZSxcbiAgICBTdWZmaXhQaXBlLFxuICAgIFRlbXBsYXRlUmVwbGFjZVBpcGUsXG4gICAgVGltZUZyb21Ob3dQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFRvRGF0ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRydXN0QXNQaXBlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBBcHAsIEN1c3RvbVBpcGVNYW5hZ2VyLCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW19IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVQcm92aWRlciB7XG4gICAgX3BpcGVNZXRhO1xuICAgIF9sb2NhbGUgPSBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJztcbiAgICBmb3JtYXRzQnlMb2NhbGU7XG4gICAgcHJlcGFyZVBpcGVNZXRhID0gKFxuICAgICAgICByZWZlcmVuY2U6IFBpcGUsXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVyZTogYm9vbGVhbixcbiAgICAgICAgZGlEZXBzID0gW11cbiAgICApID0+ICh7XG4gICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlLCBkaURlcHMgfSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcHVyZVxuICAgIH0pO1xuICAgIF9waXBlRGF0YSA9IFtdO1xuXG4gICAgc2V0UGlwZURhdGEoKSB7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhID0gW1xuICAgICAgICAgICAgLy8gVE9ETyB8IE5FRUQgVE8gQkUgVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShBc3luY1BpcGUsICdhc3luYycsIGZhbHNlLCBbQ2hhbmdlRGV0ZWN0b3JSZWZdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFNsaWNlUGlwZSwgJ3NsaWNlJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUGVyY2VudFBpcGUsICdwZXJjZW50JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blBsdXJhbFBpcGUsICdpMThuUGx1cmFsJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIE5nTG9jYWxpemF0aW9uXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEkxOG5TZWxlY3RQaXBlLCAnaTE4blNlbGVjdCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoS2V5VmFsdWVQaXBlLCAna2V5dmFsdWUnLCBmYWxzZSwgW1xuICAgICAgICAgICAgICAgIEtleVZhbHVlRGlmZmVyc1xuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlSWNvbkNsYXNzUGlwZSwgJ2ZpbGVJY29uQ2xhc3MnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFxuICAgICAgICAgICAgICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgICAgICAgICAgICAgJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZScsXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0YXRlQ2xhc3NQaXBlLCAnc3RhdGVDbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsZVNpemVQaXBlLCAnZmlsZXNpemUnLCB0cnVlKSxcbiAgICAgICAgICAgIC8vIFRFU1RFRFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsdGVyUGlwZSwgJ2ZpbHRlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVXBwZXJDYXNlUGlwZSwgJ3VwcGVyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoTG93ZXJDYXNlUGlwZSwgJ2xvd2VyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSnNvblBpcGUsICdqc29uJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGVjaW1hbFBpcGUsICdudW1iZXInLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUaXRsZUNhc2VQaXBlLCAndGl0bGVjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXJyZW5jeVBpcGUsICdjdXJyZW5jeScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKERhdGVQaXBlLCAnZGF0ZScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvRGF0ZVBpcGUsICd0b0RhdGUnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERhdGVQaXBlKHRoaXMuX2xvY2FsZSksIHVuZGVmaW5lZCwgdGhpcy5pbmplY3Rvci5nZXQoQXBwKSwgdGhpcy5pbmplY3Rvci5nZXQoQ3VzdG9tUGlwZU1hbmFnZXIpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvTnVtYmVyUGlwZSwgJ3RvTnVtYmVyJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuaTE4c2VydmljZVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUb0N1cnJlbmN5UGlwZSwgJ3RvQ3VycmVuY3knLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFByZWZpeFBpcGUsICdwcmVmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN1ZmZpeFBpcGUsICdzdWZmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpbWVGcm9tTm93UGlwZSwgJ3RpbWVGcm9tTm93JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShOdW1iZXJUb1N0cmluZ1BpcGUsICdudW1iZXJUb1N0cmluZycsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTdHJpbmdUb051bWJlclBpcGUsICdzdHJpbmdUb051bWJlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoQ3VzdG9tUGlwZSwgJ2N1c3RvbScsIHRydWUsIFt0aGlzLmluamVjdG9yLmdldChBcHApLCB0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcildKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRydXN0QXNQaXBlLCAndHJ1c3RBcycsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2FuaXRpemVQaXBlLCAnc2FuaXRpemUnLCB0cnVlLCBbdGhpcy5kb21TYW5pdGl6ZXJdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRlbXBsYXRlUmVwbGFjZVBpcGUsICd0ZW1wbGF0ZVJlcGxhY2UnLCB0cnVlKSxcbiAgICAgICAgXTtcbiAgICB9XG5cblxuICAgIHVua25vd25QaXBlKG5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFRoZSBwaXBlICcke25hbWV9JyBjb3VsZCBub3QgYmUgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgZG9tU2FuaXRpemVyOkRvbVNhbml0aXplciwgcHJpdmF0ZSBpMThzZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnNldFBpcGVEYXRhKCk7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhLmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICB0aGlzLl9waXBlTWV0YS5zZXQodi5uYW1lLCB2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybWF0c0J5TG9jYWxlID0gdGhpcy5pMThzZXJ2aWNlPyB0aGlzLmkxOHNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgOiB7fTtcbiAgICB9XG5cbiAgICBtZXRhKG5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuX3BpcGVNZXRhLmdldChuYW1lKTtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cblxuICAgIGdldFBpcGVOYW1lVnNJc1B1cmVNYXAoKSB7XG4gICAgICAgIGNvbnN0IF9tYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgIF9tYXAuc2V0KGssIHYucHVyZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX21hcDtcbiAgICB9XG5cbiAgICByZXNvbHZlRGVwKGRlcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZGVwLnRva2VuLmlkZW50aWZpZXIucmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICBnZXRJbnN0YW5jZShuYW1lKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlOiByZWYsIGRpRGVwczogZGVwcyB9XG4gICAgICAgIH0gPSB0aGlzLm1ldGEobmFtZSk7XG4gICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkZXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyByZWYoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2goZGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgcmVmKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QixPQUFPLEVBQ0gsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFLdkQsTUFBTSxPQUFPLFlBQVk7SUFnQnJCLFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2IsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxpQkFBaUIs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LFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQUk7UUFDWixNQUFNLEVBQ0YsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQ3pDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQztZQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQzsrR0ExSFEsWUFBWTttSEFBWixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21waWxlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIEtleVZhbHVlRGlmZmVycywgUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFzeW5jUGlwZSxcbiAgICBDdXJyZW5jeVBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgRGVjaW1hbFBpcGUsXG4gICAgSTE4blBsdXJhbFBpcGUsXG4gICAgSTE4blNlbGVjdFBpcGUsXG4gICAgSnNvblBpcGUsXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgTmdMb2NhbGl6YXRpb24sXG4gICAgUGVyY2VudFBpcGUsXG4gICAgU2xpY2VQaXBlLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gICAgVXBwZXJDYXNlUGlwZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICAgIEN1c3RvbVBpcGUsXG4gICAgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgRmlsdGVyUGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgUHJlZml4UGlwZSxcbiAgICBTYW5pdGl6ZVBpcGUsXG4gICAgU3RhdGVDbGFzc1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIFN1ZmZpeFBpcGUsXG4gICAgVGVtcGxhdGVSZXBsYWNlUGlwZSxcbiAgICBUaW1lRnJvbU5vd1BpcGUsXG4gICAgVG9DdXJyZW5jeVBpcGUsXG4gICAgVG9EYXRlUGlwZSxcbiAgICBUb051bWJlclBpcGUsXG4gICAgVHJ1c3RBc1BpcGVcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0Fic3RyYWN0STE4blNlcnZpY2UsIEN1c3RvbVBpcGVNYW5hZ2VyLCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW19IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVQcm92aWRlciB7XG4gICAgX3BpcGVNZXRhO1xuICAgIF9sb2NhbGUgPSBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJztcbiAgICBmb3JtYXRzQnlMb2NhbGU7XG4gICAgcHJlcGFyZVBpcGVNZXRhID0gKFxuICAgICAgICByZWZlcmVuY2U6IFBpcGUsXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVyZTogYm9vbGVhbixcbiAgICAgICAgZGlEZXBzID0gW11cbiAgICApID0+ICh7XG4gICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlLCBkaURlcHMgfSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcHVyZVxuICAgIH0pO1xuICAgIF9waXBlRGF0YSA9IFtdO1xuXG4gICAgc2V0UGlwZURhdGEoKSB7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhID0gW1xuICAgICAgICAgICAgLy8gVE9ETyB8IE5FRUQgVE8gQkUgVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShBc3luY1BpcGUsICdhc3luYycsIGZhbHNlLCBbQ2hhbmdlRGV0ZWN0b3JSZWZdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFNsaWNlUGlwZSwgJ3NsaWNlJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUGVyY2VudFBpcGUsICdwZXJjZW50JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blBsdXJhbFBpcGUsICdpMThuUGx1cmFsJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIE5nTG9jYWxpemF0aW9uXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEkxOG5TZWxlY3RQaXBlLCAnaTE4blNlbGVjdCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoS2V5VmFsdWVQaXBlLCAna2V5dmFsdWUnLCBmYWxzZSwgW1xuICAgICAgICAgICAgICAgIEtleVZhbHVlRGlmZmVyc1xuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlSWNvbkNsYXNzUGlwZSwgJ2ZpbGVJY29uQ2xhc3MnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFxuICAgICAgICAgICAgICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgICAgICAgICAgICAgJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZScsXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0YXRlQ2xhc3NQaXBlLCAnc3RhdGVDbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsZVNpemVQaXBlLCAnZmlsZXNpemUnLCB0cnVlKSxcbiAgICAgICAgICAgIC8vIFRFU1RFRFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsdGVyUGlwZSwgJ2ZpbHRlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVXBwZXJDYXNlUGlwZSwgJ3VwcGVyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoTG93ZXJDYXNlUGlwZSwgJ2xvd2VyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSnNvblBpcGUsICdqc29uJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGVjaW1hbFBpcGUsICdudW1iZXInLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUaXRsZUNhc2VQaXBlLCAndGl0bGVjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXJyZW5jeVBpcGUsICdjdXJyZW5jeScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKERhdGVQaXBlLCAnZGF0ZScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvRGF0ZVBpcGUsICd0b0RhdGUnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERhdGVQaXBlKHRoaXMuX2xvY2FsZSksIHVuZGVmaW5lZCwgdGhpcy5pbmplY3Rvci5nZXQoQ3VzdG9tUGlwZU1hbmFnZXIpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvTnVtYmVyUGlwZSwgJ3RvTnVtYmVyJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuaTE4c2VydmljZVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUb0N1cnJlbmN5UGlwZSwgJ3RvQ3VycmVuY3knLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFByZWZpeFBpcGUsICdwcmVmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN1ZmZpeFBpcGUsICdzdWZmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpbWVGcm9tTm93UGlwZSwgJ3RpbWVGcm9tTm93JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShOdW1iZXJUb1N0cmluZ1BpcGUsICdudW1iZXJUb1N0cmluZycsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTdHJpbmdUb051bWJlclBpcGUsICdzdHJpbmdUb051bWJlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoQ3VzdG9tUGlwZSwgJ2N1c3RvbScsIHRydWUsIFt0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcildKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRydXN0QXNQaXBlLCAndHJ1c3RBcycsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2FuaXRpemVQaXBlLCAnc2FuaXRpemUnLCB0cnVlLCBbdGhpcy5kb21TYW5pdGl6ZXJdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRlbXBsYXRlUmVwbGFjZVBpcGUsICd0ZW1wbGF0ZVJlcGxhY2UnLCB0cnVlKSxcbiAgICAgICAgXTtcbiAgICB9XG5cblxuICAgIHVua25vd25QaXBlKG5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFRoZSBwaXBlICcke25hbWV9JyBjb3VsZCBub3QgYmUgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgZG9tU2FuaXRpemVyOkRvbVNhbml0aXplciwgcHJpdmF0ZSBpMThzZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnNldFBpcGVEYXRhKCk7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhLmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICB0aGlzLl9waXBlTWV0YS5zZXQodi5uYW1lLCB2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybWF0c0J5TG9jYWxlID0gdGhpcy5pMThzZXJ2aWNlPyB0aGlzLmkxOHNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgOiB7fTtcbiAgICB9XG5cbiAgICBtZXRhKG5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuX3BpcGVNZXRhLmdldChuYW1lKTtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cblxuICAgIGdldFBpcGVOYW1lVnNJc1B1cmVNYXAoKSB7XG4gICAgICAgIGNvbnN0IF9tYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgIF9tYXAuc2V0KGssIHYucHVyZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX21hcDtcbiAgICB9XG5cbiAgICByZXNvbHZlRGVwKGRlcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZGVwLnRva2VuLmlkZW50aWZpZXIucmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICBnZXRJbnN0YW5jZShuYW1lKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlOiByZWYsIGRpRGVwczogZGVwcyB9XG4gICAgICAgIH0gPSB0aGlzLm1ldGEobmFtZSk7XG4gICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkZXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyByZWYoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2goZGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgcmVmKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1368,7 +1368,6 @@ class BasePageComponent extends FragmentMonitor {
|
|
|
1368
1368
|
});
|
|
1369
1369
|
}
|
|
1370
1370
|
ngOnDestroy() {
|
|
1371
|
-
// MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
|
|
1372
1371
|
//this.captureApplicationThumbnail();
|
|
1373
1372
|
this.savePageSnapShot();
|
|
1374
1373
|
this.destroy$.complete();
|
|
@@ -3108,7 +3107,7 @@ class PipeProvider {
|
|
|
3108
3107
|
this.preparePipeMeta(CurrencyPipe, 'currency', true, [this._locale]),
|
|
3109
3108
|
this.preparePipeMeta(DatePipe, 'date', true, [this._locale]),
|
|
3110
3109
|
this.preparePipeMeta(ToDatePipe, 'toDate', true, [
|
|
3111
|
-
new DatePipe(this._locale), undefined, this.injector.get(
|
|
3110
|
+
new DatePipe(this._locale), undefined, this.injector.get(CustomPipeManager)
|
|
3112
3111
|
]),
|
|
3113
3112
|
this.preparePipeMeta(ToNumberPipe, 'toNumber', true, [
|
|
3114
3113
|
new DecimalPipe(this._locale),
|
|
@@ -3125,7 +3124,7 @@ class PipeProvider {
|
|
|
3125
3124
|
new DecimalPipe(this._locale)
|
|
3126
3125
|
]),
|
|
3127
3126
|
this.preparePipeMeta(StringToNumberPipe, 'stringToNumber', true),
|
|
3128
|
-
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(
|
|
3127
|
+
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(CustomPipeManager)]),
|
|
3129
3128
|
this.preparePipeMeta(TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
3130
3129
|
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
3131
3130
|
this.preparePipeMeta(TemplateReplacePipe, 'templateReplace', true),
|