@one-paragon/angular-utilities 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +5 -6
- package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +6 -7
- package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +6 -7
- package/esm2022/http-request-state/HttpRequestStateFactory.mjs +6 -7
- package/esm2022/http-request-state/HttpRequestStateStore.mjs +6 -7
- package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +6 -7
- package/esm2022/http-request-state/directives/http-error-state-directive.mjs +6 -7
- package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +6 -7
- package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +6 -7
- package/esm2022/http-request-state/directives/http-success-state-directive.mjs +6 -7
- package/esm2022/http-request-state/directives/request-state-directive.mjs +6 -7
- package/esm2022/http-request-state/http-state-module.mjs +6 -7
- package/esm2022/table-builder/classes/table-store.mjs +7 -8
- package/esm2022/table-builder/components/array-column.component.mjs +7 -8
- package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +6 -7
- package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +5 -6
- package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +5 -6
- package/esm2022/table-builder/components/filter/filter.component.mjs +9 -10
- package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +7 -8
- package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +6 -7
- package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +6 -7
- package/esm2022/table-builder/components/generic-table/paginator.component.mjs +7 -8
- package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +5 -6
- package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +6 -7
- package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +6 -7
- package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +5 -6
- package/esm2022/table-builder/components/link-column.component.mjs +6 -7
- package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +5 -6
- package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +6 -7
- package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +6 -7
- package/esm2022/table-builder/components/table-container/table-container.mjs +5 -6
- package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +5 -6
- package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +6 -7
- package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +6 -7
- package/esm2022/table-builder/directives/custom-cell-directive.mjs +7 -8
- package/esm2022/table-builder/directives/multi-sort.directive.mjs +6 -7
- package/esm2022/table-builder/directives/resize-column.directive.mjs +6 -7
- package/esm2022/table-builder/directives/table-wrapper.directive.mjs +5 -6
- package/esm2022/table-builder/directives/tb-filter.directive.mjs +57 -67
- package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +6 -7
- package/esm2022/table-builder/pipes/column-total.pipe.mjs +5 -6
- package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +5 -6
- package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +6 -7
- package/esm2022/table-builder/pipes/key-display.mjs +6 -7
- package/esm2022/table-builder/services/export-to-csv.service.mjs +7 -8
- package/esm2022/table-builder/services/table-template-service.mjs +6 -7
- package/esm2022/table-builder/services/transform-creator.mjs +7 -8
- package/esm2022/table-builder/table-builder.module.mjs +6 -7
- package/esm2022/utilities/directives/auto-focus.directive.mjs +6 -7
- package/esm2022/utilities/directives/clickEmitterDirective.mjs +6 -7
- package/esm2022/utilities/directives/clickSubject.mjs +6 -7
- package/esm2022/utilities/directives/conditional-classes.directive.mjs +6 -7
- package/esm2022/utilities/directives/dialog-service.mjs +5 -6
- package/esm2022/utilities/directives/dialog.mjs +11 -13
- package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +5 -6
- package/esm2022/utilities/directives/prevent-enter.directive.mjs +5 -6
- package/esm2022/utilities/directives/stop-propagation.directive.mjs +5 -6
- package/esm2022/utilities/directives/styler.mjs +6 -7
- package/esm2022/utilities/directives/trim-whitespace.directive.mjs +6 -7
- package/esm2022/utilities/module.mjs +6 -7
- package/esm2022/utilities/pipes/function.pipe.mjs +5 -6
- package/esm2022/utilities/pipes/phone.pipe.mjs +5 -6
- package/esm2022/utilities/pipes/space-case.pipes.mjs +5 -6
- package/fesm2022/one-paragon-angular-utilities.mjs +291 -291
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
- package/http-request-state/HttpRequestStateStore.d.ts +1 -1
- package/package.json +8 -8
|
@@ -14,7 +14,7 @@ import * as i0 from "@angular/core";
|
|
|
14
14
|
export function stateIs(initializationState) {
|
|
15
15
|
return (state) => state.initializationState === initializationState;
|
|
16
16
|
}
|
|
17
|
-
class TableStore extends ComponentStore {
|
|
17
|
+
export class TableStore extends ComponentStore {
|
|
18
18
|
constructor(config) {
|
|
19
19
|
super({ ...defaultTableState, ...config.defaultTableState });
|
|
20
20
|
this.on = (srcObservable, func) => {
|
|
@@ -275,16 +275,15 @@ class TableStore extends ComponentStore {
|
|
|
275
275
|
onReady(func) {
|
|
276
276
|
this.runOnceWhen(stateIs(InitializationState.Ready), func);
|
|
277
277
|
}
|
|
278
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
279
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TableStore, deps: [{ token: TableBuilderConfigToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
279
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TableStore }); }
|
|
280
280
|
}
|
|
281
|
-
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: TableStore, decorators: [{
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TableStore, decorators: [{
|
|
283
282
|
type: Injectable
|
|
284
|
-
}], ctorParameters:
|
|
283
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
285
284
|
type: Inject,
|
|
286
285
|
args: [TableBuilderConfigToken]
|
|
287
|
-
}] }]
|
|
286
|
+
}] }] });
|
|
288
287
|
export const orderViewableMetaData = (state) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);
|
|
289
288
|
export const orderMetaData = (state) => {
|
|
290
289
|
const userOrderArr = Object.entries(state.userDefined.order);
|
|
@@ -293,4 +292,4 @@ export const orderMetaData = (state) => {
|
|
|
293
292
|
:
|
|
294
293
|
Object.values(state.metaData).sort((a, b) => a.order - b.order);
|
|
295
294
|
};
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFTLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDNUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFDekQsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFM0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxtQkFBd0M7SUFDOUQsT0FBTyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQztBQUNsRixDQUFD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QUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVTs7MEJBR0ksTUFBTTsyQkFBQyx1QkFBdUI7O0FBNFU3QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7SUFDaEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0csQ0FBQztZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFBO0FBQ2xFLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEsIFNvcnREZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVmYXVsdFRhYmxlU3RhdGUsIEdyb3VwLCBJbml0aWFsaXphdGlvblN0YXRlLCBrZXlzVG9EZWxldGUsIFBlcnNpc3RlZFRhYmxlU3RhdGUsIFRhYmxlU3RhdGUgfSBmcm9tICcuL1RhYmxlU3RhdGUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXJDb25maWcsIFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi9UYWJsZUJ1aWxkZXJDb25maWcnO1xyXG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIsIEZpbHRlckluZm8sIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgU29ydCwgU29ydERpcmVjdGlvbiB9ICBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JyA7XHJcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJyAgO1xyXG5pbXBvcnQgdXBkYXRlIGZyb20gJ2ltbXV0YWJpbGl0eS1oZWxwZXInO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWN0aW9uYXJ5JztcclxuaW1wb3J0IHsgZmlsdGVyLCBsYXN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgbm90TnVsbCwgb25jZVdoZW4gfSBmcm9tICcuLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgR2VuZXJhbFRhYmxlU2V0dGluZ3MsIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgfSBmcm9tICcuL3RhYmxlLWJ1aWxkZXItZ2VuZXJhbC1zZXR0aW5ncyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJcyhpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlKSB7XHJcbiAgcmV0dXJuIChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGFibGVTdG9yZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPFRhYmxlU3RhdGU+IHtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChUYWJsZUJ1aWxkZXJDb25maWdUb2tlbikgY29uZmlnOiBUYWJsZUJ1aWxkZXJDb25maWcpIHtcclxuICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLmNvbmZpZy5kZWZhdWx0VGFibGVTdGF0ZX0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZVN0YXRlKCkgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+IHtcclxuICAgIHJldHVybiAgdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgbWFwKCBzID0+IHtcclxuICAgICAgICBjb25zdCBzYXZhYmxlU3RhdGUgPSB7Li4uc30gYXMgUGFydGlhbDxUYWJsZVN0YXRlPjtcclxuICAgICAgICBrZXlzVG9EZWxldGUuZm9yRWFjaChrZXkgPT4gZGVsZXRlIHNhdmFibGVTdGF0ZVtrZXldKTtcclxuICAgICAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb24gPSA8Vj4oc3JjT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxWPiwgZnVuYzogKG9iajogVikgPT4gdm9pZCkgPT4ge1xyXG4gICAgdGhpcy5lZmZlY3QoKCkgPT4gc3JjT2JzZXJ2YWJsZS5waXBlKFxyXG4gICAgICB0YXAoZnVuYylcclxuICAgICkpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBvbkxhc3QoY2FsbGJhY2s6IChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gdm9pZCApIHtcclxuICAgIHRoaXMub24odGhpcy5zdGF0ZSQucGlwZShsYXN0KCkpLGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhQXJyYXkkID0gdGhpcy5zZWxlY3QoXHJcbiAgICB0aGlzLnN0YXRlJCxcclxuICAgIG9yZGVyTWV0YURhdGFcclxuICApO1xyXG5cclxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YVtrZXldICApLnBpcGUoXHJcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcclxuICAgICAgbm90TnVsbCgpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRlZmluZWRXaWR0aCQgPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xyXG4gIGdldFVzZXJEZWZpbmVkV2lkdGhzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRocyk7XHJcblxyXG4gIHByaXZhdGUgZGlzcGxheWVkQ29sdW1ucyA9ICAoc3RhdGU6VGFibGVTdGF0ZSkgPT4gb3JkZXJNZXRhRGF0YShzdGF0ZSkubWFwKG1kID0+IG1kLmtleSlcclxuICAgIC5maWx0ZXIoa2V5ID0+ICFzdGF0ZS5oaWRkZW5LZXlzLmluY2x1ZGVzKGtleSkgJiYgc3RhdGUubWV0YURhdGFba2V5XS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5zZWxlY3QodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcclxuICByZWFkb25seSBoaWRlQ29sdW1uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGhpZGRlbktleXM6IFsuLi5zdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLCBrZXldLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgcmVzZXRTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+IHtcclxuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKVxyXG4gICAgICAuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkhpZGRlbilcclxuICAgICAgLm1hcChtZCA9PiBtZC5rZXkpO1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiB1cGRhdGUoc3RhdGUsIHtcclxuICAgICAgIGhpZGRlbktleXM6IHsgJHNldDogWy4uLmhpZGRlbkNvbHVtbnNdIH0sXHJcbiAgICAgICBmaWx0ZXJzOiB7ICRzZXQ6IHt9IH0sXHJcbiAgICAgICBzb3J0ZWQ6IHskc2V0OiBzb3J0ZWR9LFxyXG4gICAgICAgdXNlckRlZmluZWQgOiB7JHNldDoge3dpZHRoczp7fSxvcmRlcjp7fSx0YWJsZTp7fX19LFxyXG4gICAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgc2V0SGlkZGVuQ29sdW1ucyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRpc3BsYXlDb2xzOiB7a2V5OiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW59W10pID0+IHtcclxuXHJcbiAgICB2YXIgaGlkZGVuS2V5c1NldD0gbmV3IFNldDxzdHJpbmc+KFxyXG4gICAgICBbXHJcbiAgICAgICAgLi4uZGlzcGxheUNvbHMuZmlsdGVyKGNvbCA9PiAhY29sLnZpc2libGUpLm1hcChjb2wgPT4gY29sLmtleSksXHJcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSkuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkhpZGRlbikubWFwKG1kID0+IG1kLmtleSlcclxuICAgICAgXVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gdXBkYXRlKCBzdGF0ZSAsIHsgaGlkZGVuS2V5czogeyRzZXQ6IFsuLi5oaWRkZW5LZXlzU2V0XX19KTtcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsIHdpZHRoczp1c2VyRGVmaW5lZFdpZHRoc319O1xyXG4gIH0pO1xyXG5cclxuICBzZXRVc2VyRGVmaW5lZE9yZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtb3ZlZDp7bmV3T3JkZXI6bnVtYmVyLG9sZE9yZGVyOm51bWJlcn0pPT57XHJcbiAgICBjb25zdCB7bmV3T3JkZXIgLG9sZE9yZGVyfSA9IG1vdmVkO1xyXG4gICAgY29uc3QgbWRzQXJyID0gb3JkZXJWaWV3YWJsZU1ldGFEYXRhKHN0YXRlKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShtZHNBcnIsb2xkT3JkZXIsbmV3T3JkZXIpO1xyXG5cclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkT3JkZXIgPSBtZHNBcnIucmVkdWNlKChhZ2dyZWdhdGU6IGFueSxjdXJyZW50LGluZGV4KSA9PiB7XHJcbiAgICAgIGFnZ3JlZ2F0ZVtjdXJyZW50LmtleV0gPSBpbmRleDtcclxuICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZVxyXG4gICAgfSx7fSk7XHJcbiAgICByZXR1cm4oey4uLnN0YXRlLCB1c2VyRGVmaW5lZDogey4uLnN0YXRlLnVzZXJEZWZpbmVkLCBvcmRlcjp1c2VyRGVmaW5lZE9yZGVyfX0pXHJcbiAgfSlcclxuXHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlcnMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZmlsdGVycyApO1xyXG5cclxuICByZWFkb25seSBnZXRGaWx0ZXIkID0gKGZpbHRlcklkOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIHwgdW5kZWZpbmVkPiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoIHN0YXRlID0+IHN0YXRlLmZpbHRlcnNbZmlsdGVySWRdICk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGFkZEZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXI6IEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIgKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgW2ZpbHRlcl0pO1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBhZGRGaWx0ZXJzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxmaWx0ZXJzOihGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIClbXSk9PntcclxuICAgIHJldHVybiB0aGlzLmFkZEZpbHRlcnNUb1N0YXRlKHN0YXRlLCBmaWx0ZXJzKTtcclxuICB9KVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRGaWx0ZXJzVG9TdGF0ZSA9IChzdGF0ZTpUYWJsZVN0YXRlLGZpbHRlcnM6KEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIpW10pIDogVGFibGVTdGF0ZSA9PiB7XHJcblxyXG4gICAgdmFyIGN1c3RvbUZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlciggIGlzQ3VzdG9tRmlsdGVyICk7XHJcblxyXG4gICAgdmFyIGZpbHRlckluZm9zID0gZmlsdGVycy5maWx0ZXIoaXNGaWx0ZXJJbmZvKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzT2JqID0gZmlsdGVySW5mb3NcclxuICAgICAgLmZpbHRlcihmbHRyID0+IE9iamVjdC5rZXlzKHN0YXRlLm1ldGFEYXRhKS5zb21lKGtleSA9PiBrZXkgPT09IGZsdHIua2V5KSB8fCBjb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2ZsdHIua2V5fSBub3QgZm91bmRgKSlcclxuICAgICAgLnJlZHVjZSgoZmlsdGVyc09iajoge1trOiBzdHJpbmddOiBhbnl9LGZpbHRlcik9PntcclxuICAgICAgICBpZiAoIWZpbHRlci5maWx0ZXJJZCkge1xyXG4gICAgICAgICAgZmlsdGVyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWx0ZXJzT2JqW2ZpbHRlci5maWx0ZXJJZF0gPSBmaWx0ZXI7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnNPYmo7XHJcbiAgICAgIH0se30pO1xyXG5cclxuICAgICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgICBpZighZmx0ci5maWx0ZXJJZCkge1xyXG4gICAgICAgICAgZmx0ci5maWx0ZXJJZCA9IHV1aWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsdGVyc09ialtmbHRyLmZpbHRlcklkXSA9IGZsdHI7XHJcbiAgICAgIH0pXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgZmlsdGVycyA6IHsuLi5zdGF0ZS5maWx0ZXJzLCAuLi5maWx0ZXJzT2JqIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWFkb25seSByZW1vdmVGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWQ6IHN0cmluZykgPT5cclxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbZmlsdGVySWQgXX19KVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWRzOiBzdHJpbmdbXSkgPT5cclxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbLi4uZmlsdGVySWRzIF19fSlcclxuICApO1xyXG5cclxuICByZWFkb25seSBjbGVhckZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+XHJcbiAgICAoey4uLnN0YXRlLGZpbHRlcnM6e319KSlcclxuXHJcblxyXG4gIHJlYWRvbmx5IHNvcnRlZCQgPSB0aGlzLnN0YXRlJC5waXBlKFxyXG4gICAgZmlsdGVyKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSkpLFxyXG4gICAgbWFwKCBzdGF0ZSA9PiBzdGF0ZS5zb3J0ZWQpXHJcbiAgKTtcclxuXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgIC5zb3J0KCh7ICBwcmVTb3J0OiBwczEgIH0sIHsgcHJlU29ydDogcHMyIH0gKSA9PiAocHMxLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkgLSAoIHBzMi5wcmVjZWRlbmNlIHx8IE51bWJlci5NQVhfVkFMVUUpKVxyXG4gICAgLm1hcCgoIHtrZXksIHByZVNvcnR9ICkgPT4gKHsgYWN0aXZlOiBrZXksIGRpcmVjdGlvbjogcHJlU29ydC5kaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG4gIHJlYWRvbmx5IHNldFNvcnQgPSB0aGlzLnVwZGF0ZXI8e2tleTogc3RyaW5nLCBkaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9ufT4oKHN0YXRlLCB7a2V5LCBkaXJlY3Rpb259ICkgPT4ge1xyXG4gICAgY29uc3Qgc29ydEFycmF5ID0gc3RhdGUuc29ydGVkLmZpbHRlciggcyA9PiBzLmFjdGl2ZSAhPT0ga2V5ICk7XHJcbiAgICBpZihkaXJlY3Rpb24pIHtcclxuICAgICAgc29ydEFycmF5LnVuc2hpZnQoe2FjdGl2ZToga2V5LCBkaXJlY3Rpb259KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzb3J0ZWQ6IHNvcnRBcnJheSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEFsbFNvcnQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLHNvcnRBcnJheTpTb3J0W10pPT57XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICB1cGRhdGVTdGF0ZUZ1bmMgPSAoc3RhdGU6IFRhYmxlU3RhdGUsIGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPikgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IG1ldGFEYXRhID0gc3RhdGUubWV0YURhdGE7XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkPy5sZW5ndGggPyBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkXHJcbiAgICAgIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5DcmVhdGVkID8gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKSA6IHN0YXRlLnNvcnRlZDtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIC4uLmluY29taW5nVGFibGVTdGF0ZSwgbWV0YURhdGEgLCBzb3J0ZWR9O1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0UGFnZVNpemUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgcGFnZVNpemU6IG51bWJlcik9PiAoeyAuLi5zdGF0ZSwgcGFnZVNpemUsIHVzZXJEZWZpbmVkOiB7IC4uLnN0YXRlLnVzZXJEZWZpbmVkLCBwYWdlU2l6ZSB9IH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXI8UGFydGlhbDxUYWJsZVN0YXRlPj4odGhpcy51cGRhdGVTdGF0ZUZ1bmMpO1xyXG5cclxuICBjbGVhblBlcnNpc3RlZFN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlLHBTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkge1xyXG4gICAgY29uc3QgbWV0YXMgPSBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QudmFsdWVzKHBTdGF0ZS5maWx0ZXJzKS5maWx0ZXIoZmx0ciA9PiBpc0N1c3RvbUZpbHRlcihmbHRyKSB8fCBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IGZsdHIua2V5KSkucmVkdWNlKChvYmo6IGFueSwgZmlsdGVyKSA9PiB7XHJcbiAgICAgIG9ialtmaWx0ZXIuZmlsdGVySWQhXSA9IHBTdGF0ZS5maWx0ZXJzW2ZpbHRlci5maWx0ZXJJZCFdO1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfSwge30pO1xyXG4gICAgY29uc3Qgc29ydGVkID0gcFN0YXRlLnNvcnRlZC5maWx0ZXIocyA9PiBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IHMuYWN0aXZlKSk7XHJcbiAgICByZXR1cm4gKHsuLi5wU3RhdGUsZmlsdGVycyxzb3J0ZWR9KVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGVGcm9tUGVyc2lzdGVkU3RhdGUgPSB0aGlzLnVwZGF0ZXIoICggc3RhdGU6IFRhYmxlU3RhdGUsIHBlcnNpc3RlZFN0YXRlOiBQZXJzaXN0ZWRUYWJsZVN0YXRlKSA6IFRhYmxlU3RhdGUgPT4ge1xyXG4gICAgY29uc3QgaW5jb21pbmdUYWJsZVN0YXRlOiBQYXJ0aWFsPFRhYmxlU3RhdGU+ID0gdGhpcy5jbGVhblBlcnNpc3RlZFN0YXRlKHN0YXRlLHBlcnNpc3RlZFN0YXRlKTtcclxuICAgIGNvbnN0IG5ld1N0YXRlID0gIHRoaXMudXBkYXRlU3RhdGVGdW5jKHN0YXRlLGluY29taW5nVGFibGVTdGF0ZSk7XHJcbiAgICBuZXdTdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID0gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCA/IEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxuICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICB9KTtcclxuXHJcbiAgZ2V0VXNlckRlZmluZWRUYWJsZVNpemUkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQudGFibGUud2lkdGgpO1xyXG4gIHNldFRhYmxlV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLHdpZHRoSW5waXhlbHM6bnVtYmVyKSA9PiAoey4uLnN0YXRlLHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsdGFibGU6e3dpZHRoOndpZHRoSW5waXhlbHN9fX0pKSA7XHJcblxyXG4gIG1lcmdlTWV0YSA9IChvcmlnOiBNZXRhRGF0YSwgbWVyZ2U6IE1ldGFEYXRhKTogTWV0YURhdGEgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IG9yaWcua2V5LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBtZXJnZS5kaXNwbGF5TmFtZSA/PyBvcmlnLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgIGZpZWxkVHlwZTogbWVyZ2UuZmllbGRUeXBlIHx8IG9yaWcuZmllbGRUeXBlLFxyXG4gICAgICAgIGFkZGl0aW9uYWw6IHsuLi5vcmlnLmFkZGl0aW9uYWwsIC4uLm1lcmdlLmFkZGl0aW9uYWx9LFxyXG4gICAgICAgIG9yZGVyOiBtZXJnZS5vcmRlciA/PyBvcmlnLm9yZGVyLFxyXG4gICAgICAgIHByZVNvcnQ6IG1lcmdlLnByZVNvcnQgPz8gb3JpZy5wcmVTb3J0LFxyXG4gICAgICAgIF9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkOiBtZXJnZS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCB8fCBvcmlnLl9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkLFxyXG4gICAgICAgIHdpZHRoOiBtZXJnZS53aWR0aCA/PyBvcmlnLndpZHRoLFxyXG4gICAgICAgIG5vRXhwb3J0OiBtZXJnZS5ub0V4cG9ydCB8fCBvcmlnLm5vRXhwb3J0LFxyXG4gICAgICAgIG5vRmlsdGVyOiBtZXJnZS5ub0ZpbHRlciB8fCBvcmlnLm5vRmlsdGVyLFxyXG4gICAgICAgIGN1c3RvbUNlbGw6IG1lcmdlLmN1c3RvbUNlbGwgPz8gb3JpZy5jdXN0b21DZWxsLFxyXG4gICAgICAgIHRyYW5zZm9ybTogbWVyZ2UudHJhbnNmb3JtID8/IG9yaWcudHJhbnNmb3JtLFxyXG4gICAgICAgIGNsaWNrOiBtZXJnZS5jbGljayA/PyBvcmlnLmNsaWNrLFxyXG4gICAgICAgIGNsYXNzZXM6IG1lcmdlLmNsYXNzZXMgPz8gb3JpZy5jbGFzc2VzLFxyXG4gICAgICAgIG5vU29ydDogbWVyZ2Uubm9Tb3J0ID8/IG9yaWcubm9Tb3J0LFxyXG4gICAgICAgIHRlbXBsYXRlOiBtZXJnZS50ZW1wbGF0ZSA/PyBvcmlnLnRlbXBsYXRlLFxyXG4gICAgICAgIHRvb2xUaXA6IG1lcmdlLnRvb2xUaXAgPz8gb3JpZy50b29sVGlwLFxyXG4gICAgICAgIHVzZUljb246IG1lcmdlLnVzZUljb24gPz8gb3JpZy51c2VJY29uLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldEluaXRpYWxpemF0aW9uU3RhdGUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZTogIEluaXRpYWxpemF0aW9uU3RhdGUpID0+IHtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGV9O1xyXG4gIH0pO1xyXG5cclxuICBydW5PbmNlV2hlbihwcmVkaWNhdGU6IFByZWRpY2F0ZTxUYWJsZVN0YXRlPiwgZnVuYzogKHN0YXRlOlRhYmxlU3RhdGUpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IG9icyA9IHRoaXMuc3RhdGUkLnBpcGUob25jZVdoZW4ocHJlZGljYXRlKSk7XHJcbiAgICB0aGlzLm9uKG9icywgKHN0YXRlKSA9PiB7XHJcbiAgICAgIGZ1bmMoc3RhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlYWR5KCBmdW5jOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XHJcbiAgICB0aGlzLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSksZnVuYyk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRNZXRhRGF0YSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1kOiBNZXRhRGF0YVtdIHwgTWV0YURhdGEgKSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9ICggQXJyYXkuaXNBcnJheShtZCkgPyBbLi4ubWRdIDogW21kXSApXHJcbiAgICAgIC5yZWR1Y2UoKHByZXY6IERpY3Rpb25hcnk8TWV0YURhdGE+LGN1cnIpID0+IHtcclxuICAgICAgICBpZihwcmV2W2N1cnIua2V5XSkge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSB0aGlzLm1lcmdlTWV0YShwcmV2W2N1cnIua2V5XSxjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSBjdXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJldjtcclxuICAgICAgfSAse30pO1xyXG4gICAgbGV0IHNvcnRlZCA9IHN0YXRlLnNvcnRlZDtcclxuICAgIGlmKHNvcnRlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5pbml0aWFsaXplT3JkZXIoc3RhdGUsIG1ldGFEYXRhKTtcclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/ICBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGUsIG1ldGFEYXRhLCBzb3J0ZWQsIHVzZXJEZWZpbmVkOnsuLi5zdGF0ZS51c2VyRGVmaW5lZCxvcmRlcjpvcmRlcn19O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVPcmRlciA9IChzdGF0ZTpUYWJsZVN0YXRlLG1kczogRGljdGlvbmFyeTxNZXRhRGF0YT4pIDogRGljdGlvbmFyeTxudW1iZXI+ID0+IHtcclxuICAgIGNvbnN0IHZpZXdhYmxlTWV0YURhdGFBcnIgPSBPYmplY3QudmFsdWVzKG1kcykuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gICAgbGV0IHVzZXJEZWZpbmVkT3JkZXIgPSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcjtcclxuICAgIGlmKHZpZXdhYmxlTWV0YURhdGFBcnIuc29tZShtZXRhID0+IHVzZXJEZWZpbmVkT3JkZXJbbWV0YS5rZXldID09IG51bGwpKXtcclxuICAgICAgcmV0dXJuIHt9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlckRlZmluZWRPcmRlcjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlSGVhZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcclxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXI7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcclxuICB9KVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUZvb3RlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSlcclxuXHJcbiAgYWRkR3JvdXBCeUtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGdyb3VwQnlLZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeUtleXM6IFsuLi5zdGF0ZS5ncm91cEJ5S2V5cywgZ3JvdXBCeUtleV1cclxuICB9KSk7XHJcblxyXG4gIHJlbW92ZUdyb3VwQnlLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cEJ5S2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnlLZXlzOiBzdGF0ZS5ncm91cEJ5S2V5cy5maWx0ZXIoa2V5ID0+IGdyb3VwQnlLZXkgIT0ga2V5KVxyXG4gIH0pKTtcclxuXHJcbiAgdXBkYXRlR3JvdXAgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cDogR3JvdXApID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwczogWy4uLnN0YXRlLmdyb3Vwcy5maWx0ZXIoZyA9PiBnLmdyb3VwTmFtZSAhPSBncm91cC5ncm91cE5hbWUpLCBncm91cF1cclxuICB9KSlcclxuXHJcbiAgZ3JvdXBCeUtleXMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ3JvdXBCeUtleXMpO1xyXG4gIGdyb3VwcyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ncm91cHMpO1xyXG5cclxuICBzZXRUYWJsZVNldHRpbmdzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzZXR0aW5nczpHZW5lcmFsVGFibGVTZXR0aW5ncyk9PntcclxuICAgIGNvbnN0IHM6VGFibGVTdGF0ZSA9IHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgUGVyc2lzdGVkVGFibGVTZXR0aW5ncyhzZXR0aW5ncyksXHJcbiAgICAgIG5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgTm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncyhzZXR0aW5ncylcclxuICAgICAgfTtcclxuICAgIHJldHVybiBzO1xyXG4gIH0pO1xyXG5cclxuICB0YWJsZVNldHRpbmdzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHRzIDogUGVyc2lzdGVkVGFibGVTZXR0aW5ncyAmIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgPVxyXG4gICAgICB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncywuLi5zdGF0ZS5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzfTtcclxuICAgIHJldHVybiB0cztcclxuICB9KVxyXG5cclxuICBzZXRMaW5rTWFwcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsbWFwczogYW55KT0+e1xyXG4gICAgcmV0dXJuIHsuLi5zdGF0ZSxsaW5rTWFwczptYXBzfTtcclxuICB9KTtcclxuICBnZXRMaW5rTWFwID0gKG1kOk1ldGFEYXRhKSA9PntcclxuICAgIHJldHVybiAgdGhpcy5zZWxlY3Qoc3RhdGUgPT4ge1xyXG4gICAgICByZXR1cm4gc3RhdGUubGlua01hcHNbbWQua2V5XX0pfTtcclxufVxyXG5leHBvcnQgY29uc3Qgb3JkZXJWaWV3YWJsZU1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IG9yZGVyTWV0YURhdGEoc3RhdGUpLmZpbHRlcihhID0+IGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlck1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IHtcclxuICBjb25zdCB1c2VyT3JkZXJBcnIgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbiAgcmV0dXJuIHVzZXJPcmRlckFyci5sZW5ndGggP1xyXG4gICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKS5zb3J0KChhLGIpPT4gc3RhdGUudXNlckRlZmluZWQub3JkZXJbYS5rZXldIC0gc3RhdGUudXNlckRlZmluZWQub3JkZXJbYi5rZXldKVxyXG4gICA6XHJcbiAgIE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpLnNvcnQoKGEsYik9PiBhLm9yZGVyISAtIGIub3JkZXIhKVxyXG59XHJcbiJdfQ==
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFTLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDNUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFDekQsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFM0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxtQkFBd0M7SUFDOUQsT0FBTyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQztBQUNsRixDQUFD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QVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQUdJLE1BQU07MkJBQUMsdUJBQXVCOztBQTRVN0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFOUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO0lBQ2hELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNHLENBQUM7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBTSxHQUFHLENBQUMsQ0FBQyxLQUFNLENBQUMsQ0FBQTtBQUNsRSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhLCBTb3J0RGVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZmF1bHRUYWJsZVN0YXRlLCBHcm91cCwgSW5pdGlhbGl6YXRpb25TdGF0ZSwga2V5c1RvRGVsZXRlLCBQZXJzaXN0ZWRUYWJsZVN0YXRlLCBUYWJsZVN0YXRlIH0gZnJvbSAnLi9UYWJsZVN0YXRlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnLCBUYWJsZUJ1aWxkZXJDb25maWdUb2tlbiB9IGZyb20gJy4vVGFibGVCdWlsZGVyQ29uZmlnJztcclxuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyLCBGaWx0ZXJJbmZvLCBpc0N1c3RvbUZpbHRlciwgaXNGaWx0ZXJJbmZvIH0gZnJvbSAnLi9maWx0ZXItaW5mbyc7XHJcbmltcG9ydCB7IFNvcnQsIFNvcnREaXJlY3Rpb24gfSAgZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCcgO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZScgIDtcclxuaW1wb3J0IHVwZGF0ZSBmcm9tICdpbW11dGFiaWxpdHktaGVscGVyJztcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XHJcbmltcG9ydCB7IGZpbHRlciwgbGFzdCwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IG5vdE51bGwsIG9uY2VXaGVuIH0gZnJvbSAnLi4vLi4vcnhqcy9yeGpzLW9wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyYWxUYWJsZVNldHRpbmdzLCBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLCBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIH0gZnJvbSAnLi90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlSXMoaW5pdGlhbGl6YXRpb25TdGF0ZTogSW5pdGlhbGl6YXRpb25TdGF0ZSkge1xyXG4gIHJldHVybiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IGluaXRpYWxpemF0aW9uU3RhdGU7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxUYWJsZVN0YXRlPiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pIGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnKSB7XHJcbiAgIHN1cGVyKCB7IC4uLmRlZmF1bHRUYWJsZVN0YXRlLCAuLi5jb25maWcuZGVmYXVsdFRhYmxlU3RhdGV9KTtcclxuICB9XHJcblxyXG4gIGdldFNhdmFibGVTdGF0ZSgpIDogT2JzZXJ2YWJsZTxQZXJzaXN0ZWRUYWJsZVN0YXRlPiB7XHJcbiAgICByZXR1cm4gIHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcCggcyA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2F2YWJsZVN0YXRlID0gey4uLnN9IGFzIFBhcnRpYWw8VGFibGVTdGF0ZT47XHJcbiAgICAgICAga2V5c1RvRGVsZXRlLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBzYXZhYmxlU3RhdGVba2V5XSk7XHJcbiAgICAgICAgcmV0dXJuIHNhdmFibGVTdGF0ZSBhcyBQZXJzaXN0ZWRUYWJsZVN0YXRlO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uID0gPFY+KHNyY09ic2VydmFibGU6IE9ic2VydmFibGU8Vj4sIGZ1bmM6IChvYmo6IFYpID0+IHZvaWQpID0+IHtcclxuICAgIHRoaXMuZWZmZWN0KCgpID0+IHNyY09ic2VydmFibGUucGlwZShcclxuICAgICAgdGFwKGZ1bmMpXHJcbiAgICApKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgb25MYXN0KGNhbGxiYWNrOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XHJcbiAgICB0aGlzLm9uKHRoaXMuc3RhdGUkLnBpcGUobGFzdCgpKSxjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBtZXRhRGF0YSQgPSB0aGlzLnNlbGVjdCggc3RhdGUgPT4gc3RhdGUubWV0YURhdGEpO1xyXG5cclxuICByZWFkb25seSBtZXRhRGF0YUFycmF5JCA9IHRoaXMuc2VsZWN0KFxyXG4gICAgdGhpcy5zdGF0ZSQsXHJcbiAgICBvcmRlck1ldGFEYXRhXHJcbiAgKTtcclxuXHJcbiAgZ2V0TWV0YURhdGEkID0gKGtleTogc3RyaW5nKSA6IE9ic2VydmFibGU8TWV0YURhdGE+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdCggc3RhdGUgPT4gc3RhdGUubWV0YURhdGFba2V5XSAgKS5waXBlKFxyXG4gICAgICB0YXAobWV0YSA9PiB7aWYoIW1ldGEpY29uc29sZS53YXJuKGBNZXRhIGRhdGEgd2l0aCBrZXkgJHtrZXl9IG5vdCBmb3VuZGApfSksXHJcbiAgICAgIG5vdE51bGwoKSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJEZWZpbmVkV2lkdGgkID0gKGtleTpzdHJpbmcpID0+IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc1trZXldKTtcclxuICBnZXRVc2VyRGVmaW5lZFdpZHRocyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC53aWR0aHMpO1xyXG5cclxuICBwcml2YXRlIGRpc3BsYXllZENvbHVtbnMgPSAgKHN0YXRlOlRhYmxlU3RhdGUpID0+IG9yZGVyTWV0YURhdGEoc3RhdGUpLm1hcChtZCA9PiBtZC5rZXkpXHJcbiAgICAuZmlsdGVyKGtleSA9PiAhc3RhdGUuaGlkZGVuS2V5cy5pbmNsdWRlcyhrZXkpICYmIHN0YXRlLm1ldGFEYXRhW2tleV0uZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zJCA9IHRoaXMuc2VsZWN0KHRoaXMuZGlzcGxheWVkQ29sdW1ucyk7XHJcbiAgcmVhZG9ubHkgaGlkZUNvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBbLi4uc3RhdGUuaGlkZGVuS2V5cy5maWx0ZXIoIGsgPT4gayAhPT0ga2V5KSwga2V5XSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHJlc2V0U3RhdGUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiB7XHJcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSlcclxuICAgICAgLmZpbHRlcihtZCA9PiBtZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5IaWRkZW4pXHJcbiAgICAgIC5tYXAobWQgPT4gbWQua2V5KTtcclxuICAgIGNvbnN0IHNvcnRlZCA9IHRoaXMuY3JlYXRlUHJlU29ydChzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgICByZXR1cm4gdXBkYXRlKHN0YXRlLCB7XHJcbiAgICAgICBoaWRkZW5LZXlzOiB7ICRzZXQ6IFsuLi5oaWRkZW5Db2x1bW5zXSB9LFxyXG4gICAgICAgZmlsdGVyczogeyAkc2V0OiB7fSB9LFxyXG4gICAgICAgc29ydGVkOiB7JHNldDogc29ydGVkfSxcclxuICAgICAgIHVzZXJEZWZpbmVkIDogeyRzZXQ6IHt3aWR0aHM6e30sb3JkZXI6e30sdGFibGU6e319fSxcclxuICAgICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IHNob3dDb2x1bW4gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgaGlkZGVuS2V5czogc3RhdGUuaGlkZGVuS2V5cy5maWx0ZXIoIGsgPT4gayAhPT0ga2V5KSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEhpZGRlbkNvbHVtbnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkaXNwbGF5Q29sczoge2tleTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFufVtdKSA9PiB7XHJcblxyXG4gICAgdmFyIGhpZGRlbktleXNTZXQ9IG5ldyBTZXQ8c3RyaW5nPihcclxuICAgICAgW1xyXG4gICAgICAgIC4uLmRpc3BsYXlDb2xzLmZpbHRlcihjb2wgPT4gIWNvbC52aXNpYmxlKS5tYXAoY29sID0+IGNvbC5rZXkpLFxyXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpLmZpbHRlcihtZCA9PiBtZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5IaWRkZW4pLm1hcChtZCA9PiBtZC5rZXkpXHJcbiAgICAgIF1cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHVwZGF0ZSggc3RhdGUgLCB7IGhpZGRlbktleXM6IHskc2V0OiBbLi4uaGlkZGVuS2V5c1NldF19fSk7XHJcbiAgfSk7XHJcblxyXG5cclxuICBzZXRVc2VyRGVmaW5lZFdpZHRoID0gdGhpcy51cGRhdGVyKChzdGF0ZSxjb2xXaWR0aHM6e2tleTogc3RyaW5nLCB3aWR0aEluUGl4ZWw6bnVtYmVyfVtdKSA9PiB7XHJcbiAgICBjb25zdCB1c2VyRGVmaW5lZFdpZHRocyA9IHsuLi5zdGF0ZS51c2VyRGVmaW5lZC53aWR0aHN9O1xyXG4gICAgY29sV2lkdGhzLmZvckVhY2goY3cgPT4ge1xyXG4gICAgICB1c2VyRGVmaW5lZFdpZHRoc1tjdy5rZXldID0gY3cud2lkdGhJblBpeGVsO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCB1c2VyRGVmaW5lZDogey4uLnN0YXRlLnVzZXJEZWZpbmVkLCB3aWR0aHM6dXNlckRlZmluZWRXaWR0aHN9fTtcclxuICB9KTtcclxuXHJcbiAgc2V0VXNlckRlZmluZWRPcmRlciA9IHRoaXMudXBkYXRlcigoc3RhdGUsbW92ZWQ6e25ld09yZGVyOm51bWJlcixvbGRPcmRlcjpudW1iZXJ9KT0+e1xyXG4gICAgY29uc3Qge25ld09yZGVyICxvbGRPcmRlcn0gPSBtb3ZlZDtcclxuICAgIGNvbnN0IG1kc0FyciA9IG9yZGVyVmlld2FibGVNZXRhRGF0YShzdGF0ZSk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkobWRzQXJyLG9sZE9yZGVyLG5ld09yZGVyKTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGVmaW5lZE9yZGVyID0gbWRzQXJyLnJlZHVjZSgoYWdncmVnYXRlOiBhbnksY3VycmVudCxpbmRleCkgPT4ge1xyXG4gICAgICBhZ2dyZWdhdGVbY3VycmVudC5rZXldID0gaW5kZXg7XHJcbiAgICAgIHJldHVybiBhZ2dyZWdhdGVcclxuICAgIH0se30pO1xyXG4gICAgcmV0dXJuKHsuLi5zdGF0ZSwgdXNlckRlZmluZWQ6IHsuLi5zdGF0ZS51c2VyRGVmaW5lZCwgb3JkZXI6dXNlckRlZmluZWRPcmRlcn19KVxyXG4gIH0pXHJcblxyXG5cclxuICByZWFkb25seSBmaWx0ZXJzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbHRlcnMgKTtcclxuXHJcbiAgcmVhZG9ubHkgZ2V0RmlsdGVyJCA9IChmaWx0ZXJJZDogc3RyaW5nKSA6IE9ic2VydmFibGU8RmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciB8IHVuZGVmaW5lZD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzW2ZpbHRlcklkXSApO1xyXG4gIH1cclxuICByZWFkb25seSBhZGRGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVyOiBGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIFtmaWx0ZXJdKTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWRkRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApW10pPT57XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgZmlsdGVycyk7XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgYWRkRmlsdGVyc1RvU3RhdGUgPSAoc3RhdGU6VGFibGVTdGF0ZSxmaWx0ZXJzOihGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyKVtdKSA6IFRhYmxlU3RhdGUgPT4ge1xyXG5cclxuICAgIHZhciBjdXN0b21GaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoICBpc0N1c3RvbUZpbHRlciApO1xyXG5cclxuICAgIHZhciBmaWx0ZXJJbmZvcyA9IGZpbHRlcnMuZmlsdGVyKGlzRmlsdGVySW5mbyk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyc09iaiA9IGZpbHRlckluZm9zXHJcbiAgICAgIC5maWx0ZXIoZmx0ciA9PiBPYmplY3Qua2V5cyhzdGF0ZS5tZXRhRGF0YSkuc29tZShrZXkgPT4ga2V5ID09PSBmbHRyLmtleSkgfHwgY29uc29sZS53YXJuKGBNZXRhIGRhdGEgd2l0aCBrZXkgJHtmbHRyLmtleX0gbm90IGZvdW5kYCkpXHJcbiAgICAgIC5yZWR1Y2UoKGZpbHRlcnNPYmo6IHtbazogc3RyaW5nXTogYW55fSxmaWx0ZXIpPT57XHJcbiAgICAgICAgaWYgKCFmaWx0ZXIuZmlsdGVySWQpIHtcclxuICAgICAgICAgIGZpbHRlci5maWx0ZXJJZCA9IHV1aWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsdGVyc09ialtmaWx0ZXIuZmlsdGVySWRdID0gZmlsdGVyO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJzT2JqO1xyXG4gICAgICB9LHt9KTtcclxuXHJcbiAgICAgIGN1c3RvbUZpbHRlcnMuZm9yRWFjaCggZmx0ciA9PiB7XHJcbiAgICAgICAgaWYoIWZsdHIuZmlsdGVySWQpIHtcclxuICAgICAgICAgIGZsdHIuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcnNPYmpbZmx0ci5maWx0ZXJJZF0gPSBmbHRyO1xyXG4gICAgICB9KVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIGZpbHRlcnMgOiB7Li4uc3RhdGUuZmlsdGVycywgLi4uZmlsdGVyc09iaiB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVyID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGZpbHRlcklkOiBzdHJpbmcpID0+XHJcbiAgICB1cGRhdGUoc3RhdGUsIHtmaWx0ZXJzOiB7JHVuc2V0IDogW2ZpbHRlcklkIF19fSlcclxuICApO1xyXG5cclxuICByZWFkb25seSByZW1vdmVGaWx0ZXJzID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGZpbHRlcklkczogc3RyaW5nW10pID0+XHJcbiAgICB1cGRhdGUoc3RhdGUsIHtmaWx0ZXJzOiB7JHVuc2V0IDogWy4uLmZpbHRlcklkcyBdfX0pXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgY2xlYXJGaWx0ZXJzID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PlxyXG4gICAgKHsuLi5zdGF0ZSxmaWx0ZXJzOnt9fSkpXHJcblxyXG5cclxuICByZWFkb25seSBzb3J0ZWQkID0gdGhpcy5zdGF0ZSQucGlwZShcclxuICAgIGZpbHRlcihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuUmVhZHkpKSxcclxuICAgIG1hcCggc3RhdGUgPT4gc3RhdGUuc29ydGVkKVxyXG4gICk7XHJcblxyXG4gIGNyZWF0ZVByZVNvcnQgPSAobWV0YURhdGFzOiBEaWN0aW9uYXJ5PE1ldGFEYXRhPik6IFNvcnRbXSA9PiB7XHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhtZXRhRGF0YXMpLmZpbHRlcigoIG1ldGFEYXRhICkgOiBtZXRhRGF0YSBpcyBNZXRhRGF0YSAmIHtwcmVTb3J0OiBTb3J0RGVmfSA9PiAhIW1ldGFEYXRhLnByZVNvcnQpXHJcbiAgICAuc29ydCgoeyAgcHJlU29ydDogcHMxICB9LCB7IHByZVNvcnQ6IHBzMiB9ICkgPT4gKHBzMS5wcmVjZWRlbmNlIHx8IE51bWJlci5NQVhfVkFMVUUpIC0gKCBwczIucHJlY2VkZW5jZSB8fCBOdW1iZXIuTUFYX1ZBTFVFKSlcclxuICAgIC5tYXAoKCB7a2V5LCBwcmVTb3J0fSApID0+ICh7IGFjdGl2ZToga2V5LCBkaXJlY3Rpb246IHByZVNvcnQuZGlyZWN0aW9uIH0pKVxyXG4gIH1cclxuICByZWFkb25seSBzZXRTb3J0ID0gdGhpcy51cGRhdGVyPHtrZXk6IHN0cmluZywgZGlyZWN0aW9uPzogU29ydERpcmVjdGlvbn0+KChzdGF0ZSwge2tleSwgZGlyZWN0aW9ufSApID0+IHtcclxuICAgIGNvbnN0IHNvcnRBcnJheSA9IHN0YXRlLnNvcnRlZC5maWx0ZXIoIHMgPT4gcy5hY3RpdmUgIT09IGtleSApO1xyXG4gICAgaWYoZGlyZWN0aW9uKSB7XHJcbiAgICAgIHNvcnRBcnJheS51bnNoaWZ0KHthY3RpdmU6IGtleSwgZGlyZWN0aW9ufSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBzZXRBbGxTb3J0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzb3J0QXJyYXk6U29ydFtdKT0+e1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHNvcnRlZDogc29ydEFycmF5LFxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgdXBkYXRlU3RhdGVGdW5jID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4pIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IHN0YXRlLm1ldGFEYXRhO1xyXG4gICAgY29uc3Qgc29ydGVkID0gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZD8ubGVuZ3RoID8gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZFxyXG4gICAgICA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSkgOiBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCAuLi5pbmNvbWluZ1RhYmxlU3RhdGUsIG1ldGFEYXRhICwgc29ydGVkfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldFBhZ2VTaXplID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIHBhZ2VTaXplOiBudW1iZXIpPT4gKHsgLi4uc3RhdGUsIHBhZ2VTaXplLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgcGFnZVNpemUgfSB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlID0gdGhpcy51cGRhdGVyPFBhcnRpYWw8VGFibGVTdGF0ZT4+KHRoaXMudXBkYXRlU3RhdGVGdW5jKTtcclxuXHJcbiAgY2xlYW5QZXJzaXN0ZWRTdGF0ZShzdGF0ZTogVGFibGVTdGF0ZSxwU3RhdGU6IFBlcnNpc3RlZFRhYmxlU3RhdGUpIHtcclxuICAgIGNvbnN0IG1ldGFzID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LnZhbHVlcyhwU3RhdGUuZmlsdGVycykuZmlsdGVyKGZsdHIgPT4gaXNDdXN0b21GaWx0ZXIoZmx0cikgfHwgbWV0YXMuc29tZShtID0+IG0ua2V5ID09PSBmbHRyLmtleSkpLnJlZHVjZSgob2JqOiBhbnksIGZpbHRlcikgPT4ge1xyXG4gICAgICBvYmpbZmlsdGVyLmZpbHRlcklkIV0gPSBwU3RhdGUuZmlsdGVyc1tmaWx0ZXIuZmlsdGVySWQhXTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH0sIHt9KTtcclxuICAgIGNvbnN0IHNvcnRlZCA9IHBTdGF0ZS5zb3J0ZWQuZmlsdGVyKHMgPT4gbWV0YXMuc29tZShtID0+IG0ua2V5ID09PSBzLmFjdGl2ZSkpO1xyXG4gICAgcmV0dXJuICh7Li4ucFN0YXRlLGZpbHRlcnMsc29ydGVkfSlcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlID0gdGhpcy51cGRhdGVyKCAoIHN0YXRlOiBUYWJsZVN0YXRlLCBwZXJzaXN0ZWRTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPiA9IHRoaXMuY2xlYW5QZXJzaXN0ZWRTdGF0ZShzdGF0ZSxwZXJzaXN0ZWRTdGF0ZSk7XHJcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICB0aGlzLnVwZGF0ZVN0YXRlRnVuYyhzdGF0ZSxpbmNvbWluZ1RhYmxlU3RhdGUpO1xyXG4gICAgbmV3U3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuTWV0YURhdGFMb2FkZWQgPyBJbml0aWFsaXphdGlvblN0YXRlLkxvYWRlZEZyb21TdG9yZSA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGU7XHJcbiAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgfSk7XHJcblxyXG4gIGdldFVzZXJEZWZpbmVkVGFibGVTaXplJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnRhYmxlLndpZHRoKTtcclxuICBzZXRUYWJsZVdpZHRoID0gdGhpcy51cGRhdGVyKChzdGF0ZSx3aWR0aElucGl4ZWxzOm51bWJlcikgPT4gKHsuLi5zdGF0ZSx1c2VyRGVmaW5lZDogey4uLnN0YXRlLnVzZXJEZWZpbmVkLHRhYmxlOnt3aWR0aDp3aWR0aElucGl4ZWxzfX19KSkgO1xyXG5cclxuICBtZXJnZU1ldGEgPSAob3JpZzogTWV0YURhdGEsIG1lcmdlOiBNZXRhRGF0YSk6IE1ldGFEYXRhID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5OiBvcmlnLmtleSxcclxuICAgICAgICBkaXNwbGF5TmFtZTogbWVyZ2UuZGlzcGxheU5hbWUgPz8gb3JpZy5kaXNwbGF5TmFtZSxcclxuICAgICAgICBmaWVsZFR5cGU6IG1lcmdlLmZpZWxkVHlwZSB8fCBvcmlnLmZpZWxkVHlwZSxcclxuICAgICAgICBhZGRpdGlvbmFsOiB7Li4ub3JpZy5hZGRpdGlvbmFsLCAuLi5tZXJnZS5hZGRpdGlvbmFsfSxcclxuICAgICAgICBvcmRlcjogbWVyZ2Uub3JkZXIgPz8gb3JpZy5vcmRlcixcclxuICAgICAgICBwcmVTb3J0OiBtZXJnZS5wcmVTb3J0ID8/IG9yaWcucHJlU29ydCxcclxuICAgICAgICBfaW50ZXJuYWxOb3RVc2VyRGVmaW5lZDogbWVyZ2UuX2ludGVybmFsTm90VXNlckRlZmluZWQgfHwgb3JpZy5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCxcclxuICAgICAgICB3aWR0aDogbWVyZ2Uud2lkdGggPz8gb3JpZy53aWR0aCxcclxuICAgICAgICBub0V4cG9ydDogbWVyZ2Uubm9FeHBvcnQgfHwgb3JpZy5ub0V4cG9ydCxcclxuICAgICAgICBub0ZpbHRlcjogbWVyZ2Uubm9GaWx0ZXIgfHwgb3JpZy5ub0ZpbHRlcixcclxuICAgICAgICBjdXN0b21DZWxsOiBtZXJnZS5jdXN0b21DZWxsID8/IG9yaWcuY3VzdG9tQ2VsbCxcclxuICAgICAgICB0cmFuc2Zvcm06IG1lcmdlLnRyYW5zZm9ybSA/PyBvcmlnLnRyYW5zZm9ybSxcclxuICAgICAgICBjbGljazogbWVyZ2UuY2xpY2sgPz8gb3JpZy5jbGljayxcclxuICAgICAgICBjbGFzc2VzOiBtZXJnZS5jbGFzc2VzID8/IG9yaWcuY2xhc3NlcyxcclxuICAgICAgICBub1NvcnQ6IG1lcmdlLm5vU29ydCA/PyBvcmlnLm5vU29ydCxcclxuICAgICAgICB0ZW1wbGF0ZTogbWVyZ2UudGVtcGxhdGUgPz8gb3JpZy50ZW1wbGF0ZSxcclxuICAgICAgICB0b29sVGlwOiBtZXJnZS50b29sVGlwID8/IG9yaWcudG9vbFRpcCxcclxuICAgICAgICB1c2VJY29uOiBtZXJnZS51c2VJY29uID8/IG9yaWcudXNlSWNvbixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRJbml0aWFsaXphdGlvblN0YXRlID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGU6ICBJbml0aWFsaXphdGlvblN0YXRlKSA9PiB7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlfTtcclxuICB9KTtcclxuXHJcbiAgcnVuT25jZVdoZW4ocHJlZGljYXRlOiBQcmVkaWNhdGU8VGFibGVTdGF0ZT4sIGZ1bmM6IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB2b2lkKSB7XHJcbiAgICBjb25zdCBvYnMgPSB0aGlzLnN0YXRlJC5waXBlKG9uY2VXaGVuKHByZWRpY2F0ZSkpO1xyXG4gICAgdGhpcy5vbihvYnMsIChzdGF0ZSkgPT4ge1xyXG4gICAgICBmdW5jKHN0YXRlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25SZWFkeSggZnVuYzogKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB2b2lkICkge1xyXG4gICAgdGhpcy5ydW5PbmNlV2hlbihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuUmVhZHkpLGZ1bmMpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0TWV0YURhdGEgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtZDogTWV0YURhdGFbXSB8IE1ldGFEYXRhICkgPT4ge1xyXG4gICAgY29uc3QgbWV0YURhdGEgPSAoIEFycmF5LmlzQXJyYXkobWQpID8gWy4uLm1kXSA6IFttZF0gKVxyXG4gICAgICAucmVkdWNlKChwcmV2OiBEaWN0aW9uYXJ5PE1ldGFEYXRhPixjdXJyKSA9PiB7XHJcbiAgICAgICAgaWYocHJldltjdXJyLmtleV0pIHtcclxuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gdGhpcy5tZXJnZU1ldGEocHJldltjdXJyLmtleV0sY3Vycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gY3VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgIH0gLHt9KTtcclxuICAgIGxldCBzb3J0ZWQgPSBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICBpZihzb3J0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHNvcnRlZCA9IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuaW5pdGlhbGl6ZU9yZGVyKHN0YXRlLCBtZXRhRGF0YSk7XHJcbiAgICBjb25zdCBpbml0aWFsaXphdGlvblN0YXRlID0gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PSBJbml0aWFsaXphdGlvblN0YXRlLkNyZWF0ZWQgPyAgSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGU7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDp7Li4uc3RhdGUudXNlckRlZmluZWQsb3JkZXI6b3JkZXJ9fTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplT3JkZXIgPSAoc3RhdGU6VGFibGVTdGF0ZSxtZHM6IERpY3Rpb25hcnk8TWV0YURhdGE+KSA6IERpY3Rpb25hcnk8bnVtYmVyPiA9PiB7XHJcbiAgICBjb25zdCB2aWV3YWJsZU1ldGFEYXRhQXJyID0gT2JqZWN0LnZhbHVlcyhtZHMpLmZpbHRlcihhID0+IGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuICAgIGxldCB1c2VyRGVmaW5lZE9yZGVyID0gc3RhdGUudXNlckRlZmluZWQub3JkZXI7XHJcbiAgICBpZih2aWV3YWJsZU1ldGFEYXRhQXJyLnNvbWUobWV0YSA9PiB1c2VyRGVmaW5lZE9yZGVyW21ldGEua2V5XSA9PSBudWxsKSl7XHJcbiAgICAgIHJldHVybiB7fVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXJEZWZpbmVkT3JkZXI7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUhlYWRlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSlcclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2VGb290ZXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+e1xyXG4gICAgY29uc3QgdGFibGVTZXR0aW5ncyA9IHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzfTtcclxuICAgIHRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIgPSAhdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcjtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLHBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgUGVyc2lzdGVkVGFibGVTZXR0aW5ncyh0YWJsZVNldHRpbmdzKX0pO1xyXG4gIH0pXHJcblxyXG4gIGFkZEdyb3VwQnlLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cEJ5S2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnlLZXlzOiBbLi4uc3RhdGUuZ3JvdXBCeUtleXMsIGdyb3VwQnlLZXldXHJcbiAgfSkpO1xyXG5cclxuICByZW1vdmVHcm91cEJ5S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZ3JvdXBCeUtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cEJ5S2V5czogc3RhdGUuZ3JvdXBCeUtleXMuZmlsdGVyKGtleSA9PiBncm91cEJ5S2V5ICE9IGtleSlcclxuICB9KSk7XHJcblxyXG4gIHVwZGF0ZUdyb3VwID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZ3JvdXA6IEdyb3VwKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cHM6IFsuLi5zdGF0ZS5ncm91cHMuZmlsdGVyKGcgPT4gZy5ncm91cE5hbWUgIT0gZ3JvdXAuZ3JvdXBOYW1lKSwgZ3JvdXBdXHJcbiAgfSkpXHJcblxyXG4gIGdyb3VwQnlLZXlzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmdyb3VwQnlLZXlzKTtcclxuICBncm91cHMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ3JvdXBzKTtcclxuXHJcbiAgc2V0VGFibGVTZXR0aW5ncyA9IHRoaXMudXBkYXRlcigoc3RhdGUsc2V0dGluZ3M6R2VuZXJhbFRhYmxlU2V0dGluZ3MpPT57XHJcbiAgICBjb25zdCBzOlRhYmxlU3RhdGUgPSB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpLFxyXG4gICAgICBub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpXHJcbiAgICAgIH07XHJcbiAgICByZXR1cm4gcztcclxuICB9KTtcclxuXHJcbiAgdGFibGVTZXR0aW5ncyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiB7XHJcbiAgICBjb25zdCB0cyA6IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgJiBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzID1cclxuICAgICAgey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsLi4uc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICByZXR1cm4gdHM7XHJcbiAgfSlcclxuXHJcbiAgc2V0TGlua01hcHMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1hcHM6IGFueSk9PntcclxuICAgIHJldHVybiB7Li4uc3RhdGUsbGlua01hcHM6bWFwc307XHJcbiAgfSk7XHJcbiAgZ2V0TGlua01hcCA9IChtZDpNZXRhRGF0YSkgPT57XHJcbiAgICByZXR1cm4gIHRoaXMuc2VsZWN0KHN0YXRlID0+IHtcclxuICAgICAgcmV0dXJuIHN0YXRlLmxpbmtNYXBzW21kLmtleV19KX07XHJcbn1cclxuZXhwb3J0IGNvbnN0IG9yZGVyVmlld2FibGVNZXRhRGF0YSA9IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiBvcmRlck1ldGFEYXRhKHN0YXRlKS5maWx0ZXIoYSA9PiBhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJNZXRhRGF0YSA9IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB7XHJcbiAgY29uc3QgdXNlck9yZGVyQXJyID0gT2JqZWN0LmVudHJpZXMoc3RhdGUudXNlckRlZmluZWQub3JkZXIpO1xyXG4gIHJldHVybiB1c2VyT3JkZXJBcnIubGVuZ3RoID9cclxuICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSkuc29ydCgoYSxiKT0+IHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyW2Eua2V5XSAtIHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyW2Iua2V5XSlcclxuICAgOlxyXG4gICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKS5zb3J0KChhLGIpPT4gYS5vcmRlciEgLSBiLm9yZGVyISlcclxufVxyXG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { ArrayStyle } from '../interfaces/report-def';
|
|
|
3
3
|
import { TableBuilderConfigToken } from '../classes/TableBuilderConfig';
|
|
4
4
|
import { NgFor, NgIf, NgSwitch, NgSwitchCase } from '@angular/common';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
class ArrayColumnComponent {
|
|
6
|
+
export class ArrayColumnComponent {
|
|
7
7
|
constructor(config) {
|
|
8
8
|
this.config = config;
|
|
9
9
|
this.ArrayStyle = ArrayStyle;
|
|
@@ -12,8 +12,8 @@ class ArrayColumnComponent {
|
|
|
12
12
|
this.additional = this.metaData?.additional ?? this.config.arrayInfo ?? { limit: 3, arrayStyle: ArrayStyle.NewLine };
|
|
13
13
|
this.array = (this.array ?? []).slice(0, this.additional.limit);
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ArrayColumnComponent, deps: [{ token: TableBuilderConfigToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ArrayColumnComponent, isStandalone: true, selector: "tb-array-column", inputs: { array: "array", metaData: "metaData" }, ngImport: i0, template: `
|
|
17
17
|
<ng-container *ngIf="array.length === 0; else hasVals">-</ng-container>
|
|
18
18
|
<ng-template #hasVals>
|
|
19
19
|
<ng-container [ngSwitch]="additional.arrayStyle">
|
|
@@ -27,8 +27,7 @@ class ArrayColumnComponent {
|
|
|
27
27
|
</ng-template>
|
|
28
28
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ArrayColumnComponent, decorators: [{
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ArrayColumnComponent, decorators: [{
|
|
32
31
|
type: Component,
|
|
33
32
|
args: [{
|
|
34
33
|
selector: 'tb-array-column',
|
|
@@ -51,12 +50,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
51
50
|
`,
|
|
52
51
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
53
52
|
}]
|
|
54
|
-
}], ctorParameters:
|
|
53
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
55
54
|
type: Inject,
|
|
56
55
|
args: [TableBuilderConfigToken]
|
|
57
|
-
}] }]
|
|
56
|
+
}] }], propDecorators: { array: [{
|
|
58
57
|
type: Input
|
|
59
58
|
}], metaData: [{
|
|
60
59
|
type: Input
|
|
61
60
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvYXJyYXktY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBNkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQXNCLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQXdCdEUsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUFzRCxNQUEwQjtRQUExQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUxoRixlQUFVLEdBQUcsVUFBVSxDQUFDO0lBUXhCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQXFCLENBQUM7UUFDekksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBRSxDQUFDO0lBRW5FLENBQUM7OEdBZlUsb0JBQW9CLGtCQU1WLHVCQUF1QjtrR0FOakMsb0JBQW9CLDZIQWZyQjs7Ozs7Ozs7Ozs7O0dBWVQsNERBZEMsSUFBSSw2RkFBRSxRQUFRLDZFQUFFLFlBQVkscUZBQUUsS0FBSzs7MkZBaUIxQixvQkFBb0I7a0JBckJoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSztxQkFDcEM7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7R0FZVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQU9lLE1BQU07MkJBQUMsdUJBQXVCO3lDQUhuQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXJyYXlTdHlsZSwgQXJyYXlBZGRpdGlvbmFsLCBNZXRhRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuLCBUYWJsZUJ1aWxkZXJDb25maWcgfSBmcm9tICcuLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLWFycmF5LWNvbHVtbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ0ZvclxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8bmctY29udGFpbmVyICAqbmdJZj1cImFycmF5Lmxlbmd0aCA9PT0gMDsgZWxzZSBoYXNWYWxzXCI+LTwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaGFzVmFscz5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFkZGl0aW9uYWwuYXJyYXlTdHlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJBcnJheVN0eWxlLkNvbW1hRGVsaW1pdGVkXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHZhbCBvZiBhcnJheTsgbGFzdCBhcyBpc0xhc3RcIj57e3ZhbH19PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xhc3RcIj4sIDwvbmctY29udGFpbmVyPiA8L3NwYW4+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJBcnJheVN0eWxlLk5ld0xpbmVcIj5cclxuICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgdmFsIG9mIGFycmF5OyBsYXN0IGFzIGlzTGFzdFwiPnt7dmFsfX08bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTGFzdFwiPjxiciAvPjwvbmctY29udGFpbmVyPiA8L3NwYW4+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcnJheUNvbHVtbkNvbXBvbmVudCB7XHJcbiAgQXJyYXlTdHlsZSA9IEFycmF5U3R5bGU7XHJcbiAgYWRkaXRpb25hbCE6IEFycmF5QWRkaXRpb25hbDtcclxuICBASW5wdXQoKSBhcnJheSE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIG1ldGFEYXRhITogTWV0YURhdGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCBASW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKSBwcml2YXRlIGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnXHJcbiAgICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbCA9IHRoaXMubWV0YURhdGE/LmFkZGl0aW9uYWwgPz8gIHRoaXMuY29uZmlnLmFycmF5SW5mbyA/PyB7IGxpbWl0OiAzLCBhcnJheVN0eWxlOiBBcnJheVN0eWxlLk5ld0xpbmUgfSBhcyBBcnJheUFkZGl0aW9uYWw7XHJcbiAgICB0aGlzLmFycmF5ID0gKHRoaXMuYXJyYXkgPz8gW10pLnNsaWNlKDAsIHRoaXMuYWRkaXRpb25hbC5saW1pdCApO1xyXG5cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -20,7 +20,7 @@ import * as i4 from "../../services/table-template-service";
|
|
|
20
20
|
import * as i5 from "@angular/cdk/drag-drop";
|
|
21
21
|
import * as i6 from "@angular/material/sort";
|
|
22
22
|
import * as i7 from "@angular/material/tooltip";
|
|
23
|
-
class ColumnBuilderComponent {
|
|
23
|
+
export class ColumnBuilderComponent {
|
|
24
24
|
constructor(transformCreator, table, state, templateService, injector) {
|
|
25
25
|
this.transformCreator = transformCreator;
|
|
26
26
|
this.table = table;
|
|
@@ -86,13 +86,12 @@ class ColumnBuilderComponent {
|
|
|
86
86
|
this.metaData.click(element, key);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ColumnBuilderComponent, deps: [{ token: i1.TransformCreator }, { token: i2.MatTable }, { token: i3.TableStore }, { token: i4.TableTemplateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ColumnBuilderComponent, isStandalone: true, selector: "tb-column-builder", inputs: { metaData: "metaData", customCell: "customCell", data$: "data$" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }], ngImport: i0, template: "<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\" >\r\n\r\n <!-- header -->\r\n <ng-template matHeaderCellDef #myHeader>\r\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\r\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \"/>\r\n </ng-container>\r\n\r\n <ng-template #header>\r\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref \r\n [conditionalClasses]='metaData.additional?.columnPartClasses?.header' >\r\n <div class=\"header-container\" cdkDragHandle>\r\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n <ng-template #headerWithoutMenu >\r\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n </ng-template>\r\n <tb-header-menu\r\n *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\r\n </tb-header-menu>\r\n </div>\r\n </mat-header-cell>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ?? ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n \r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\"/>\r\n </ng-container>\r\n\r\n <ng-template #footer>\r\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\" [conditionalClasses]='metaData.additional?.columnPartClasses?.footer'>\r\n <span *ngIf=\"!!data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\r\n <span *ngSwitchCase=\"FieldType.Currency\">\r\n {{ data | columnTotal: metaData | currency }}\r\n </span>\r\n <span *ngSwitchCase=\"FieldType.Number\">\r\n {{ data | columnTotal: metaData | number }}\r\n </span>\r\n </span>\r\n </mat-footer-cell>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".header-container{display:flex;flex-direction:row;width:100%;align-items:center}.negative-currency{color:red}.column-head{position:relative}.bold,.group-footer{font-weight:900}.cdk-drag-preview{background:white;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:33%;border-right-width:0px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.drag-handle{color:#add8e6;cursor:move;margin-right:9px}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: StylerDirective, selector: "[styler]", inputs: ["styler"] }, { kind: "directive", type: ResizeColumnDirective, selector: "[resizeColumn]", inputs: ["resizeColumn", "key"] }, { kind: "directive", type: ConditionalClassesDirective, selector: "[conditionalClasses]", inputs: ["element", "conditionalClasses"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }, { kind: "component", type: HeaderMenuComponent, selector: "tb-header-menu", inputs: ["filter", "metaData"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: ColumnTotalPipe, name: "columnTotal" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DecimalPipe, name: "number" }], viewProviders: [
|
|
91
91
|
{ provide: CDK_DROP_LIST, useExisting: CdkDropList },
|
|
92
92
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
93
93
|
}
|
|
94
|
-
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ColumnBuilderComponent, decorators: [{
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ColumnBuilderComponent, decorators: [{
|
|
96
95
|
type: Component,
|
|
97
96
|
args: [{ selector: 'tb-column-builder', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
|
|
98
97
|
{ provide: CDK_DROP_LIST, useExisting: CdkDropList },
|
|
@@ -101,7 +100,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
101
100
|
ConditionalClassesDirective, DragDropModule, MatSortModule, SpaceCasePipe, HeaderMenuComponent,
|
|
102
101
|
AsyncPipe, MatTooltipModule, LetDirective, NgSwitch, NgSwitchCase, ColumnTotalPipe, CurrencyPipe, DecimalPipe
|
|
103
102
|
], template: "<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\" >\r\n\r\n <!-- header -->\r\n <ng-template matHeaderCellDef #myHeader>\r\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\r\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \"/>\r\n </ng-container>\r\n\r\n <ng-template #header>\r\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref \r\n [conditionalClasses]='metaData.additional?.columnPartClasses?.header' >\r\n <div class=\"header-container\" cdkDragHandle>\r\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n <ng-template #headerWithoutMenu >\r\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n </ng-template>\r\n <tb-header-menu\r\n *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\r\n </tb-header-menu>\r\n </div>\r\n </mat-header-cell>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ?? ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n \r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\"/>\r\n </ng-container>\r\n\r\n <ng-template #footer>\r\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\" [conditionalClasses]='metaData.additional?.columnPartClasses?.footer'>\r\n <span *ngIf=\"!!data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\r\n <span *ngSwitchCase=\"FieldType.Currency\">\r\n {{ data | columnTotal: metaData | currency }}\r\n </span>\r\n <span *ngSwitchCase=\"FieldType.Number\">\r\n {{ data | columnTotal: metaData | number }}\r\n </span>\r\n </span>\r\n </mat-footer-cell>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".header-container{display:flex;flex-direction:row;width:100%;align-items:center}.negative-currency{color:red}.column-head{position:relative}.bold,.group-footer{font-weight:900}.cdk-drag-preview{background:white;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:33%;border-right-width:0px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.drag-handle{color:#add8e6;cursor:move;margin-right:9px}\n"] }]
|
|
104
|
-
}], ctorParameters:
|
|
103
|
+
}], ctorParameters: () => [{ type: i1.TransformCreator }, { type: i2.MatTable }, { type: i3.TableStore }, { type: i4.TableTemplateService }, { type: i0.Injector }], propDecorators: { metaData: [{
|
|
105
104
|
type: Input
|
|
106
105
|
}], customCell: [{
|
|
107
106
|
type: Input
|
|
@@ -114,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
114
113
|
type: ViewChild,
|
|
115
114
|
args: ['body']
|
|
116
115
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFlLFNBQVMsRUFBMkUsTUFBTSxlQUFlLENBQUM7QUFDM0ssT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQVksY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakYsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTlFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVB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O3dCQUNQLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQjt3QkFDOUUsMkJBQTJCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsbUJBQW1CO3dCQUM5RixTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXO3FCQUM5RztpTkFLUSxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVtQixTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVk7Z0JBS0osWUFBWTtzQkFBOUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBQcmVkaWNhdGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdXN0b21DZWxsRGlyZWN0aXZlLCBSZXNpemVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgRmlsdGVySW5mbyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBUcmFuc2Zvcm1DcmVhdG9yIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNmb3JtLWNyZWF0b3InO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS10ZW1wbGF0ZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgcHJldmlvdXNBbmRDdXJyZW50IH0gZnJvbSAnLi4vLi4vLi4vcnhqcy9yeGpzLW9wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENka0Ryb3BMaXN0LCBDREtfRFJPUF9MSVNULCBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBDdXJyZW5jeVBpcGUsIERlY2ltYWxQaXBlLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uYWxDbGFzc2VzRGlyZWN0aXZlLCBTcGFjZUNhc2VQaXBlLCBTdHlsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IEhlYWRlck1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXItbWVudS9oZWFkZXItbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IExldERpcmVjdGl2ZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtblRvdGFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NvbHVtbi10b3RhbC5waXBlJztcclxuXHJcblxyXG5pbnRlcmZhY2Ugd2lkdGhTdHlsZSB7XHJcbiAgICBmbGV4Pzogc3RyaW5nO1xyXG4gICAgbWF4V2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBhbGxTdHlsZXMge1xyXG4gIGJvZHk6IHdpZHRoU3R5bGU7XHJcbiAgaGVhZGVyOiB3aWR0aFN0eWxlO1xyXG4gIGZvb3Rlcjogd2lkdGhTdHlsZTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Yi1jb2x1bW4tYnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogQ0RLX0RST1BfTElTVCwgdXNlRXhpc3Rpbmc6IENka0Ryb3BMaXN0IH0sXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdFRhYmxlTW9kdWxlLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBTdHlsZXJEaXJlY3RpdmUsIFJlc2l6ZUNvbHVtbkRpcmVjdGl2ZSxcclxuICAgIENvbmRpdGlvbmFsQ2xhc3Nlc0RpcmVjdGl2ZSwgRHJhZ0Ryb3BNb2R1bGUsIE1hdFNvcnRNb2R1bGUsIFNwYWNlQ2FzZVBpcGUsIEhlYWRlck1lbnVDb21wb25lbnQsXHJcbiAgICBBc3luY1BpcGUsIE1hdFRvb2x0aXBNb2R1bGUsIExldERpcmVjdGl2ZSwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgQ29sdW1uVG90YWxQaXBlLCBDdXJyZW5jeVBpcGUsIERlY2ltYWxQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sdW1uQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgRmllbGRUeXBlID0gRmllbGRUeXBlO1xyXG4gIGZpbHRlciE6IFBhcnRpYWw8RmlsdGVySW5mbz47XHJcbiAgQElucHV0KCkgbWV0YURhdGEhOiBNZXRhRGF0YTtcclxuXHJcbiAgQElucHV0KCkgY3VzdG9tQ2VsbCE6IEN1c3RvbUNlbGxEaXJlY3RpdmU7XHJcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuXHJcbiAgQFZpZXdDaGlsZChNYXRDb2x1bW5EZWYpIGNvbHVtbkRlZiE6IE1hdENvbHVtbkRlZjtcclxuICBvdXRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0cmFuc2Zvcm0hOiAobzogYW55LCAuLi5hcmdzOiBhbnlbXSk9PiBhbnkgO1xyXG5cclxuICBAVmlld0NoaWxkKCdib2R5JykgYm9keVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1DcmVhdG9yOiBUcmFuc2Zvcm1DcmVhdG9yLFxyXG4gICAgcHJpdmF0ZSB0YWJsZTogTWF0VGFibGU8YW55PixcclxuICAgIHB1YmxpYyBzdGF0ZTogVGFibGVTdG9yZSxcclxuICAgIHByaXZhdGUgdGVtcGxhdGVTZXJ2aWNlOiBUYWJsZVRlbXBsYXRlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICApIHsgfVxyXG5cclxuICBnZXRJbm5lclRlbXBsYXRlKCkgOlRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS50ZW1wbGF0ZSkgcmV0dXJuIHRoaXMubWV0YURhdGEudGVtcGxhdGU7XHJcbiAgICBpZiAodGhpcy5jdXN0b21DZWxsPy5UZW1wbGF0ZVJlZikgIHJldHVybiB0aGlzLmN1c3RvbUNlbGwuVGVtcGxhdGVSZWY7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGUodGhpcy5tZXRhRGF0YSk7XHJcbiAgfVxyXG4gIHNob3dmaWx0ZXJzJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgZ2V0T3V0ZXJUZW1wbGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbD8udGVtcGxhdGUgPz8gdGhpcy5ib2R5VGVtcGxhdGU7XHJcbiAgfVxyXG4gIGNsYXNzZXM/OiBEaWN0aW9uYXJ5PFByZWRpY2F0ZTxhbnk+PjtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZih0aGlzLm1ldGFEYXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkN1cnJlbmN5KSB7XHJcbiAgICAgIHRoaXMuY2xhc3NlcyA9IHtcclxuICAgICAgICBbJ25lZ2F0aXZlLWN1cnJlbmN5J106IChlbGVtZW50KSA9PiBlbGVtZW50W3RoaXMubWV0YURhdGEua2V5XSA8IDAsXHJcbiAgICAgICAgLi4udGhpcy5tZXRhRGF0YS5jbGFzc2VzXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMgPSB0aGlzLm1ldGFEYXRhLmNsYXNzZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbHRlciA9IHtrZXk6IHRoaXMubWV0YURhdGEua2V5LCBmaWVsZFR5cGU6IHRoaXMubWV0YURhdGEuZmllbGRUeXBlfTtcclxuICAgIGNvbnN0IHdpZHRoJCA9IHRoaXMuc3RhdGUuZ2V0VXNlckRlZmluZWRXaWR0aCQodGhpcy5tZXRhRGF0YS5rZXkpLnBpcGUoXHJcbiAgICAgIHByZXZpb3VzQW5kQ3VycmVudCgwKSxcclxuICAgICAgbWFwKHRoaXMubWFwV2lkdGgpLFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZ1bGxNZXRhU3R5bGVzID0gdGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5zdHlsZXMgPz8ge307XHJcbiAgICB0aGlzLnN0eWxlcyQgPSB3aWR0aCQucGlwZShtYXAod2lkdGggPT4ge1xyXG4gICAgICBjb25zdCBzdHlsZXM6IGFsbFN0eWxlcyA9IHtcclxuICAgICAgICBoZWFkZXIgOiB7Li4uZnVsbE1ldGFTdHlsZXMsLi4udGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0U3R5bGVzPy5oZWFkZXIsIC4uLndpZHRofSxcclxuICAgICAgICBmb290ZXI6IHsuLi5mdWxsTWV0YVN0eWxlcywuLi50aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmZvb3RlciwgLi4ud2lkdGh9LFxyXG4gICAgICAgIGJvZHk6IHsuLi5mdWxsTWV0YVN0eWxlcywuLi50aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmJvZHksIC4uLndpZHRofSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHN0eWxlcztcclxuICAgIH0pKTtcclxuICAgIHRoaXMuc2hvd2ZpbHRlcnMkID0gdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzJC5waXBlKG1hcChzZXR0aW5ncyA9PiAhKHNldHRpbmdzLmhpZGVDb2x1bW5IZWFkZXJGaWx0ZXJzIHx8IHRoaXMubWV0YURhdGEubm9GaWx0ZXIpKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm91dGVyVGVtcGxhdGUgPSB0aGlzLmdldE91dGVyVGVtcGxhdGUoKTtcclxuICAgIHRoaXMuaW5uZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SW5uZXJUZW1wbGF0ZSgpO1xyXG4gICAgdGhpcy50cmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybUNyZWF0b3IuY3JlYXRlVHJhbnNmb3JtZXIodGhpcy5tZXRhRGF0YSk7XHJcbiAgICB0aGlzLnRhYmxlLmFkZENvbHVtbkRlZih0aGlzLmNvbHVtbkRlZik7XHJcbiAgfVxyXG5cclxuICBjZWxsQ2xpY2tlZChlbGVtZW50OiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICBpZih0aGlzLm1ldGFEYXRhLmNsaWNrKSB7XHJcbiAgICAgIHRoaXMubWV0YURhdGEuY2xpY2soZWxlbWVudCxrZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwV2lkdGggPSAoW3ByZXZpb3VzVXNlckRlZmluZWRXaWR0aCwgY3VycmVudFVzZXJEZWZpbmVkV2lkdGhdIDogW251bWJlciwgbnVtYmVyXSkgOiB3aWR0aFN0eWxlID0+IHtcclxuICAgIGNvbnN0IGJhc2VXaWR0aCA9ICEhdGhpcy5tZXRhRGF0YS53aWR0aCA/IHtmbGV4OmAwIDAgJHt0aGlzLm1ldGFEYXRhLndpZHRofWAsIG1heFdpZHRoOidub25lJ30gOiB7ZmxleDonMSd9O1xyXG4gICAgaWYoIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoICl7XHJcbiAgICAgIHJldHVybiAoe2ZsZXg6YDAgMCAke2N1cnJlbnRVc2VyRGVmaW5lZFdpZHRofXB4YCwgbWF4V2lkdGg6J25vbmUnfSk7XHJcbiAgICB9IGlmKCB3YXNSZXNldCgpICl7XHJcbiAgICAgIHJldHVybiAoYmFzZVdpZHRoKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoe30pO1xyXG4gICAgZnVuY3Rpb24gd2FzUmVzZXQoKXtcclxuICAgICAgcmV0dXJuIHByZXZpb3VzVXNlckRlZmluZWRXaWR0aCA+PSAwICYmIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoID09IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdHlsZXMkITpPYnNlcnZhYmxlPGFsbFN0eWxlcz5cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIm1ldGFEYXRhLmtleVwiICpuZ3J4TGV0PVwic3R5bGVzJCBhcyBzdHlsZXNcIiA+XHJcblxyXG4gIDwhLS0gaGVhZGVyIC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSBtYXRIZWFkZXJDZWxsRGVmICNteUhlYWRlcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21DZWxsPy5jb2x1bW5EZWY/LmhlYWRlckNlbGw7ZWxzZSBoZWFkZXI7XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21DZWxsLmNvbHVtbkRlZi5oZWFkZXJDZWxsLnRlbXBsYXRlOyBjb250ZXh0OiB7bWV0YURhdGE6IG1ldGFEYXRhLCBzdHlsZXM6ICBzdHlsZXMuaGVhZGVyfSBcIi8+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cclxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAgY2RrRHJhZyBbc3R5bGVyXT0nc3R5bGVzLmhlYWRlcicgW3Jlc2l6ZUNvbHVtbl09XCJ0cnVlXCIgW2tleV09XCJtZXRhRGF0YS5rZXlcIiAgIGNsYXNzPVwiY29sdW1uLWhlYWQgZHJhZy1oZWFkZXJcIiAjaGVhZHJlZiBcclxuICAgICAgICBbY29uZGl0aW9uYWxDbGFzc2VzXT0nbWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydENsYXNzZXM/LmhlYWRlcicgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCIgY2RrRHJhZ0hhbmRsZT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbWV0YURhdGEuX2ludGVybmFsTm90VXNlckRlZmluZWQgfHwgIWN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbCA7IGVsc2UgaGVhZGVyV2l0aG91dE1lbnVcIiBtYXQtc29ydC1oZWFkZXIgW2Rpc2FibGVkXT1cIm1ldGFEYXRhLm5vU29ydFwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAge3sgbWV0YURhdGEuZGlzcGxheU5hbWUgPyAgbWV0YURhdGEuZGlzcGxheU5hbWUgOiAoIG1ldGFEYXRhLmtleSB8IHNwYWNlQ2FzZSApIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyV2l0aG91dE1lbnUgPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWV0YURhdGEuX2ludGVybmFsTm90VXNlckRlZmluZWQ7XCIgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgICAgICAgIHt7IG1ldGFEYXRhLmRpc3BsYXlOYW1lID8gIG1ldGFEYXRhLmRpc3BsYXlOYW1lIDogKCBtZXRhRGF0YS5rZXkgfCBzcGFjZUNhc2UgKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8dGItaGVhZGVyLW1lbnVcclxuICAgICAgICAgICAgKm5nSWY9XCIoIW1ldGFEYXRhLl9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkIHx8ICFjdXN0b21DZWxsPy5jb2x1bW5EZWY/LmNlbGwpICYmIChzaG93ZmlsdGVycyQgfCBhc3luYyk7XCIgI21lbnUgW21ldGFEYXRhXT0nbWV0YURhdGEnIFtmaWx0ZXJdPSdmaWx0ZXInID5cclxuICAgICAgICAgIDwvdGItaGVhZGVyLW1lbnU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tIGJvZHkgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50O1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm91dGVyVGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIGVsZW1lbnQ6IGVsZW1lbnQgLCBzdHlsZXM6IHN0eWxlcy5ib2R5IH1cIi8+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNib2R5IGxldC1lbGVtZW50PSdlbGVtZW50JyA+XHJcbiAgICA8bWF0LWNlbGwgIFttYXRUb29sdGlwXT1cIm1ldGFEYXRhLnRvb2xUaXAgPz8gJydcIiAgW2NvbmRpdGlvbmFsQ2xhc3Nlc109J21ldGFEYXRhLmNsYXNzZXMnIFtlbGVtZW50XT0nZWxlbWVudCcgW3N0eWxlcl09J3N0eWxlcy5ib2R5JyBbY2xhc3MuZ3JvdXAtZm9vdGVyXT1cImVsZW1lbnQuaXNHcm91cEZvb3RlclwiIChjbGljayk9J2NlbGxDbGlja2VkKGVsZW1lbnQsIG1ldGFEYXRhLmtleSknID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7Y29udGV4dDoge21ldGFEYXRhOiBtZXRhRGF0YSwgZWxlbWVudDogZWxlbWVudCwgdHJhbnNmb3JtOiB0cmFuc2Zvcm0gfTsgSW5qZWN0b3I6IGluamVjdG9yXCIgLz5cclxuICAgIDwvbWF0LWNlbGw+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICBcclxuICA8IS0tIGZvb3RlciAtLT5cclxuICA8bmctdGVtcGxhdGUgbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21DZWxsPy5jb2x1bW5EZWY/LmZvb3RlckNlbGw7ZWxzZSBmb290ZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ2VsbC5jb2x1bW5EZWYuZm9vdGVyQ2VsbC50ZW1wbGF0ZTtjb250ZXh0OiB7bWV0YURhdGE6IG1ldGFEYXRhLCBkYXRhOiBkYXRhJCwgc3R5bGVzIDogc3R5bGVzLmZvb3RlciB9XCIvPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgIDxtYXQtZm9vdGVyLWNlbGwgIFtzdHlsZXJdPSdzdHlsZXMuZm9vdGVyJyAqbmdyeExldD1cImRhdGEkIGFzIGRhdGFcIiBbY29uZGl0aW9uYWxDbGFzc2VzXT0nbWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydENsYXNzZXM/LmZvb3Rlcic+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhIWRhdGE/Lmxlbmd0aCAmJiBtZXRhRGF0YS5hZGRpdGlvbmFsPy5mb290ZXJcIiBbbmdTd2l0Y2hdPVwibWV0YURhdGEuZmllbGRUeXBlXCIgY2xhc3M9XCJib2xkXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLkN1cnJlbmN5XCI+XHJcbiAgICAgICAgICAgIHt7IGRhdGEgfCBjb2x1bW5Ub3RhbDogbWV0YURhdGEgfCBjdXJyZW5jeSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5OdW1iZXJcIj5cclxuICAgICAgICAgICAge3sgZGF0YSB8IGNvbHVtblRvdGFsOiBtZXRhRGF0YSB8IG51bWJlciB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9tYXQtZm9vdGVyLWNlbGw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFlLFNBQVMsRUFBMkUsTUFBTSxlQUFlLENBQUM7QUFDM0ssT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQVksY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakYsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTlFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUE2QmhFLE1BQU0sT0FBTyxzQkFBc0I7SUFnQmpDLFlBQ1UsZ0JBQWtDLEVBQ2xDLEtBQW9CLEVBQ3JCLEtBQWlCLEVBQ2hCLGVBQXFDLEVBQ25DLFFBQWtCO1FBSnBCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBcEI5QixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBMEV0QixhQUFRLEdBQUcsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLHVCQUF1QixDQUFvQixFQUFlLEVBQUU7WUFDakcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxHQUFHLEVBQUMsQ0FBQztZQUM1RyxJQUFJLHVCQUF1QixFQUFFO2dCQUMzQixPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUMsT0FBTyx1QkFBdUIsSUFBSSxFQUFFLFFBQVEsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO2FBQ3JFO1lBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1osU0FBUyxRQUFRO2dCQUNmLE9BQU8sd0JBQXdCLElBQUksQ0FBQyxJQUFJLHVCQUF1QixJQUFJLElBQUksQ0FBQztZQUMxRSxDQUFDO1FBQ0gsQ0FBQyxDQUFBO0lBaEVLLENBQUM7SUFFUCxnQkFBZ0I7UUFDZCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVc7WUFBRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6RSxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFDbEUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87YUFDekIsQ0FBQTtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUMsQ0FBQztRQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNwRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDbkIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBYztnQkFDeEIsTUFBTSxFQUFHLEVBQUMsR0FBRyxjQUFjLEVBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUM7Z0JBQzVGLE1BQU0sRUFBRSxFQUFDLEdBQUcsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFDO2dCQUMzRixJQUFJLEVBQUUsRUFBQyxHQUFHLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBQzthQUN4RixDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVksRUFBRSxHQUFXO1FBQ25DLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQzs4R0F6RVUsc0JBQXNCO2tHQUF0QixzQkFBc0Isb01BUXRCLFlBQVksdUlDeER6Qix3eEdBMkRBLHdpQkRoQkksY0FBYyxzb0JBQUUsSUFBSSw2RkFBRSxnQkFBZ0Isb0pBQUUsZUFBZSx5RUFBRSxxQkFBcUIsNEZBQzlFLDJCQUEyQiwyR0FBRSxjQUFjLCtrQkFBRSxhQUFhLGlQQUFFLGFBQWEsa0RBQUUsbUJBQW1CLHNGQUM5RixTQUFTLDZDQUFFLGdCQUFnQiw2VEFBRSxZQUFZLGlHQUFFLFFBQVEsNkVBQUUsWUFBWSxnRkFBRSxlQUFlLCtDQUFFLFlBQVksNENBQUUsV0FBVyxvQ0FQaEc7WUFDYixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtTQUNyRDs7MkZBUVUsc0JBQXNCO2tCQWZsQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtxQkFDckQsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUscUJBQXFCO3dCQUM5RSwyQkFBMkIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxtQkFBbUI7d0JBQzlGLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFdBQVc7cUJBQzlHOytMQUtRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRW1CLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFLSixZQUFZO3NCQUE5QixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgT25Jbml0LCBIb3N0QmluZGluZywgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIFByZWRpY2F0ZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRUeXBlLCBNZXRhRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IE1hdENvbHVtbkRlZiwgTWF0VGFibGUsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEN1c3RvbUNlbGxEaXJlY3RpdmUsIFJlc2l6ZUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJbmZvIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXItaW5mbyc7XHJcbmltcG9ydCB7IFRyYW5zZm9ybUNyZWF0b3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2Zvcm0tY3JlYXRvcic7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUYWJsZVRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYmxlLXRlbXBsYXRlLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwcmV2aW91c0FuZEN1cnJlbnQgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2RrRHJvcExpc3QsIENES19EUk9QX0xJU1QsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEN1cnJlbmN5UGlwZSwgRGVjaW1hbFBpcGUsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25kaXRpb25hbENsYXNzZXNEaXJlY3RpdmUsIFNwYWNlQ2FzZVBpcGUsIFN0eWxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgSGVhZGVyTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sdW1uVG90YWxQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY29sdW1uLXRvdGFsLnBpcGUnO1xyXG5cclxuXHJcbmludGVyZmFjZSB3aWR0aFN0eWxlIHtcclxuICAgIGZsZXg/OiBzdHJpbmc7XHJcbiAgICBtYXhXaWR0aD86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIGFsbFN0eWxlcyB7XHJcbiAgYm9keTogd2lkdGhTdHlsZTtcclxuICBoZWFkZXI6IHdpZHRoU3R5bGU7XHJcbiAgZm9vdGVyOiB3aWR0aFN0eWxlO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLWNvbHVtbi1idWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgdmlld1Byb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBDREtfRFJPUF9MSVNULCB1c2VFeGlzdGluZzogQ2RrRHJvcExpc3QgfSxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0VGFibGVNb2R1bGUsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIFN0eWxlckRpcmVjdGl2ZSwgUmVzaXplQ29sdW1uRGlyZWN0aXZlLFxyXG4gICAgQ29uZGl0aW9uYWxDbGFzc2VzRGlyZWN0aXZlLCBEcmFnRHJvcE1vZHVsZSwgTWF0U29ydE1vZHVsZSwgU3BhY2VDYXNlUGlwZSwgSGVhZGVyTWVudUNvbXBvbmVudCxcclxuICAgIEFzeW5jUGlwZSwgTWF0VG9vbHRpcE1vZHVsZSwgTGV0RGlyZWN0aXZlLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBDb2x1bW5Ub3RhbFBpcGUsIEN1cnJlbmN5UGlwZSwgRGVjaW1hbFBpcGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5CdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBGaWVsZFR5cGUgPSBGaWVsZFR5cGU7XHJcbiAgZmlsdGVyITogUGFydGlhbDxGaWx0ZXJJbmZvPjtcclxuICBASW5wdXQoKSBtZXRhRGF0YSE6IE1ldGFEYXRhO1xyXG5cclxuICBASW5wdXQoKSBjdXN0b21DZWxsITogQ3VzdG9tQ2VsbERpcmVjdGl2ZTtcclxuICBASW5wdXQoKSBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICBAVmlld0NoaWxkKE1hdENvbHVtbkRlZikgY29sdW1uRGVmITogTWF0Q29sdW1uRGVmO1xyXG4gIG91dGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGlubmVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHRyYW5zZm9ybSE6IChvOiBhbnksIC4uLmFyZ3M6IGFueVtdKT0+IGFueSA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2JvZHknKSBib2R5VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybUNyZWF0b3I6IFRyYW5zZm9ybUNyZWF0b3IsXHJcbiAgICBwcml2YXRlIHRhYmxlOiBNYXRUYWJsZTxhbnk+LFxyXG4gICAgcHVibGljIHN0YXRlOiBUYWJsZVN0b3JlLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFRhYmxlVGVtcGxhdGVTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICkgeyB9XHJcblxyXG4gIGdldElubmVyVGVtcGxhdGUoKSA6VGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBpZih0aGlzLm1ldGFEYXRhLnRlbXBsYXRlKSByZXR1cm4gdGhpcy5tZXRhRGF0YS50ZW1wbGF0ZTtcclxuICAgIGlmICh0aGlzLmN1c3RvbUNlbGw/LlRlbXBsYXRlUmVmKSAgcmV0dXJuIHRoaXMuY3VzdG9tQ2VsbC5UZW1wbGF0ZVJlZjtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZSh0aGlzLm1ldGFEYXRhKTtcclxuICB9XHJcbiAgc2hvd2ZpbHRlcnMkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBnZXRPdXRlclRlbXBsYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5jZWxsPy50ZW1wbGF0ZSA/PyB0aGlzLmJvZHlUZW1wbGF0ZTtcclxuICB9XHJcbiAgY2xhc3Nlcz86IERpY3Rpb25hcnk8UHJlZGljYXRlPGFueT4+O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKHRoaXMubWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ3VycmVuY3kpIHtcclxuICAgICAgdGhpcy5jbGFzc2VzID0ge1xyXG4gICAgICAgIFsnbmVnYXRpdmUtY3VycmVuY3knXTogKGVsZW1lbnQpID0+IGVsZW1lbnRbdGhpcy5tZXRhRGF0YS5rZXldIDwgMCxcclxuICAgICAgICAuLi50aGlzLm1ldGFEYXRhLmNsYXNzZXNcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xhc3NlcyA9IHRoaXMubWV0YURhdGEuY2xhc3NlcztcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyID0ge2tleTogdGhpcy5tZXRhRGF0YS5rZXksIGZpZWxkVHlwZTogdGhpcy5tZXRhRGF0YS5maWVsZFR5cGV9O1xyXG4gICAgY29uc3Qgd2lkdGgkID0gdGhpcy5zdGF0ZS5nZXRVc2VyRGVmaW5lZFdpZHRoJCh0aGlzLm1ldGFEYXRhLmtleSkucGlwZShcclxuICAgICAgcHJldmlvdXNBbmRDdXJyZW50KDApLFxyXG4gICAgICBtYXAodGhpcy5tYXBXaWR0aCksXHJcbiAgICApO1xyXG4gICAgY29uc3QgZnVsbE1ldGFTdHlsZXMgPSB0aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LnN0eWxlcyA/PyB7fTtcclxuICAgIHRoaXMuc3R5bGVzJCA9IHdpZHRoJC5waXBlKG1hcCh3aWR0aCA9PiB7XHJcbiAgICAgIGNvbnN0IHN0eWxlczogYWxsU3R5bGVzID0ge1xyXG4gICAgICAgIGhlYWRlciA6IHsuLi5mdWxsTWV0YVN0eWxlcywuLi50aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmhlYWRlciwgLi4ud2lkdGh9LFxyXG4gICAgICAgIGZvb3Rlcjogey4uLmZ1bGxNZXRhU3R5bGVzLC4uLnRoaXMubWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydFN0eWxlcz8uZm9vdGVyLCAuLi53aWR0aH0sXHJcbiAgICAgICAgYm9keTogey4uLmZ1bGxNZXRhU3R5bGVzLC4uLnRoaXMubWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydFN0eWxlcz8uYm9keSwgLi4ud2lkdGh9LFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gc3R5bGVzO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zaG93ZmlsdGVycyQgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MkLnBpcGUobWFwKHNldHRpbmdzID0+ICEoc2V0dGluZ3MuaGlkZUNvbHVtbkhlYWRlckZpbHRlcnMgfHwgdGhpcy5tZXRhRGF0YS5ub0ZpbHRlcikpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMub3V0ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0T3V0ZXJUZW1wbGF0ZSgpO1xyXG4gICAgdGhpcy5pbm5lclRlbXBsYXRlID0gdGhpcy5nZXRJbm5lclRlbXBsYXRlKCk7XHJcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtQ3JlYXRvci5jcmVhdGVUcmFuc2Zvcm1lcih0aGlzLm1ldGFEYXRhKTtcclxuICAgIHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcclxuICB9XHJcblxyXG4gIGNlbGxDbGlja2VkKGVsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGlmKHRoaXMubWV0YURhdGEuY2xpY2spIHtcclxuICAgICAgdGhpcy5tZXRhRGF0YS5jbGljayhlbGVtZW50LGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXBXaWR0aCA9IChbcHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoLCBjdXJyZW50VXNlckRlZmluZWRXaWR0aF0gOiBbbnVtYmVyLCBudW1iZXJdKSA6IHdpZHRoU3R5bGUgPT4ge1xyXG4gICAgY29uc3QgYmFzZVdpZHRoID0gISF0aGlzLm1ldGFEYXRhLndpZHRoID8ge2ZsZXg6YDAgMCAke3RoaXMubWV0YURhdGEud2lkdGh9YCwgbWF4V2lkdGg6J25vbmUnfSA6IHtmbGV4OicxJ307XHJcbiAgICBpZiggY3VycmVudFVzZXJEZWZpbmVkV2lkdGggKXtcclxuICAgICAgcmV0dXJuICh7ZmxleDpgMCAwICR7Y3VycmVudFVzZXJEZWZpbmVkV2lkdGh9cHhgLCBtYXhXaWR0aDonbm9uZSd9KTtcclxuICAgIH0gaWYoIHdhc1Jlc2V0KCkgKXtcclxuICAgICAgcmV0dXJuIChiYXNlV2lkdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICh7fSk7XHJcbiAgICBmdW5jdGlvbiB3YXNSZXNldCgpe1xyXG4gICAgICByZXR1cm4gcHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoID49IDAgJiYgY3VycmVudFVzZXJEZWZpbmVkV2lkdGggPT0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0eWxlcyQhOk9ic2VydmFibGU8YWxsU3R5bGVzPlxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwibWV0YURhdGEua2V5XCIgKm5ncnhMZXQ9XCJzdHlsZXMkIGFzIHN0eWxlc1wiID5cclxuXHJcbiAgPCEtLSBoZWFkZXIgLS0+XHJcbiAgPG5nLXRlbXBsYXRlIG1hdEhlYWRlckNlbGxEZWYgI215SGVhZGVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uaGVhZGVyQ2VsbDtlbHNlIGhlYWRlcjtcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNlbGwuY29sdW1uRGVmLmhlYWRlckNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIHN0eWxlczogIHN0eWxlcy5oZWFkZXJ9IFwiLz5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxyXG4gICAgICA8bWF0LWhlYWRlci1jZWxsICBjZGtEcmFnIFtzdHlsZXJdPSdzdHlsZXMuaGVhZGVyJyBbcmVzaXplQ29sdW1uXT1cInRydWVcIiBba2V5XT1cIm1ldGFEYXRhLmtleVwiICAgY2xhc3M9XCJjb2x1bW4taGVhZCBkcmFnLWhlYWRlclwiICNoZWFkcmVmIFxyXG4gICAgICAgIFtjb25kaXRpb25hbENsYXNzZXNdPSdtZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0Q2xhc3Nlcz8uaGVhZGVyJyA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXJcIiBjZGtEcmFnSGFuZGxlPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtZXRhRGF0YS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCB8fCAhY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5jZWxsIDsgZWxzZSBoZWFkZXJXaXRob3V0TWVudVwiIG1hdC1zb3J0LWhlYWRlciBbZGlzYWJsZWRdPVwibWV0YURhdGEubm9Tb3J0XCIgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgICAgICB7eyBtZXRhRGF0YS5kaXNwbGF5TmFtZSA/ICBtZXRhRGF0YS5kaXNwbGF5TmFtZSA6ICggbWV0YURhdGEua2V5IHwgc3BhY2VDYXNlICkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJXaXRob3V0TWVudSA+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXRhRGF0YS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZDtcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAge3sgbWV0YURhdGEuZGlzcGxheU5hbWUgPyAgbWV0YURhdGEuZGlzcGxheU5hbWUgOiAoIG1ldGFEYXRhLmtleSB8IHNwYWNlQ2FzZSApIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDx0Yi1oZWFkZXItbWVudVxyXG4gICAgICAgICAgICAqbmdJZj1cIighbWV0YURhdGEuX2ludGVybmFsTm90VXNlckRlZmluZWQgfHwgIWN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbCkgJiYgKHNob3dmaWx0ZXJzJCB8IGFzeW5jKTtcIiAjbWVudSBbbWV0YURhdGFdPSdtZXRhRGF0YScgW2ZpbHRlcl09J2ZpbHRlcicgPlxyXG4gICAgICAgICAgPC90Yi1oZWFkZXItbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gYm9keSAtLT5cclxuICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3V0ZXJUZW1wbGF0ZTsgY29udGV4dDoge21ldGFEYXRhOiBtZXRhRGF0YSwgZWxlbWVudDogZWxlbWVudCAsIHN0eWxlczogc3R5bGVzLmJvZHkgfVwiLz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2JvZHkgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnID5cclxuICAgIDxtYXQtY2VsbCAgW21hdFRvb2x0aXBdPVwibWV0YURhdGEudG9vbFRpcCA/PyAnJ1wiICBbY29uZGl0aW9uYWxDbGFzc2VzXT0nbWV0YURhdGEuY2xhc3NlcycgW2VsZW1lbnRdPSdlbGVtZW50JyBbc3R5bGVyXT0nc3R5bGVzLmJvZHknIFtjbGFzcy5ncm91cC1mb290ZXJdPVwiZWxlbWVudC5pc0dyb3VwRm9vdGVyXCIgKGNsaWNrKT0nY2VsbENsaWNrZWQoZWxlbWVudCwgbWV0YURhdGEua2V5KScgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTtjb250ZXh0OiB7bWV0YURhdGE6IG1ldGFEYXRhLCBlbGVtZW50OiBlbGVtZW50LCB0cmFuc2Zvcm06IHRyYW5zZm9ybSB9OyBJbmplY3RvcjogaW5qZWN0b3JcIiAvPlxyXG4gICAgPC9tYXQtY2VsbD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIFxyXG4gIDwhLS0gZm9vdGVyIC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSBtYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uZm9vdGVyQ2VsbDtlbHNlIGZvb3RlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21DZWxsLmNvbHVtbkRlZi5mb290ZXJDZWxsLnRlbXBsYXRlO2NvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIGRhdGE6IGRhdGEkLCBzdHlsZXMgOiBzdHlsZXMuZm9vdGVyIH1cIi8+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj5cclxuICAgICAgPG1hdC1mb290ZXItY2VsbCAgW3N0eWxlcl09J3N0eWxlcy5mb290ZXInICpuZ3J4TGV0PVwiZGF0YSQgYXMgZGF0YVwiIFtjb25kaXRpb25hbENsYXNzZXNdPSdtZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0Q2xhc3Nlcz8uZm9vdGVyJz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiEhZGF0YT8ubGVuZ3RoICYmIG1ldGFEYXRhLmFkZGl0aW9uYWw/LmZvb3RlclwiIFtuZ1N3aXRjaF09XCJtZXRhRGF0YS5maWVsZFR5cGVcIiBjbGFzcz1cImJvbGRcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuQ3VycmVuY3lcIj5cclxuICAgICAgICAgICAge3sgZGF0YSB8IGNvbHVtblRvdGFsOiBtZXRhRGF0YSB8IGN1cnJlbmN5IH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLk51bWJlclwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhIHwgY29sdW1uVG90YWw6IG1ldGFEYXRhIHwgbnVtYmVyIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L21hdC1mb290ZXItY2VsbD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
@@ -10,15 +10,14 @@ import * as i1 from "@angular/material/input";
|
|
|
10
10
|
import * as i2 from "@angular/material/form-field";
|
|
11
11
|
import * as i3 from "@angular/forms";
|
|
12
12
|
import * as i4 from "@angular/material/datepicker";
|
|
13
|
-
class DateFilterComponent {
|
|
13
|
+
export class DateFilterComponent {
|
|
14
14
|
constructor() {
|
|
15
15
|
this.FilterType = FilterType;
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: DateFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: DateFilterComponent, isStandalone: true, selector: "tb-date-filter", inputs: { info: "info", CurrentFilterType: "CurrentFilterType" }, ngImport: i0, template: "<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\r\n <mat-form-field>\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\r\n <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix [for]=\"cal\" preventEnter />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter />\r\n <mat-datepicker #fromVal></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter />\r\n <mat-datepicker #toVal />\r\n </mat-form-field>\r\n </ng-container>\r\n</ng-container>\r\n\r\n", styles: [".filter-name{color:#6495ed;margin:10px 0;font-weight:600;display:inline-block}.switch{display:inline-block}.my-filter{margin-right:15px}.cancel-button{float:right}.head-row{width:100%}.filter-row{width:-moz-fit-content;width:fit-content}mat-card.filter-card::ng-deep mat-form-field{width:150px}mat-card.filter-card::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}mat-card.filter-card::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.inline{display:inline-block}.small-button{height:18px;width:18px;font-size:18px;padding:0;margin:0}.small-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.cancel-button{float:right;font-weight:700}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DateFilterComponent, decorators: [{
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: DateFilterComponent, decorators: [{
|
|
22
21
|
type: Component,
|
|
23
22
|
args: [{ selector: 'tb-date-filter', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], standalone: true, imports: [
|
|
24
23
|
NgIf, MatInputModule, FormsModule, MatDatepickerModule, PreventEnterDirective
|
|
@@ -28,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
28
27
|
}], CurrentFilterType: [{
|
|
29
28
|
type: Input
|
|
30
29
|
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2RhdGUtZmlsdGVyL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQWEzRCxNQUFNLE9BQU8sbUJBQW1CO0lBWGhDO1FBWUksZUFBVSxHQUFHLFVBQVUsQ0FBQztLQUczQjs4R0FKWSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw0SUNwQmhDLDB6Q0F3QkEsczBCRFBRLElBQUksNEZBQUUsY0FBYyxzckJBQUUsV0FBVywwNEJBQUUsbUJBQW1CLHVmQUgzQyxDQUFDLEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUMsQ0FBQzs7MkZBTXhELG1CQUFtQjtrQkFYL0IsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSxpQkFFaEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUMsY0FDckQsSUFBSSxXQUNQO3dCQUNMLElBQUksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQjtxQkFDaEY7OEJBSVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcnRpYWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2ZpbHRlclR5cGVzJztcclxuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybXNNb2R1bGUsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IFByZXZlbnRFbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndGItZGF0ZS1maWx0ZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4uL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7cHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybX1dLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBOZ0lmLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdERhdGVwaWNrZXJNb2R1bGUsIFByZXZlbnRFbnRlckRpcmVjdGl2ZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUZpbHRlckNvbXBvbmVudCB7XHJcbiAgICBGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZTtcclxuICAgIEBJbnB1dCgpIGluZm8hOiBQYXJ0aWFsRmlsdGVyO1xyXG4gICAgQElucHV0KCkgQ3VycmVudEZpbHRlclR5cGUhOiBGaWx0ZXJUeXBlO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJDdXJyZW50RmlsdGVyVHlwZSAhPT0gRmlsdGVyVHlwZS5EYXRlQmV0d2VlbiAmJiBDdXJyZW50RmlsdGVyVHlwZSAhPT0gRmlsdGVyVHlwZS5Jc051bGxcIj5cclxuICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiZmlsdGVyVmFsdWVcIiBbbmdNb2RlbF09XCJpbmZvLmZpbHRlclZhbHVlXCIgW21hdERhdGVwaWNrZXJdPVwiY2FsXCIvPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIGNsYXNzPVwic21hbGwtYnV0dG9uIGRhdGUtdG9nZ2xlXCIgbWF0U3VmZml4IFtmb3JdPVwiY2FsXCIgcHJldmVudEVudGVyIC8+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjY2FsIC8+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiQ3VycmVudEZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZUJldHdlZW5cIj5cclxuICA8bmctY29udGFpbmVyIG5nTW9kZWxHcm91cD1cImZpbHRlclZhbHVlXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJteS1maWx0ZXJcIiA+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiU3RhcnRcIiBbbmdNb2RlbF09XCJpbmZvLmZpbHRlclZhbHVlPy5TdGFydFwiICBwbGFjZWhvbGRlcj1cIkZyb21cIiBbbWF0RGF0ZXBpY2tlcl09XCJmcm9tVmFsXCJcclxuICAgICAgICAgIChjbGljayk9XCJmcm9tVmFsLm9wZW4oKVwiLz5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggY2xhc3M9XCJzbWFsbC1idXR0b24gZGF0ZS10b2dnbGVcIiBbZm9yXT1cImZyb21WYWxcIiBwcmV2ZW50RW50ZXIgLz5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyICNmcm9tVmFsPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIkVuZFwiIFtuZ01vZGVsXT1cImluZm8uZmlsdGVyVmFsdWU/LkVuZFwiICBwbGFjZWhvbGRlcj1cIlRvXCIgW21hdERhdGVwaWNrZXJdPVwidG9WYWxcIiAoY2xpY2spPVwidG9WYWwub3BlbigpXCIvPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBjbGFzcz1cInNtYWxsLWJ1dHRvbiBkYXRlLXRvZ2dsZVwiIFtmb3JdPVwidG9WYWxcIiBwcmV2ZW50RW50ZXIgLz5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyICN0b1ZhbCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG4iXX0=
|