ngx-techlify-core 18.31.0 → 18.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.component.mjs +4 -3
- package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.module.mjs +7 -3
- package/esm2022/lib/export-excel/export-excel-button/export-excel-button.component.mjs +2 -2
- package/esm2022/lib/role/permission/permissions-management.component.mjs +2 -8
- package/esm2022/lib/role/role-form.component.mjs +4 -10
- package/esm2022/lib/role/role.model.mjs +1 -1
- package/esm2022/lib/role/roles-view-all.component.mjs +3 -10
- package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +3 -3
- package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.component.mjs +48 -26
- package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.module.mjs +8 -4
- package/esm2022/lib/subscription/subscription.service.mjs +6 -2
- package/esm2022/lib/subscription/techlify-subscription.directive.mjs +11 -10
- package/esm2022/lib/techlify-icon/techlify-icon.component.mjs +2 -1
- package/esm2022/lib/timeline-filter/timeline-filter.component.mjs +6 -6
- package/esm2022/lib/user/user-form.component.mjs +10 -13
- package/esm2022/lib/user-selector/user-selector.component.mjs +2 -7
- package/fesm2022/ngx-techlify-core.mjs +81 -74
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -1
- package/lib/role/permission/permissions-management.component.d.ts +0 -1
- package/lib/role/role.model.d.ts +0 -2
- package/lib/role/roles-view-all.component.d.ts +0 -1
- package/lib/subscription/subscription-package-listing/subscription-package-listing.component.d.ts +4 -2
- package/lib/subscription/subscription-package-listing/subscription-package-listing.module.d.ts +2 -1
- package/lib/subscription/techlify-subscription.directive.d.ts +5 -4
- package/lib/timeline-filter/timeline-filter.component.d.ts +1 -1
- package/lib/user/user-form.component.d.ts +0 -2
- package/lib/user-selector/user-selector.component.d.ts +1 -2
- package/package.json +1 -1
- package/styles/style.scss +6 -0
|
@@ -279,7 +279,7 @@ export class SearchableSelectorComponent {
|
|
|
279
279
|
provide: MatFormFieldControl,
|
|
280
280
|
useExisting: SearchableSelectorComponent
|
|
281
281
|
}
|
|
282
|
-
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\"
|
|
282
|
+
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\" *ngIf=\"add\" (click)=\"addItem($event)\">\n add\n </mat-icon>\n <mat-icon class=\"cursor-pointer\" *ngIf=\"edit && selectedValue\" (click)=\"editItem($event)\">\n edit\n </mat-icon>\n </div>\n</ng-container>", styles: [".searchable-selector-container{display:flex;align-items:center}.searchable-selector-container mat-select{flex-grow:1}.searchable-selector-container mat-icon{margin-left:2px}.relative-icon{position:relative;top:-4px}.searchable-selector-scrollable-container{max-height:175px;overflow-y:auto}:host ::ng-deep .mat-mdc-floating-label{pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.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: "directive", type: i9.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
|
|
283
283
|
}
|
|
284
284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchableSelectorComponent, decorators: [{
|
|
285
285
|
type: Component,
|
|
@@ -288,7 +288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
288
288
|
provide: MatFormFieldControl,
|
|
289
289
|
useExisting: SearchableSelectorComponent
|
|
290
290
|
}
|
|
291
|
-
], template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\"
|
|
291
|
+
], template: "<ng-container [formGroup]=\"selectorForm\">\n <div class=\"searchable-selector-container\">\n <!-- Selector and Suffix Icons -->\n <mat-select formControlName=\"select_value\" [multiple]=\"multiple\" [required]=\"required\"\n (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\" [panelWidth]=\"panelWidth\">\n <!-- Search Field -->\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n\n <!-- Options with Scrollable Container -->\n <div class=\"searchable-selector-scrollable-container\" cdkScrollable (scrollend)=\"onScroll()\">\n <mat-option *ngFor=\"let item of dataItems\" [value]=\"getPropertyValue(item, valueField)\">\n <span>{{ getPropertyValue(item, titleField) }}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style=\"font-size: 14px;\">\n - {{ getPropertyValue(item, subtitleField) }}\n </span>\n </mat-option>\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </mat-select>\n\n <!-- Add and Edit Buttons -->\n <mat-icon class=\"cursor-pointer\" *ngIf=\"add\" (click)=\"addItem($event)\">\n add\n </mat-icon>\n <mat-icon class=\"cursor-pointer\" *ngIf=\"edit && selectedValue\" (click)=\"editItem($event)\">\n edit\n </mat-icon>\n </div>\n</ng-container>", styles: [".searchable-selector-container{display:flex;align-items:center}.searchable-selector-container mat-select{flex-grow:1}.searchable-selector-container mat-icon{margin-left:2px}.relative-icon{position:relative;top:-4px}.searchable-selector-scrollable-container{max-height:175px;overflow-y:auto}:host ::ng-deep .mat-mdc-floating-label{pointer-events:none!important}\n"] }]
|
|
292
292
|
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.FocusMonitor }, { type: i3.HttpService }, { type: i0.ElementRef }, { type: i4.MatDialog }, { type: i1.NgControl, decorators: [{
|
|
293
293
|
type: Optional
|
|
294
294
|
}, {
|
|
@@ -353,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
353
353
|
}], value: [{
|
|
354
354
|
type: Input
|
|
355
355
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8sMkJBQTJCO2FBZ0MvQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXbEIsSUFBSSxLQUFLO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7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O3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLGlCQUFpQjtzQkFBekIsS0FBSztnQkF3QkYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIG9mLCBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaGFibGUtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuICBASW5wdXQoKSB0aXRsZUZpZWxkOiBzdHJpbmcgPSAndGl0bGUnO1xuICBASW5wdXQoKSBzdWJ0aXRsZUZpZWxkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaVVybCE6IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgYWRkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFkZENvbmZpZzogYW55O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVkaXRDb25maWc6IGFueTtcbiAgQElucHV0KCkgc29ydDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNvcnRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZDogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+IHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhcGlEYXRhUHJvcGVydHk6IHN0cmluZyA9ICdkYXRhJztcbiAgQElucHV0KCkgY2FjaGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGVyUGFnZTogbnVtYmVyID0gMjU7XG4gIEBJbnB1dCgpIGluRGF0YVNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBmb2N1c1NlYXJjaE9uT3BlbiA9IGZhbHNlO1xuXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcbiAgc3RhdGljIG5leHRJZCA9IDA7XG4gIHNlbGVjdG9yRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICdzZWFyY2hhYmxlLXNlbGN0b3InO1xuICBpZCA9IGBzZWFyY2hhYmxlLXNlbGN0b3ItJHtTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQubmV4dElkKyt9YDtcbiAgZGVzY3JpYmVkQnkgPSAnJztcbiAgZmlsdGVyczogYW55O1xuICBjYWNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIGNvbnN0IHsgdmFsdWU6IHsgc2VsZWN0X3ZhbHVlIH0gfSA9IHRoaXMuc2VsZWN0b3JGb3JtO1xuICAgIHJldHVybiAhc2VsZWN0X3ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7IHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7IH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9yZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuc2VsZWN0b3JGb3JtLmRpc2FibGUoKSA6IHRoaXMuc2VsZWN0b3JGb3JtLmVuYWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpPy52YWx1ZSB8fCAnJztcbiAgfVxuICBzZXQgdmFsdWUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RvckZvcm0ucGF0Y2hWYWx1ZSh7IHNlbGVjdF92YWx1ZTogZGF0YSB8fCAnJyB9KTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xuXG4gICAgdGhpcy5zZWxlY3RvckZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWxlY3RfdmFsdWU6IFtudWxsXSxcbiAgICAgIHNlYXJjaDogJydcbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmICFvcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgb3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRhdGFJdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wZW5lZCAmJiB0aGlzLmVuYWJsZVNlYXJjaCAmJiB0aGlzLmZvY3VzU2VhcmNoT25PcGVuKSB7XG4gICAgICAvLyBGb2N1cyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGF0YUl0ZW1zKCk6IGFueVtdIHtcbiAgICBsZXQgaXRlbXM6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkpXG4gICAgICBpdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkVmFsdWUsIC4uLnRoaXMuaXRlbXNdO1xuICAgIGVsc2UgaWYgKCghdGhpcy5tdWx0aXBsZSkgJiYgdGhpcy5zZWxlY3RlZFZhbHVlKVxuICAgICAgaXRlbXMgPSBbdGhpcy5zZWxlY3RlZFZhbHVlLCAuLi50aGlzLml0ZW1zXTtcbiAgICBlbHNlXG4gICAgICBpdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKHYsIGksIGEpID0+IGEuZmluZEluZGV4KHYgPT4gdlt0aGlzLnZhbHVlRmllbGRdID09PSBhW2ldW3RoaXMudmFsdWVGaWVsZF0pID09PSBpKTtcbiAgICAvL0VtaXQgdGhlIGl0ZW1zIHRvIGFueSBjaGlsZCBjb21wb25lbnRcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVNlYXJjaClcbiAgICAgICAgICB0aGlzLnNlYXJjaCh2YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcnMgPSB7XG4gICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgcGFnZTogMSxcbiAgICAgIGxhc3RQYWdlOiAxXG4gICAgfVxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5zb3J0X2J5ID0gdGhpcy5zb3J0QnkgfHwgYCR7dGhpcy50aXRsZUZpZWxkfXxhc2NgO1xuICAgIH1cblxuICAgIC8vRmV0Y2ggSXRlbXMgb25seSBpZiBpdCBpcyBub3QgcHJlc2VudCwgY2FuIGJlIHVzZWQgaW4gcGxhY2VzIHdoZXJlIHdlIGxvYWQgbWFueSBlbnRyaWVzLlxuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5mZXRjaEl0ZW1MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hJdGVtTGlzdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBpVXJsLCB7IHBhcmFtczogdGhpcy5maWx0ZXJzIH0pXG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmh0dHAuY2FjaGUoKS5nZXQodGhpcy5hcGlVcmwsIHsgcGFyYW1zOiB0aGlzLmZpbHRlcnMgfSlcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG9mKCkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICBzd2l0Y2hNYXAoKF8pID0+IGZyb20ocmVxdWVzdCkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5jb25jYXQocmVzdWx0W3RoaXMuYXBpRGF0YVByb3BlcnR5XSk7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgdGhpcy5jYWNoZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSByZXN1bHQ/LmN1cnJlbnRfcGFnZSB8fCAxO1xuICAgICAgICB0aGlzLmZpbHRlcnMubGFzdFBhZ2UgPSByZXN1bHQ/Lmxhc3RfcGFnZSB8fCAxO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0YTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVZhbHVlKGVsZTogYW55LCBrZXlTdHJpbmc6IHN0cmluZykge1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgXCIuJDFcIik7IC8vIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzXG4gICAga2V5U3RyaW5nID0ga2V5U3RyaW5nLnJlcGxhY2UoL15cXC4vLCBcIlwiKTsgLy8gc3RyaXAgYSBsZWFkaW5nIGRvdFxuICAgIGNvbnN0IGtleUxpc3QgPSBrZXlTdHJpbmcuc3BsaXQoXCIuXCIpO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0ga2V5TGlzdC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleUxpc3RbaV07XG4gICAgICBpZiAoZWxlICYmIGtleSBpbiBlbGUpIHtcbiAgICAgICAgZWxlID0gZWxlW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGU7XG4gIH1cblxuICBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9ICh0aGlzLnZhbHVlIGFzIFtdKS5tYXAoeCA9PiB0aGlzLmRhdGFJdGVtcy5maW5kKHkgPT4geVt0aGlzLnZhbHVlRmllbGRdID09PSB4KSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5kYXRhSXRlbXMuZmluZCh4ID0+IHhbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmICh0aGlzLm5nQ29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmRpcnR5KSk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICghdGhpcy5pc0xvYWRpbmcgJiYgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID4gdGhpcy5maWx0ZXJzLnBhZ2UpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWREYXRhKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID0gMTtcbiAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1t0aGlzLnNlYXJjaEZpZWxkXSA9IGV2ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gZXZlbnQ7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgc2VhcmNoIGZpZWxkIHRvIHNlYXJjaCBpbiBkYXRhXG4gICAgaWYgKHRoaXMuaW5EYXRhU2VhcmNoICYmIHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVySXRlbXMoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhldmVudDogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcy5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZVt0aGlzLnNlYXJjaEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuc2VhcmNoKGV2ZW50LnRvTG93ZXJDYXNlKCkpICE9IC0xXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcztcbiAgICB9XG4gIH1cblxuICBhZGRJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuaXRlbUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICAuLi50aGlzLmFkZENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2gocmVzdWx0Lml0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbHVlKHJlc3VsdC5pdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZWRpdEl0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5pdGVtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuZWRpdENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWx1ZShyZXN1bHQuaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwic2VsZWN0b3JGb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLXNlbGVjdG9yLWNvbnRhaW5lclwiPlxuICAgIDwhLS0gU2VsZWN0b3IgYW5kIFN1ZmZpeCBJY29ucyAtLT5cbiAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RfdmFsdWVcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJfaGFuZGxlSW5wdXQoKVwiIChvcGVuZWRDaGFuZ2UpPVwib3BlbmVkQ2hhbmdlKCRldmVudClcIiBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCI+XG4gICAgICA8IS0tIFNlYXJjaCBGaWVsZCAtLT5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVuYWJsZVNlYXJjaFwiIGNsYXNzPVwicC0xIHctMTAwXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNzZWFyY2hJbnB1dD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDwhLS0gT3B0aW9ucyB3aXRoIFNjcm9sbGFibGUgQ29udGFpbmVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaGFibGUtc2VsZWN0b3Itc2Nyb2xsYWJsZS1jb250YWluZXJcIiBjZGtTY3JvbGxhYmxlIChzY3JvbGxlbmQpPVwib25TY3JvbGwoKVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhSXRlbXNcIiBbdmFsdWVdPVwiZ2V0UHJvcGVydHlWYWx1ZShpdGVtLCB2YWx1ZUZpZWxkKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGdldFByb3BlcnR5VmFsdWUoaXRlbSwgdGl0bGVGaWVsZCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZUZpZWxkXCIgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxuICAgICAgICAgICAgLSB7eyBnZXRQcm9wZXJ0eVZhbHVlKGl0ZW0sIHN1YnRpdGxlRmllbGQpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8IS0tIEFkZCBhbmQgRWRpdCBCdXR0b25zIC0tPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMTJweDtcIiAqbmdJZj1cImFkZFwiIChjbGljayk9XCJhZGRJdGVtKCRldmVudClcIj5cbiAgICAgIGFkZFxuICAgIDwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC0xMnB4O1wiICpuZ0lmPVwiZWRpdCAmJiBzZWxlY3RlZFZhbHVlXCIgKGNsaWNrKT1cImVkaXRJdGVtKCRldmVudClcIj5cbiAgICAgIGVkaXRcbiAgICA8L21hdC1pY29uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8sMkJBQTJCO2FBZ0MvQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXbEIsSUFBSSxLQUFLO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTlELElBQ0ksUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFDSSxRQUFRLEtBQWMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFDRSxXQUErQixFQUN2QixhQUEyQixFQUMzQixJQUFpQixFQUNqQixXQUFvQyxFQUNwQyxNQUFpQixFQUNFLFNBQW9CO1FBSnZDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBaEZ4QyxlQUFVLEdBQVcsSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFHN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUV6Qix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBQzdCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFFckIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0QixTQUFJLEdBQVksSUFBSSxDQUFDO1FBSXJCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsb0JBQWUsR0FBVyxNQUFNLENBQUM7UUFDakMsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFbkMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFHM0IsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxvQkFBb0IsQ0FBQztRQUNuQyxPQUFFLEdBQUcsc0JBQXNCLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDbEUsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFakIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDaEIsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWdCakQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBbUJ4QixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDcEMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMxRCwrQkFBK0I7WUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxLQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWE7WUFDN0MsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7WUFFNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVk7YUFDekMsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWTtnQkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxDQUFDO1lBQ1AsUUFBUSxFQUFFLENBQUM7U0FDWixDQUFBO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsTUFBTSxDQUFDO1FBQ2pFLENBQUM7UUFFRCwwRkFBMEY7UUFDMUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUMvQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FDdkMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBYTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWlCO1FBQ2hDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFRLEVBQUUsU0FBaUI7UUFDMUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1FBQ3BGLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtRQUNoRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUksSUFBSSxDQUFDLEtBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7WUFFckcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUtELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7UUFDRCx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDbEQsT0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUM1RixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyRCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRSxFQUFFO1lBQ1IsR0FBRyxJQUFJLENBQUMsU0FBUztTQUNsQixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLEtBQUs7WUFDaEIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTthQUN6QjtZQUNELEdBQUcsSUFBSSxDQUFDLFVBQVU7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ2hELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7K0dBOVRVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDZ3QkFQM0I7WUFDVDtnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsMkJBQTJCO2FBQ3pDO1NBQ0Ysc0lDaENILDRqREErQmU7OzRGREdGLDJCQUEyQjtrQkFYdkMsU0FBUzsrQkFDRSx5QkFBeUIsYUFHeEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyw2QkFBNkI7eUJBQ3pDO3FCQUNGOzswQkFxRkUsUUFBUTs7MEJBQUksSUFBSTt5Q0FsRk8sV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUVmLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLGlCQUFpQjtzQkFBekIsS0FBSztnQkF3QkYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIG9mLCBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaGFibGUtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuICBASW5wdXQoKSB0aXRsZUZpZWxkOiBzdHJpbmcgPSAndGl0bGUnO1xuICBASW5wdXQoKSBzdWJ0aXRsZUZpZWxkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaVVybCE6IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgYWRkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFkZENvbmZpZzogYW55O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVkaXRDb25maWc6IGFueTtcbiAgQElucHV0KCkgc29ydDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNvcnRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZDogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+IHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhcGlEYXRhUHJvcGVydHk6IHN0cmluZyA9ICdkYXRhJztcbiAgQElucHV0KCkgY2FjaGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGVyUGFnZTogbnVtYmVyID0gMjU7XG4gIEBJbnB1dCgpIGluRGF0YVNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBmb2N1c1NlYXJjaE9uT3BlbiA9IGZhbHNlO1xuXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcbiAgc3RhdGljIG5leHRJZCA9IDA7XG4gIHNlbGVjdG9yRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICdzZWFyY2hhYmxlLXNlbGN0b3InO1xuICBpZCA9IGBzZWFyY2hhYmxlLXNlbGN0b3ItJHtTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQubmV4dElkKyt9YDtcbiAgZGVzY3JpYmVkQnkgPSAnJztcbiAgZmlsdGVyczogYW55O1xuICBjYWNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIGNvbnN0IHsgdmFsdWU6IHsgc2VsZWN0X3ZhbHVlIH0gfSA9IHRoaXMuc2VsZWN0b3JGb3JtO1xuICAgIHJldHVybiAhc2VsZWN0X3ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7IHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7IH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9yZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuc2VsZWN0b3JGb3JtLmRpc2FibGUoKSA6IHRoaXMuc2VsZWN0b3JGb3JtLmVuYWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpPy52YWx1ZSB8fCAnJztcbiAgfVxuICBzZXQgdmFsdWUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RvckZvcm0ucGF0Y2hWYWx1ZSh7IHNlbGVjdF92YWx1ZTogZGF0YSB8fCAnJyB9KTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xuXG4gICAgdGhpcy5zZWxlY3RvckZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWxlY3RfdmFsdWU6IFtudWxsXSxcbiAgICAgIHNlYXJjaDogJydcbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmICFvcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgb3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRhdGFJdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wZW5lZCAmJiB0aGlzLmVuYWJsZVNlYXJjaCAmJiB0aGlzLmZvY3VzU2VhcmNoT25PcGVuKSB7XG4gICAgICAvLyBGb2N1cyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGF0YUl0ZW1zKCk6IGFueVtdIHtcbiAgICBsZXQgaXRlbXM6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkpXG4gICAgICBpdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkVmFsdWUsIC4uLnRoaXMuaXRlbXNdO1xuICAgIGVsc2UgaWYgKCghdGhpcy5tdWx0aXBsZSkgJiYgdGhpcy5zZWxlY3RlZFZhbHVlKVxuICAgICAgaXRlbXMgPSBbdGhpcy5zZWxlY3RlZFZhbHVlLCAuLi50aGlzLml0ZW1zXTtcbiAgICBlbHNlXG4gICAgICBpdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKHYsIGksIGEpID0+IGEuZmluZEluZGV4KHYgPT4gdlt0aGlzLnZhbHVlRmllbGRdID09PSBhW2ldW3RoaXMudmFsdWVGaWVsZF0pID09PSBpKTtcbiAgICAvL0VtaXQgdGhlIGl0ZW1zIHRvIGFueSBjaGlsZCBjb21wb25lbnRcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVNlYXJjaClcbiAgICAgICAgICB0aGlzLnNlYXJjaCh2YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcnMgPSB7XG4gICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgcGFnZTogMSxcbiAgICAgIGxhc3RQYWdlOiAxXG4gICAgfVxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5zb3J0X2J5ID0gdGhpcy5zb3J0QnkgfHwgYCR7dGhpcy50aXRsZUZpZWxkfXxhc2NgO1xuICAgIH1cblxuICAgIC8vRmV0Y2ggSXRlbXMgb25seSBpZiBpdCBpcyBub3QgcHJlc2VudCwgY2FuIGJlIHVzZWQgaW4gcGxhY2VzIHdoZXJlIHdlIGxvYWQgbWFueSBlbnRyaWVzLlxuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5mZXRjaEl0ZW1MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hJdGVtTGlzdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBpVXJsLCB7IHBhcmFtczogdGhpcy5maWx0ZXJzIH0pXG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmh0dHAuY2FjaGUoKS5nZXQodGhpcy5hcGlVcmwsIHsgcGFyYW1zOiB0aGlzLmZpbHRlcnMgfSlcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG9mKCkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICBzd2l0Y2hNYXAoKF8pID0+IGZyb20ocmVxdWVzdCkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5jb25jYXQocmVzdWx0W3RoaXMuYXBpRGF0YVByb3BlcnR5XSk7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgdGhpcy5jYWNoZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSByZXN1bHQ/LmN1cnJlbnRfcGFnZSB8fCAxO1xuICAgICAgICB0aGlzLmZpbHRlcnMubGFzdFBhZ2UgPSByZXN1bHQ/Lmxhc3RfcGFnZSB8fCAxO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0YTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVZhbHVlKGVsZTogYW55LCBrZXlTdHJpbmc6IHN0cmluZykge1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgXCIuJDFcIik7IC8vIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzXG4gICAga2V5U3RyaW5nID0ga2V5U3RyaW5nLnJlcGxhY2UoL15cXC4vLCBcIlwiKTsgLy8gc3RyaXAgYSBsZWFkaW5nIGRvdFxuICAgIGNvbnN0IGtleUxpc3QgPSBrZXlTdHJpbmcuc3BsaXQoXCIuXCIpO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0ga2V5TGlzdC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleUxpc3RbaV07XG4gICAgICBpZiAoZWxlICYmIGtleSBpbiBlbGUpIHtcbiAgICAgICAgZWxlID0gZWxlW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGU7XG4gIH1cblxuICBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9ICh0aGlzLnZhbHVlIGFzIFtdKS5tYXAoeCA9PiB0aGlzLmRhdGFJdGVtcy5maW5kKHkgPT4geVt0aGlzLnZhbHVlRmllbGRdID09PSB4KSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5kYXRhSXRlbXMuZmluZCh4ID0+IHhbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmICh0aGlzLm5nQ29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmRpcnR5KSk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICghdGhpcy5pc0xvYWRpbmcgJiYgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID4gdGhpcy5maWx0ZXJzLnBhZ2UpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWREYXRhKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID0gMTtcbiAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1t0aGlzLnNlYXJjaEZpZWxkXSA9IGV2ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gZXZlbnQ7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgc2VhcmNoIGZpZWxkIHRvIHNlYXJjaCBpbiBkYXRhXG4gICAgaWYgKHRoaXMuaW5EYXRhU2VhcmNoICYmIHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVySXRlbXMoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhldmVudDogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcy5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZVt0aGlzLnNlYXJjaEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuc2VhcmNoKGV2ZW50LnRvTG93ZXJDYXNlKCkpICE9IC0xXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcztcbiAgICB9XG4gIH1cblxuICBhZGRJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuaXRlbUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICAuLi50aGlzLmFkZENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2gocmVzdWx0Lml0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbHVlKHJlc3VsdC5pdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZWRpdEl0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5pdGVtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuZWRpdENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWx1ZShyZXN1bHQuaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwic2VsZWN0b3JGb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLXNlbGVjdG9yLWNvbnRhaW5lclwiPlxuICAgIDwhLS0gU2VsZWN0b3IgYW5kIFN1ZmZpeCBJY29ucyAtLT5cbiAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RfdmFsdWVcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJfaGFuZGxlSW5wdXQoKVwiIChvcGVuZWRDaGFuZ2UpPVwib3BlbmVkQ2hhbmdlKCRldmVudClcIiBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCI+XG4gICAgICA8IS0tIFNlYXJjaCBGaWVsZCAtLT5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVuYWJsZVNlYXJjaFwiIGNsYXNzPVwicC0xIHctMTAwXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNzZWFyY2hJbnB1dD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDwhLS0gT3B0aW9ucyB3aXRoIFNjcm9sbGFibGUgQ29udGFpbmVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaGFibGUtc2VsZWN0b3Itc2Nyb2xsYWJsZS1jb250YWluZXJcIiBjZGtTY3JvbGxhYmxlIChzY3JvbGxlbmQpPVwib25TY3JvbGwoKVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhSXRlbXNcIiBbdmFsdWVdPVwiZ2V0UHJvcGVydHlWYWx1ZShpdGVtLCB2YWx1ZUZpZWxkKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGdldFByb3BlcnR5VmFsdWUoaXRlbSwgdGl0bGVGaWVsZCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZUZpZWxkXCIgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxuICAgICAgICAgICAgLSB7eyBnZXRQcm9wZXJ0eVZhbHVlKGl0ZW0sIHN1YnRpdGxlRmllbGQpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8IS0tIEFkZCBhbmQgRWRpdCBCdXR0b25zIC0tPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJhZGRcIiAoY2xpY2spPVwiYWRkSXRlbSgkZXZlbnQpXCI+XG4gICAgICBhZGRcbiAgICA8L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJlZGl0ICYmIHNlbGVjdGVkVmFsdWVcIiAoY2xpY2spPVwiZWRpdEl0ZW0oJGV2ZW50KVwiPlxuICAgICAgZWRpdFxuICAgIDwvbWF0LWljb24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
|
|
@@ -3,31 +3,35 @@ import { Component } from '@angular/core';
|
|
|
3
3
|
import { debounceTime, finalize } from 'rxjs';
|
|
4
4
|
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
5
5
|
import { TechlifyListingControllerInterface } from '../../base-model/techlify-listing-component.class';
|
|
6
|
+
import { ActionPopupComponent } from '../../action-popup';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../subscription-package.service";
|
|
8
9
|
import * as i2 from "@angular/router";
|
|
9
10
|
import * as i3 from "../../core/filter.service";
|
|
10
|
-
import * as i4 from "@angular/
|
|
11
|
-
import * as i5 from "@angular/
|
|
12
|
-
import * as i6 from "@angular/
|
|
13
|
-
import * as i7 from "@angular/material/
|
|
14
|
-
import * as i8 from "@angular/material/
|
|
15
|
-
import * as i9 from "@angular/material/
|
|
16
|
-
import * as i10 from "@angular/material/
|
|
17
|
-
import * as i11 from "@angular/material/
|
|
18
|
-
import * as i12 from "@angular/material/
|
|
19
|
-
import * as i13 from "@angular/material/
|
|
20
|
-
import * as i14 from "@angular/material/
|
|
21
|
-
import * as i15 from "@angular/material/
|
|
22
|
-
import * as i16 from "@angular/
|
|
23
|
-
import * as i17 from "
|
|
11
|
+
import * as i4 from "@angular/material/dialog";
|
|
12
|
+
import * as i5 from "@angular/forms";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
import * as i7 from "@angular/material/button";
|
|
15
|
+
import * as i8 from "@angular/material/form-field";
|
|
16
|
+
import * as i9 from "@angular/material/icon";
|
|
17
|
+
import * as i10 from "@angular/material/input";
|
|
18
|
+
import * as i11 from "@angular/material/sort";
|
|
19
|
+
import * as i12 from "@angular/material/table";
|
|
20
|
+
import * as i13 from "@angular/material/card";
|
|
21
|
+
import * as i14 from "@angular/material/tooltip";
|
|
22
|
+
import * as i15 from "@angular/material/progress-bar";
|
|
23
|
+
import * as i16 from "@angular/material/slide-toggle";
|
|
24
|
+
import * as i17 from "@angular/flex-layout/flex";
|
|
25
|
+
import * as i18 from "ngx-infinite-scroll";
|
|
26
|
+
import * as i19 from "../../techlify-icon/techlify-icon.component";
|
|
24
27
|
let SubscriptionPackageListingComponent = class SubscriptionPackageListingComponent extends TechlifyListingControllerInterface {
|
|
25
|
-
constructor(subscriptionPackageService, activatedRoute, filterService, router, fb) {
|
|
28
|
+
constructor(subscriptionPackageService, activatedRoute, filterService, router, dialog, fb) {
|
|
26
29
|
super();
|
|
27
30
|
this.subscriptionPackageService = subscriptionPackageService;
|
|
28
31
|
this.activatedRoute = activatedRoute;
|
|
29
32
|
this.filterService = filterService;
|
|
30
33
|
this.router = router;
|
|
34
|
+
this.dialog = dialog;
|
|
31
35
|
this.fb = fb;
|
|
32
36
|
this.displayedColumns = ['index', 'title', 'code', 'description', 'tenants_count', 'actions'];
|
|
33
37
|
this.isWorking = false;
|
|
@@ -72,19 +76,37 @@ let SubscriptionPackageListingComponent = class SubscriptionPackageListingCompon
|
|
|
72
76
|
this.models = [];
|
|
73
77
|
this.filterFormGroup.get('sort_by').setValue(`${event?.active}|${direction}`);
|
|
74
78
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
confirmToggle(event, subscriptionPackage) {
|
|
80
|
+
const previousValue = subscriptionPackage.is_enabled;
|
|
81
|
+
event.source.checked = previousValue;
|
|
82
|
+
const action = previousValue ? 'Disable' : 'Enable';
|
|
83
|
+
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
84
|
+
width: '400px',
|
|
85
|
+
data: {
|
|
86
|
+
title: `${action} Package`,
|
|
87
|
+
message: `Are you sure to ${action.toLowerCase()} this package?`,
|
|
88
|
+
},
|
|
89
|
+
autoFocus: false
|
|
90
|
+
});
|
|
91
|
+
dialogRef.afterClosed().subscribe((confirmed) => {
|
|
92
|
+
if (confirmed) {
|
|
93
|
+
this.subscriptionPackageService.toggle(subscriptionPackage.id)
|
|
94
|
+
.pipe(finalize(() => this.isWorking = false))
|
|
95
|
+
.subscribe((res) => {
|
|
96
|
+
subscriptionPackage.is_enabled = res?.item?.is_enabled;
|
|
97
|
+
event.source.checked = subscriptionPackage.is_enabled; // update UI after success
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
event.source.checked = previousValue; // ensure UI fully restored
|
|
102
|
+
}
|
|
81
103
|
});
|
|
82
104
|
}
|
|
83
105
|
navigateToView(subscriptionPackage) {
|
|
84
106
|
this.router.navigate([`./${subscriptionPackage?.id}/view`], { relativeTo: this.activatedRoute });
|
|
85
107
|
}
|
|
86
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionPackageListingComponent, deps: [{ token: i1.SubscriptionPackageService }, { token: i2.ActivatedRoute }, { token: i3.FilterService }, { token: i2.Router }, { token: i4.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SubscriptionPackageListingComponent, selector: "app-subscription-package-listing", usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" class=\"m-4 mat-typography\" fxLayoutGap=\"1rem\">\n <mat-card appearance=\"outlined\" fxLayout fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h1 class=\"m-0\">Subscription Packages</h1>\n </div>\n <div fxFlex>\n <form [formGroup]=\"filterFormGroup\" class=\"p-2 filter-form\" fxLayout=\"row wrap\" fxLayoutGap=\"0.3rem\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Search title, description</mat-label>\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Search..\" name=\"search\"\n autocomplete=\"off\" />\n <button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"filterFormGroup.get('search').setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n </div>\n </mat-card>\n <mat-card appearance=\"outlined\" class=\"p-0\">\n <table mat-table matSort [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.title }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Code </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.code }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear class=\"w-description\"> Description\n </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.description }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"tenants_count\">\n <th mat-header-cell *matHeaderCellDef> Tenants </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.tenants_count ?? 0 }} tenants</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <div class=\"text-secondary\" fxLayout fxLayoutAlign=\"start center\">\n <button type=\"button\" mat-icon-button (click)=\"navigateToView(subscriptionPackage)\"\n matTooltip=\"View\"><mat-icon>pageview</mat-icon></button>\n <mat-slide-toggle [checked]=\"subscriptionPackage?.is_enabled\" color=\"primary\"\n (change)=\"toggle(subscriptionPackage)\">Is Enabled\n </mat-slide-toggle>\n </div>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.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: "directive", type: i10.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i12.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i15.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i16.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i16.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i16.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i16.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i17.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
108
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionPackageListingComponent, deps: [{ token: i1.SubscriptionPackageService }, { token: i2.ActivatedRoute }, { token: i3.FilterService }, { token: i2.Router }, { token: i4.MatDialog }, { token: i5.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SubscriptionPackageListingComponent, selector: "app-subscription-package-listing", usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" class=\"m-2\">\n <mat-card appearance=\"outlined\" fxLayout fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\n <h5 class=\"m-0\">Subscription Packages</h5>\n <span fxFlex></span>\n <form [formGroup]=\"filterFormGroup\" class=\"filter-form\" fxLayout=\"row\">\n <mat-form-field appearance=\"outline\" class=\"nil-subscript-wrappe fl-md\">\n <mat-label>Search</mat-label>\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Search..\" name=\"search\"\n autocomplete=\"off\" />\n <button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"filterFormGroup.get('search').setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n </mat-card>\n <mat-card appearance=\"outlined\" class=\"p-0 mt-2\">\n <table mat-table matSort [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.title }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Code </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.code }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear class=\"w-description\"> Description\n </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.description }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"tenants_count\">\n <th mat-header-cell *matHeaderCellDef> Tenants </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.tenants_count ?? 0 }} tenants</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <div class=\"text-secondary\" fxLayout fxLayoutAlign=\"start center\">\n <app-techlify-icon name=\"view\" class=\"clickable\" matTooltip=\"View\"\n (click)=\"navigateToView(subscriptionPackage)\"></app-techlify-icon>\n <mat-slide-toggle style=\"transform: scale(0.8);\" [checked]=\"subscriptionPackage?.is_enabled\"\n color=\"primary\" (change)=\"confirmToggle($event,subscriptionPackage)\">Is Enabled\n </mat-slide-toggle>\n </div>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.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: "directive", type: i11.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i11.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i12.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i12.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i12.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i12.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i12.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i12.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i12.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i12.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i12.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i12.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i13.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i16.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i17.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i17.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i17.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i17.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i18.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i19.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }] }); }
|
|
88
110
|
};
|
|
89
111
|
SubscriptionPackageListingComponent = __decorate([
|
|
90
112
|
UntilDestroy()
|
|
@@ -92,6 +114,6 @@ SubscriptionPackageListingComponent = __decorate([
|
|
|
92
114
|
export { SubscriptionPackageListingComponent };
|
|
93
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionPackageListingComponent, decorators: [{
|
|
94
116
|
type: Component,
|
|
95
|
-
args: [{ selector: 'app-subscription-package-listing', template: "<div fxLayout=\"column\" class=\"m-
|
|
96
|
-
}], ctorParameters: () => [{ type: i1.SubscriptionPackageService }, { type: i2.ActivatedRoute }, { type: i3.FilterService }, { type: i2.Router }, { type: i4.UntypedFormBuilder }] });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nL3N1YnNjcmlwdGlvbi1wYWNrYWdlLWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTaEcsSUFBTSxtQ0FBbUMsR0FBekMsTUFBTSxtQ0FBb0MsU0FBUSxrQ0FBa0M7SUFNekYsWUFDVSwwQkFBc0QsRUFDdEQsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsTUFBYyxFQUNkLEVBQXNCO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBTEEsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBVGhDLHFCQUFnQixHQUFhLENBQUMsT0FB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QUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO2FBQzNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQzthQUM1QyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN0QixtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLG1CQUF3QjtRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDOytHQTdFVSxtQ0FBbUM7bUdBQW5DLG1DQUFtQywrRkNmaEQsK2lJQTBFTTs7QUQzRE8sbUNBQW1DO0lBTi9DLFlBQVksRUFBRTtHQU1GLG1DQUFtQyxDQStFL0M7OzRGQS9FWSxtQ0FBbUM7a0JBTC9DLFNBQVM7K0JBQ0Usa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvblBhY2thZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3Vic2NyaXB0aW9uLXBhY2thZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSB9IGZyb20gJy4uLy4uL2Jhc2UtbW9kZWwvdGVjaGxpZnktbGlzdGluZy1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZmlsdGVyLnNlcnZpY2UnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1wYWNrYWdlLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uUGFja2FnZUxpc3RpbmdDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUxpc3RpbmdDb250cm9sbGVySW50ZXJmYWNlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsnaW5kZXgnLCAndGl0bGUnLCAnY29kZScsICdkZXNjcmlwdGlvbicsICd0ZW5hbnRzX2NvdW50JywgJ2FjdGlvbnMnXTtcbiAgaXNXb3JraW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlckZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvblBhY2thZ2VTZXJ2aWNlOiBTdWJzY3JpcHRpb25QYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBbJyddLFxuICAgICAgc29ydF9ieTogWycnXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYXRjaEZpbHRlcnMoKTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JDaGFuZ2VzKCk7XG4gIH1cblxuICBsaXN0ZW5Gb3JDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuYXBwbHlGaWx0ZXJUb1JvdXRlKFxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAudmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hGaWx0ZXJzKCkge1xuICAgIGxldCByb3V0ZUZpbHRlcnMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyc0Zyb21Sb3V0ZShcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZVxuICAgICk7XG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuc2V0VmFsdWUocm91dGVGaWx0ZXJzKTtcbiAgfVxuXG4gIGxvYWREYXRhKCkge1xuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICBjb25zdCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZSkpO1xuICAgIGZpbHRlcnMucGFnZSA9IHRoaXMucGFnZTtcbiAgICBmaWx0ZXJzLnBlclBhZ2UgPSB0aGlzLnBlclBhZ2U7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25QYWNrYWdlU2VydmljZS5pbmRleChmaWx0ZXJzKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5pc1dvcmtpbmcgPSBmYWxzZSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxhc3RQYWdlID0gcmVzPy5sYXN0X3BhZ2UgfHwgdGhpcy5wYWdlO1xuICAgICAgICBpZiAocmVzPy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLm1vZGVscyA9IHRoaXMubW9kZWxzLmNvbmNhdChyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBzb3J0Q29sdW1uKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBldmVudC5kaXJlY3Rpb24udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO1xuICAgIHRoaXMubW9kZWxzID0gW107XG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzb3J0X2J5Jykuc2V0VmFsdWUoYCR7ZXZlbnQ/LmFjdGl2ZX18JHtkaXJlY3Rpb259YCk7XG4gIH1cblxuICB0b2dnbGUoc3Vic2NyaXB0aW9uUGFja2FnZTogYW55KSB7XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uUGFja2FnZVNlcnZpY2UudG9nZ2xlKHN1YnNjcmlwdGlvblBhY2thZ2UuaWQpXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzV29ya2luZyA9IGZhbHNlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHN1YnNjcmlwdGlvblBhY2thZ2UuaXNfZW5hYmxlZCA9IHJlcz8uaXRlbT8uaXNfZW5hYmxlZDtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmF2aWdhdGVUb1ZpZXcoc3Vic2NyaXB0aW9uUGFja2FnZTogYW55KSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AuLyR7c3Vic2NyaXB0aW9uUGFja2FnZT8uaWR9L3ZpZXdgXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cIm0tNCBtYXQtdHlwb2dyYXBoeVwiIGZ4TGF5b3V0R2FwPVwiMXJlbVwiPlxuICAgIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiBmeExheW91dCBmeExheW91dEdhcD1cIjAuNXJlbVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgPGRpdiBmeExheW91dCBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJtLTBcIj5TdWJzY3JpcHRpb24gUGFja2FnZXM8L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmeEZsZXg+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1Hcm91cFwiIGNsYXNzPVwicC0yIGZpbHRlci1mb3JtXCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0R2FwPVwiMC4zcmVtXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoIHRpdGxlLCBkZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uXCIgbmFtZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmlsdGVyRm9ybUdyb3VwLmdldCgnc2VhcmNoJykudmFsdWVcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyRm9ybUdyb3VwLmdldCgnc2VhcmNoJykuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiBjbGFzcz1cInAtMFwiPlxuICAgICAgICA8dGFibGUgbWF0LXRhYmxlIG1hdFNvcnQgW2RhdGFTb3VyY2VdPVwibW9kZWxzXCIgY2xhc3M9XCJ3LTEwMFwiIGluZmluaXRlU2Nyb2xsIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIlxuICAgICAgICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIiAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRDb2x1bW4oJGV2ZW50KVwiPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gIyA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBzdWJzY3JpcHRpb25QYWNrYWdlOyBsZXQgaSA9IGluZGV4XCI+IHt7IGkrMSB9fSA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBkaXNhYmxlQ2xlYXI+IFRpdGxlIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHN1YnNjcmlwdGlvblBhY2thZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdWJzY3JpcHRpb25QYWNrYWdlPy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY29kZVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj4gQ29kZSA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBzdWJzY3JpcHRpb25QYWNrYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c3Vic2NyaXB0aW9uUGFja2FnZT8uY29kZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBkaXNhYmxlQ2xlYXIgY2xhc3M9XCJ3LWRlc2NyaXB0aW9uXCI+IERlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgc3Vic2NyaXB0aW9uUGFja2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3N1YnNjcmlwdGlvblBhY2thZ2U/LmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0ZW5hbnRzX2NvdW50XCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gVGVuYW50cyA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBzdWJzY3JpcHRpb25QYWNrYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c3Vic2NyaXB0aW9uUGFja2FnZT8udGVuYW50c19jb3VudCA/PyAwIH19IHRlbmFudHM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBBY3Rpb25zIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHN1YnNjcmlwdGlvblBhY2thZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCIgZnhMYXlvdXQgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZVRvVmlldyhzdWJzY3JpcHRpb25QYWNrYWdlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlZpZXdcIj48bWF0LWljb24+cGFnZXZpZXc8L21hdC1pY29uPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgW2NoZWNrZWRdPVwic3Vic2NyaXB0aW9uUGFja2FnZT8uaXNfZW5hYmxlZFwiIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGUoc3Vic2NyaXB0aW9uUGFja2FnZSlcIj5JcyBFbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNXb3JraW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWNhcmQ+XG48L2Rpdj4iXX0=
|
|
117
|
+
args: [{ selector: 'app-subscription-package-listing', template: "<div fxLayout=\"column\" class=\"m-2\">\n <mat-card appearance=\"outlined\" fxLayout fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\n <h5 class=\"m-0\">Subscription Packages</h5>\n <span fxFlex></span>\n <form [formGroup]=\"filterFormGroup\" class=\"filter-form\" fxLayout=\"row\">\n <mat-form-field appearance=\"outline\" class=\"nil-subscript-wrappe fl-md\">\n <mat-label>Search</mat-label>\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Search..\" name=\"search\"\n autocomplete=\"off\" />\n <button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"filterFormGroup.get('search').setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n </mat-card>\n <mat-card appearance=\"outlined\" class=\"p-0 mt-2\">\n <table mat-table matSort [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.title }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Code </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.code }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear class=\"w-description\"> Description\n </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.description }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"tenants_count\">\n <th mat-header-cell *matHeaderCellDef> Tenants </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <span>{{subscriptionPackage?.tenants_count ?? 0 }} tenants</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let subscriptionPackage\">\n <div class=\"text-secondary\" fxLayout fxLayoutAlign=\"start center\">\n <app-techlify-icon name=\"view\" class=\"clickable\" matTooltip=\"View\"\n (click)=\"navigateToView(subscriptionPackage)\"></app-techlify-icon>\n <mat-slide-toggle style=\"transform: scale(0.8);\" [checked]=\"subscriptionPackage?.is_enabled\"\n color=\"primary\" (change)=\"confirmToggle($event,subscriptionPackage)\">Is Enabled\n </mat-slide-toggle>\n </div>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card>\n</div>" }]
|
|
118
|
+
}], ctorParameters: () => [{ type: i1.SubscriptionPackageService }, { type: i2.ActivatedRoute }, { type: i3.FilterService }, { type: i2.Router }, { type: i4.MatDialog }, { type: i5.UntypedFormBuilder }] });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nL3N1YnNjcmlwdGlvbi1wYWNrYWdlLWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNuRCxJQUFNLG1DQUFtQyxHQUF6QyxNQUFNLG1DQUFvQyxTQUFRLGtDQUFrQztJQU16RixZQUNVLDBCQUFzRCxFQUN0RCxjQUE4QixFQUM5QixhQUE0QixFQUM1QixNQUFjLEVBQ2QsTUFBaUIsRUFDakIsRUFBc0I7UUFDOUIsS0FBSyxFQUFFLENBQUM7UUFOQSwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixXQUFNLEdBQU4sTUFB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QTJCO1lBQ25FLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsbUJBQXdCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7K0dBaEdVLG1DQUFtQzttR0FBbkMsbUNBQW1DLCtGQ2pCaEQsNjZIQXVFTTs7QUR0RE8sbUNBQW1DO0lBTi9DLFlBQVksRUFBRTtHQU1GLG1DQUFtQyxDQWtHL0M7OzRGQWxHWSxtQ0FBbUM7a0JBTC9DLFNBQVM7K0JBQ0Usa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvblBhY2thZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3Vic2NyaXB0aW9uLXBhY2thZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSB9IGZyb20gJy4uLy4uL2Jhc2UtbW9kZWwvdGVjaGxpZnktbGlzdGluZy1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hY3Rpb24tcG9wdXAnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblBhY2thZ2VMaXN0aW5nQ29tcG9uZW50IGV4dGVuZHMgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbJ2luZGV4JywgJ3RpdGxlJywgJ2NvZGUnLCAnZGVzY3JpcHRpb24nLCAndGVuYW50c19jb3VudCcsICdhY3Rpb25zJ107XG4gIGlzV29ya2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25QYWNrYWdlU2VydmljZTogU3Vic2NyaXB0aW9uUGFja2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBbJyddLFxuICAgICAgc29ydF9ieTogWycnXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYXRjaEZpbHRlcnMoKTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JDaGFuZ2VzKCk7XG4gIH1cblxuICBsaXN0ZW5Gb3JDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuYXBwbHlGaWx0ZXJUb1JvdXRlKFxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAudmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hGaWx0ZXJzKCkge1xuICAgIGxldCByb3V0ZUZpbHRlcnMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyc0Zyb21Sb3V0ZShcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZVxuICAgICk7XG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuc2V0VmFsdWUocm91dGVGaWx0ZXJzKTtcbiAgfVxuXG4gIGxvYWREYXRhKCkge1xuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICBjb25zdCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZSkpO1xuICAgIGZpbHRlcnMucGFnZSA9IHRoaXMucGFnZTtcbiAgICBmaWx0ZXJzLnBlclBhZ2UgPSB0aGlzLnBlclBhZ2U7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25QYWNrYWdlU2VydmljZS5pbmRleChmaWx0ZXJzKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5pc1dvcmtpbmcgPSBmYWxzZSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxhc3RQYWdlID0gcmVzPy5sYXN0X3BhZ2UgfHwgdGhpcy5wYWdlO1xuICAgICAgICBpZiAocmVzPy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLm1vZGVscyA9IHRoaXMubW9kZWxzLmNvbmNhdChyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBzb3J0Q29sdW1uKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBldmVudC5kaXJlY3Rpb24udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO1xuICAgIHRoaXMubW9kZWxzID0gW107XG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzb3J0X2J5Jykuc2V0VmFsdWUoYCR7ZXZlbnQ/LmFjdGl2ZX18JHtkaXJlY3Rpb259YCk7XG4gIH1cblxuICBjb25maXJtVG9nZ2xlKGV2ZW50OiBhbnksIHN1YnNjcmlwdGlvblBhY2thZ2U6IGFueSkge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBzdWJzY3JpcHRpb25QYWNrYWdlLmlzX2VuYWJsZWQ7XG4gICAgZXZlbnQuc291cmNlLmNoZWNrZWQgPSBwcmV2aW91c1ZhbHVlO1xuICAgIGNvbnN0IGFjdGlvbiA9IHByZXZpb3VzVmFsdWUgPyAnRGlzYWJsZScgOiAnRW5hYmxlJztcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvblBvcHVwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGl0bGU6IGAke2FjdGlvbn0gUGFja2FnZWAsXG4gICAgICAgIG1lc3NhZ2U6IGBBcmUgeW91IHN1cmUgdG8gJHthY3Rpb24udG9Mb3dlckNhc2UoKX0gdGhpcyBwYWNrYWdlP2AsXG4gICAgICB9LFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChjb25maXJtZWQpID0+IHtcbiAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25QYWNrYWdlU2VydmljZS50b2dnbGUoc3Vic2NyaXB0aW9uUGFja2FnZS5pZClcbiAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzV29ya2luZyA9IGZhbHNlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uUGFja2FnZS5pc19lbmFibGVkID0gcmVzPy5pdGVtPy5pc19lbmFibGVkO1xuICAgICAgICAgICAgZXZlbnQuc291cmNlLmNoZWNrZWQgPSBzdWJzY3JpcHRpb25QYWNrYWdlLmlzX2VuYWJsZWQ7IC8vIHVwZGF0ZSBVSSBhZnRlciBzdWNjZXNzXG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5zb3VyY2UuY2hlY2tlZCA9IHByZXZpb3VzVmFsdWU7IC8vIGVuc3VyZSBVSSBmdWxseSByZXN0b3JlZFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmF2aWdhdGVUb1ZpZXcoc3Vic2NyaXB0aW9uUGFja2FnZTogYW55KSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AuLyR7c3Vic2NyaXB0aW9uUGFja2FnZT8uaWR9L3ZpZXdgXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cIm0tMlwiPlxuICAgIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiBmeExheW91dCBmeExheW91dEdhcD1cIjAuNXJlbVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgPGg1IGNsYXNzPVwibS0wXCI+U3Vic2NyaXB0aW9uIFBhY2thZ2VzPC9oNT5cbiAgICAgICAgPHNwYW4gZnhGbGV4Pjwvc3Bhbj5cbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtR3JvdXBcIiBjbGFzcz1cImZpbHRlci1mb3JtXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibmlsLXN1YnNjcmlwdC13cmFwcGUgZmwtbWRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlNlYXJjaDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi5cIiBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmlsdGVyRm9ybUdyb3VwLmdldCgnc2VhcmNoJykudmFsdWVcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJGb3JtR3JvdXAuZ2V0KCdzZWFyY2gnKS5zZXRWYWx1ZSgnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiBjbGFzcz1cInAtMCBtdC0yXCI+XG4gICAgICAgIDx0YWJsZSBtYXQtdGFibGUgbWF0U29ydCBbZGF0YVNvdXJjZV09XCJtb2RlbHNcIiBjbGFzcz1cInctMTAwXCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiXG4gICAgICAgICAgICBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgKG1hdFNvcnRDaGFuZ2UpPVwic29ydENvbHVtbigkZXZlbnQpXCI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHN1YnNjcmlwdGlvblBhY2thZ2U7IGxldCBpID0gaW5kZXhcIj4ge3sgaSsxIH19IDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj4gVGl0bGUgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgc3Vic2NyaXB0aW9uUGFja2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3N1YnNjcmlwdGlvblBhY2thZ2U/LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjb2RlXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXIgZGlzYWJsZUNsZWFyPiBDb2RlIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHN1YnNjcmlwdGlvblBhY2thZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdWJzY3JpcHRpb25QYWNrYWdlPy5jb2RlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhciBjbGFzcz1cInctZGVzY3JpcHRpb25cIj4gRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBzdWJzY3JpcHRpb25QYWNrYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c3Vic2NyaXB0aW9uUGFja2FnZT8uZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInRlbmFudHNfY291bnRcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBUZW5hbnRzIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHN1YnNjcmlwdGlvblBhY2thZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdWJzY3JpcHRpb25QYWNrYWdlPy50ZW5hbnRzX2NvdW50ID8/IDAgfX0gdGVuYW50czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgc3Vic2NyaXB0aW9uUGFja2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIiBmeExheW91dCBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gbmFtZT1cInZpZXdcIiBjbGFzcz1cImNsaWNrYWJsZVwiIG1hdFRvb2x0aXA9XCJWaWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1ZpZXcoc3Vic2NyaXB0aW9uUGFja2FnZSlcIj48L2FwcC10ZWNobGlmeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgc3R5bGU9XCJ0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XCIgW2NoZWNrZWRdPVwic3Vic2NyaXB0aW9uUGFja2FnZT8uaXNfZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgKGNoYW5nZSk9XCJjb25maXJtVG9nZ2xlKCRldmVudCxzdWJzY3JpcHRpb25QYWNrYWdlKVwiPklzIEVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvdHI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJpc1dvcmtpbmdcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9tYXQtY2FyZD5cbjwvZGl2PiJdfQ==
|
|
@@ -7,6 +7,7 @@ import { SearchableSelectorModule } from '../../searchable-selector/searchable-s
|
|
|
7
7
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
8
8
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
9
9
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
10
|
+
import { TechlifyIconModule } from '../../techlify-icon/techlify-icon.module';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
export class SubscriptionPackageListingModule {
|
|
12
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionPackageListingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -16,14 +17,16 @@ export class SubscriptionPackageListingModule {
|
|
|
16
17
|
MaterialModule,
|
|
17
18
|
SearchableSelectorModule,
|
|
18
19
|
FlexLayoutModule,
|
|
19
|
-
InfiniteScrollModule
|
|
20
|
+
InfiniteScrollModule,
|
|
21
|
+
TechlifyIconModule] }); }
|
|
20
22
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionPackageListingModule, imports: [CommonModule,
|
|
21
23
|
SubscriptionPackageListingRoutingModule,
|
|
22
24
|
ReactiveFormsModule,
|
|
23
25
|
MaterialModule,
|
|
24
26
|
SearchableSelectorModule,
|
|
25
27
|
FlexLayoutModule,
|
|
26
|
-
InfiniteScrollModule
|
|
28
|
+
InfiniteScrollModule,
|
|
29
|
+
TechlifyIconModule] }); }
|
|
27
30
|
}
|
|
28
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionPackageListingModule, decorators: [{
|
|
29
32
|
type: NgModule,
|
|
@@ -38,8 +41,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38
41
|
MaterialModule,
|
|
39
42
|
SearchableSelectorModule,
|
|
40
43
|
FlexLayoutModule,
|
|
41
|
-
InfiniteScrollModule
|
|
44
|
+
InfiniteScrollModule,
|
|
45
|
+
TechlifyIconModule
|
|
42
46
|
]
|
|
43
47
|
}]
|
|
44
48
|
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nL3N1YnNjcmlwdGlvbi1wYWNrYWdlLWxpc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFrQjlFLE1BQU0sT0FBTyxnQ0FBZ0M7K0dBQWhDLGdDQUFnQztnSEFBaEMsZ0NBQWdDLGlCQWJ6QyxtQ0FBbUMsYUFHbkMsWUFBWTtZQUNaLHVDQUF1QztZQUN2QyxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLGtCQUFrQjtnSEFHVCxnQ0FBZ0MsWUFWekMsWUFBWTtZQUNaLHVDQUF1QztZQUN2QyxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLGtCQUFrQjs7NEZBR1QsZ0NBQWdDO2tCQWY1QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQ0FBbUM7cUJBQ3BDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHVDQUF1Qzt3QkFDdkMsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uUGFja2FnZUxpc3RpbmdSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvblBhY2thZ2VMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUgfSBmcm9tICcuLi8uLi9zZWFyY2hhYmxlLXNlbGVjdG9yL3NlYXJjaGFibGUtc2VsZWN0b3IubW9kdWxlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxNb2R1bGUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IFRlY2hsaWZ5SWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uL3RlY2hsaWZ5LWljb24vdGVjaGxpZnktaWNvbi5tb2R1bGUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFN1YnNjcmlwdGlvblBhY2thZ2VMaXN0aW5nQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU3Vic2NyaXB0aW9uUGFja2FnZUxpc3RpbmdSb3V0aW5nTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgVGVjaGxpZnlJY29uTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uUGFja2FnZUxpc3RpbmdNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -18,10 +18,14 @@ export class SubscriptionService extends TechlifyServiceBaseClass {
|
|
|
18
18
|
this.subscriptions = [];
|
|
19
19
|
return this.http.get(`api/tenant-subscriptions-for-current-tenant`)
|
|
20
20
|
.pipe(tap((result) => {
|
|
21
|
-
this.subscriptions = (result?.data || []).map((x) => x?.code);
|
|
21
|
+
this.subscriptions = (result?.data || []).map((x) => x?.package?.code);
|
|
22
22
|
}), map((res) => res?.data || []));
|
|
23
23
|
}
|
|
24
24
|
isSubscriptionsExists(subscriptions) {
|
|
25
|
+
if (this.subscriptions.length == 0) {
|
|
26
|
+
//If tenant has no subscriptions enabled, then don't validate.
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
25
29
|
return subscriptions.some(item => this.subscriptions.includes(item));
|
|
26
30
|
}
|
|
27
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -33,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33
37
|
providedIn: 'root'
|
|
34
38
|
}]
|
|
35
39
|
}], ctorParameters: () => [{ type: i1.HttpService }] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7O0FBTWhGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx3QkFBd0I7SUFJL0QsWUFBWSxJQUFpQjtRQUMzQixLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFIL0Isa0JBQWEsR0FBVSxFQUFFLENBQUM7SUFJakMsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFZLEVBQUUsUUFBYTtRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxPQUFPLElBQUksUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVc7UUFDMUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUM7YUFDaEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQ25DLENBQUM7SUFDTixDQUFDO0lBR0QscUJBQXFCLENBQUMsYUFBb0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyw4REFBOEQ7WUFDOUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDOytHQWpDVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3MgfSBmcm9tICcuLi9iYXNlLW1vZGVsL3RlY2hsaWZ5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2h0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblNlcnZpY2UgZXh0ZW5kcyBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3Mge1xuXG4gIHB1YmxpYyBzdWJzY3JpcHRpb25zOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBTZXJ2aWNlKSB7XG4gICAgc3VwZXIoaHR0cCwgJ3RlbmFudC1zdWJzY3JpcHRpb25zJyk7XG4gIH1cblxuICB1cGRhdGVTdGF0dXMobW9kZWxJZDogYW55LCBzdGF0dXNJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChgYXBpL3RlbmFudC1zdWJzY3JpcHRpb25zLXN0YXR1cy8ke21vZGVsSWR9LyR7c3RhdHVzSWR9YCwge30pO1xuICB9XG5cbiAgZm9yQ3VycmVudENsaWVudChyZWxvYWQ6IGFueSkge1xuICAgIGlmICghcmVsb2FkICYmIHRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5zdWJzY3JpcHRpb25zKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGFwaS90ZW5hbnQtc3Vic2NyaXB0aW9ucy1mb3ItY3VycmVudC10ZW5hbnRgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSAocmVzdWx0Py5kYXRhIHx8IFtdKS5tYXAoKHg6IGFueSkgPT4geD8ucGFja2FnZT8uY29kZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiByZXM/LmRhdGEgfHwgW10pXG4gICAgICApO1xuICB9XG5cblxuICBpc1N1YnNjcmlwdGlvbnNFeGlzdHMoc3Vic2NyaXB0aW9uczogYW55W10pIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAvL0lmIHRlbmFudCBoYXMgbm8gc3Vic2NyaXB0aW9ucyBlbmFibGVkLCB0aGVuIGRvbid0IHZhbGlkYXRlLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzdWJzY3JpcHRpb25zLnNvbWUoaXRlbSA9PiB0aGlzLnN1YnNjcmlwdGlvbnMuaW5jbHVkZXMoaXRlbSkpO1xuICB9XG59XG4iXX0=
|