@sd-angular/core 1.3.93 → 1.3.95
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/bundles/sd-angular-core-grid-material.umd.js +25 -30
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +24 -29
- package/esm2015/grid-material/src/lib/grid-material.component.js +7 -6
- package/fesm2015/sd-angular-core-grid-material.js +27 -32
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/grid-filter/grid-filter.component.d.ts +2 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.93.tgz → sd-angular-core-1.3.95.tgz} +0 -0
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
var
|
|
2
|
-
import { __classPrivateFieldGet
|
|
1
|
+
var _subscription;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
3
|
import { Component, Input, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
|
|
4
4
|
import { SdPopupFilter } from '../popup-filter/popup-filter.component';
|
|
5
|
-
import { BehaviorSubject,
|
|
5
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
6
|
+
import { startWith } from 'rxjs/operators';
|
|
6
7
|
import { DeviceDetectorService } from 'ngx-device-detector';
|
|
7
8
|
export class SdGridFilter {
|
|
8
9
|
constructor(ref, deviceService) {
|
|
9
10
|
this.ref = ref;
|
|
10
11
|
this.deviceService = deviceService;
|
|
11
|
-
_filterOptionChanges.set(this, new Subject());
|
|
12
12
|
this.columns = [];
|
|
13
13
|
this.filterDefs = [];
|
|
14
|
-
_filterRegister.set(this, void 0);
|
|
15
14
|
this.filterRegisterChange = new BehaviorSubject(null);
|
|
16
15
|
this.filterDef = {};
|
|
17
16
|
this.inlineFilterDef = {};
|
|
@@ -22,7 +21,7 @@ export class SdGridFilter {
|
|
|
22
21
|
this.inlineExternal = {};
|
|
23
22
|
_subscription.set(this, new Subscription());
|
|
24
23
|
this.onFilter = (item) => {
|
|
25
|
-
|
|
24
|
+
this.filterRegister.set({
|
|
26
25
|
columnFilter: this.columnFilter,
|
|
27
26
|
externalFilter: this.externalFilter,
|
|
28
27
|
filterDef: this.filterDef
|
|
@@ -33,7 +32,7 @@ export class SdGridFilter {
|
|
|
33
32
|
this.popupFilter.open();
|
|
34
33
|
};
|
|
35
34
|
this.onReset = () => {
|
|
36
|
-
|
|
35
|
+
this.filterRegister.remove();
|
|
37
36
|
this.ref.markForCheck();
|
|
38
37
|
};
|
|
39
38
|
this.isMobileOrTablet = !this.deviceService.isDesktop();
|
|
@@ -41,11 +40,10 @@ export class SdGridFilter {
|
|
|
41
40
|
}
|
|
42
41
|
set _filter(filter) {
|
|
43
42
|
this.filter = filter;
|
|
44
|
-
__classPrivateFieldGet(this, _filterOptionChanges).next(this.filter);
|
|
45
43
|
}
|
|
46
|
-
set
|
|
47
|
-
|
|
48
|
-
this.filterRegisterChange.next(
|
|
44
|
+
set _filterRegister(value) {
|
|
45
|
+
this.filterRegister = value;
|
|
46
|
+
this.filterRegisterChange.next(this.filterRegister);
|
|
49
47
|
}
|
|
50
48
|
;
|
|
51
49
|
ngAfterViewInit() {
|
|
@@ -63,19 +61,16 @@ export class SdGridFilter {
|
|
|
63
61
|
// this.filterChange.next(true);
|
|
64
62
|
// this.ref.markForCheck();
|
|
65
63
|
// }));
|
|
66
|
-
__classPrivateFieldGet(this, _subscription).add(this.filterRegisterChange.subscribe(() => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.ref.markForCheck();
|
|
77
|
-
}
|
|
78
|
-
;
|
|
64
|
+
__classPrivateFieldGet(this, _subscription).add(this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(() => {
|
|
65
|
+
__classPrivateFieldGet(this, _subscription).add(this.filterRegister.observer.subscribe(configuration => {
|
|
66
|
+
this.inlineColumn = configuration.inlineColumn;
|
|
67
|
+
this.columnFilter = configuration.columnFilter;
|
|
68
|
+
this.inlineExternal = configuration.inlineExternal;
|
|
69
|
+
this.externalFilter = configuration.externalFilter;
|
|
70
|
+
this.inlineFilterDef = configuration.inlineFilterDef;
|
|
71
|
+
this.filterDef = configuration.filterDef;
|
|
72
|
+
}));
|
|
73
|
+
this.ref.markForCheck();
|
|
79
74
|
}));
|
|
80
75
|
}
|
|
81
76
|
// #loadDefault = () => {
|
|
@@ -103,13 +98,13 @@ export class SdGridFilter {
|
|
|
103
98
|
__classPrivateFieldGet(this, _subscription).unsubscribe();
|
|
104
99
|
}
|
|
105
100
|
}
|
|
106
|
-
|
|
101
|
+
_subscription = new WeakMap();
|
|
107
102
|
SdGridFilter.decorators = [
|
|
108
103
|
{ type: Component, args: [{
|
|
109
104
|
selector: 'sd-grid-filter',
|
|
110
|
-
template: "<ng-container *ngIf=\"!filter?.disabled\">\r\n <ng-container *ngIf=\"filter?.enableCollapse;else noCollapse\">\r\n <sd-group class=\"p-12\" [isExpanded]=\"false\" title=\"T\u00ECm ki\u1EBFm\" expandable>\r\n <div sdGroupBody>\r\n <ng-container *ngTemplateOutlet=\"noCollapse\"></ng-container>\r\n </div>\r\n </sd-group>\r\n </ng-container>\r\n <ng-template #noCollapse>\r\n <div\r\n *ngIf=\"!isMobileOrTablet && ((columns?.length && !filter?.inlineColumn) || externalFilters?.length || filterDefs?.length)\"\r\n class=\"row mx-0
|
|
105
|
+
template: "<ng-container *ngIf=\"!filter?.disabled\">\r\n <ng-container *ngIf=\"filter?.enableCollapse;else noCollapse\">\r\n <sd-group class=\"p-12\" [isExpanded]=\"false\" title=\"T\u00ECm ki\u1EBFm\" expandable>\r\n <div sdGroupBody>\r\n <ng-container *ngTemplateOutlet=\"noCollapse\"></ng-container>\r\n </div>\r\n </sd-group>\r\n </ng-container>\r\n <ng-template #noCollapse>\r\n <div\r\n *ngIf=\"!isMobileOrTablet && ((columns?.length && !filter?.inlineColumn) || externalFilters?.length || filterDefs?.length)\"\r\n class=\"row mx-0\">\r\n <ng-container *ngIf=\"filter?.sorts?.length\">\r\n <ng-container *ngFor=\"let field of filter?.sorts\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn:field\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal:field\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef] && item.sdMaterialFilterDef === field\"\r\n class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!filter?.sorts?.length\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterColumn let-item=\"item\">\r\n <div *ngIf=\"inlineColumn[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'values' && item?.option?.selection !== 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\" [disabled]=\"item.filter?.disabled\"\r\n [multiple]=\"item?.option?.selection === 'MULTIPLE' || item?.item?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"item?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" appearance=\"outline\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item?.option?.selection === 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\" [displayField]=\"item.option?.displayField\"\r\n [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\" [disabled]=\"item.filter?.disabled\"\r\n appearance=\"outline\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"item.type === 'date' || item.type === 'datetime' || item.type === 'time'\"\r\n [label]=\"item.title\" [(model)]=\"columnFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\"\r\n appearance=\"outline\">\r\n </sd-date-time>\r\n </div>\r\n </ng-template>\r\n <ng-template #filterExternal let-item=\"item\">\r\n <div *ngIf=\"inlineExternal[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values' && item.option\">\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" [selectAll]=\"item.option.selectAll\"\r\n appearance=\"outline\" multiple>\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.option?.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" filtered=\"true\" appearance=\"outline\"\r\n multiple>\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.option?.selection\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date' || item.type ==='datetime'\"\r\n [(model)]=\"externalFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterange' && externalFilter[item.field]\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-date-range>\r\n </div>\r\n </ng-template>\r\n <sd-popup-filter [filterRegister]=\"filterRegister\" [columns]=\"columns\"\r\n [externalFilters]=\"externalFilters\" [filterDefs]=\"filterDefs\">\r\n </sd-popup-filter>\r\n </ng-template>\r\n</ng-container>",
|
|
111
106
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
112
|
-
styles: [":host{display:block;padding-left:0;padding-right:0}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:0}"]
|
|
107
|
+
styles: [":host{display:block;padding-bottom:10px;padding-left:0;padding-right:0}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:0}"]
|
|
113
108
|
},] }
|
|
114
109
|
];
|
|
115
110
|
SdGridFilter.ctorParameters = () => [
|
|
@@ -121,6 +116,6 @@ SdGridFilter.propDecorators = {
|
|
|
121
116
|
_filter: [{ type: Input, args: ['filter',] }],
|
|
122
117
|
columns: [{ type: Input }],
|
|
123
118
|
filterDefs: [{ type: Input }],
|
|
124
|
-
|
|
119
|
+
_filterRegister: [{ type: Input, args: ['filterRegister',] }]
|
|
125
120
|
};
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQTRCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTNUQsTUFBTSxPQUFPLFlBQVk7SUE0QnZCLFlBQ1UsR0FBc0IsRUFDdEIsYUFBb0M7UUFEcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBM0I5QywrQkFBdUIsSUFBSSxPQUFPLEVBQThCLEVBQUM7UUFLeEQsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFDckMsZUFBVSxHQUFtQyxFQUFFLENBQUM7UUFDekQsa0NBQThDO1FBSzlDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUUvRSxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLG9CQUFlLEdBQTRCLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUE0QixFQUFFLENBQUM7UUFDM0Msb0JBQWUsR0FBbUMsRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pC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LFdBQVc7UUFDVCw0Q0FBbUIsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQS9GRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsMGxSQUEyQztnQkFFM0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFmOEcsaUJBQWlCO1lBT3ZILHFCQUFxQjs7OzBCQVUzQixTQUFTLFNBQUMsYUFBYTtzQkFHdkIsS0FBSyxTQUFDLFFBQVE7c0JBSWQsS0FBSzt5QkFDTCxLQUFLOzZCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbEZpbHRlck9wdGlvbiwgU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlciwgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3RlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFBvcHVwRmlsdGVyIH0gZnJvbSAnLi4vcG9wdXAtZmlsdGVyL3BvcHVwLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkR3JpZEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZC1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkRmlsdGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKFNkUG9wdXBGaWx0ZXIpIHBvcHVwRmlsdGVyOiBTZFBvcHVwRmlsdGVyO1xyXG4gIGZpbHRlcjogUmVhZG9ubHk8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJPcHRpb24+O1xyXG4gICNmaWx0ZXJPcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJPcHRpb24+KCk7XHJcbiAgQElucHV0KCdmaWx0ZXInKSBzZXQgX2ZpbHRlcihmaWx0ZXI6IFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uKSB7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjtcclxuICAgIHRoaXMuI2ZpbHRlck9wdGlvbkNoYW5nZXMubmV4dCh0aGlzLmZpbHRlcik7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuICAjZmlsdGVyUmVnaXN0ZXI6IFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXI7XHJcbiAgQElucHV0KCkgc2V0IGZpbHRlclJlZ2lzdGVyKHZhbHVlOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICB0aGlzLiNmaWx0ZXJSZWdpc3RlciA9IHZhbHVlO1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3RlckNoYW5nZS5uZXh0KHRoaXMuI2ZpbHRlclJlZ2lzdGVyKTtcclxuICB9O1xyXG4gIGZpbHRlclJlZ2lzdGVyQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyPihudWxsKTtcclxuXHJcbiAgZmlsdGVyRGVmOiBhbnkgPSB7fTtcclxuICBpbmxpbmVGaWx0ZXJEZWY6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgY29sdW1uRmlsdGVyOiBhbnkgPSB7fTtcclxuICBpbmxpbmVDb2x1bW46IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyW10gPSBbXTtcclxuICBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgaW5saW5lRXh0ZXJuYWw6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgaXNNb2JpbGVPclRhYmxldDogYm9vbGVhbjtcclxuXHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSkge1xyXG4gICAgdGhpcy5pc01vYmlsZU9yVGFibGV0ID0gIXRoaXMuZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiNmaWx0ZXJPcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgIC8vICAgaWYgKHRoaXMuZmlsdGVyPy5kaXNhYmxlZCkge1xyXG4gICAgLy8gICAgIHRoaXMuZmlsdGVyQ2hhbmdlLm5leHQodHJ1ZSk7XHJcbiAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzID0gdGhpcy5maWx0ZXI/LmV4dGVybmFsRmlsdGVycyB8fCBbXTtcclxuICAgIC8vICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuZ3JpZEZpbHRlclNlcnZpY2UuZ2V0KHRoaXMuZmlsdGVyPy5rZXkpO1xyXG4gICAgLy8gICB0aGlzLmlubGluZUNvbHVtbiA9IGNvbmZpZ3VyYXRpb24uaW5saW5lQ29sdW1uO1xyXG4gICAgLy8gICB0aGlzLmlubGluZUV4dGVybmFsID0gY29uZmlndXJhdGlvbi5pbmxpbmVFeHRlcm5hbDtcclxuICAgIC8vICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWYgPSBjb25maWd1cmF0aW9uLmlubGluZUZpbHRlckRlZjtcclxuICAgIC8vICAgdGhpcy4jbG9hZERlZmF1bHQoKTtcclxuICAgIC8vICAgdGhpcy5maWx0ZXJDaGFuZ2UubmV4dCh0cnVlKTtcclxuICAgIC8vICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAvLyB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZmlsdGVyUmVnaXN0ZXJDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuI2ZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiNmaWx0ZXJSZWdpc3Rlci5vYnNlcnZlci5zdWJzY3JpYmUoY29uZmlndXJhdGlvbiA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlubGluZUNvbHVtbiA9IGNvbmZpZ3VyYXRpb24uaW5saW5lQ29sdW1uO1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb25maWd1cmF0aW9uLmNvbHVtbkZpbHRlcjtcclxuICAgICAgICAgIHRoaXMuaW5saW5lRXh0ZXJuYWwgPSBjb25maWd1cmF0aW9uLmlubGluZUV4dGVybmFsO1xyXG4gICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IGNvbmZpZ3VyYXRpb24uZXh0ZXJuYWxGaWx0ZXI7XHJcbiAgICAgICAgICB0aGlzLmlubGluZUZpbHRlckRlZiA9IGNvbmZpZ3VyYXRpb24uaW5saW5lRmlsdGVyRGVmO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJEZWYgPSBjb25maWd1cmF0aW9uLmZpbHRlckRlZjtcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH07XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvLyAjbG9hZERlZmF1bHQgPSAoKSA9PiB7XHJcbiAgLy8gICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAvLyAgICAgdGhpcy5pbmxpbmVDb2x1bW5bY29sdW1uLmZpZWxkXSA9IHRoaXMuaW5saW5lQ29sdW1uW2NvbHVtbi5maWVsZF0gPz8gY29sdW1uPy5maWx0ZXI/LmRlZmF1bHRTaG93aW5nO1xyXG4gIC8vICAgICB0aGlzLmNvbHVtbkZpbHRlcltjb2x1bW4uZmllbGRdID0gdGhpcy5jb2x1bW5GaWx0ZXJbY29sdW1uLmZpZWxkXSA/PyBjb2x1bW4/LmZpbHRlcj8uZGVmYXVsdDtcclxuICAvLyAgIH1cclxuICAvLyAgIGZvciAoY29uc3QgZXh0ZXJuYWxGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAvLyAgICAgdGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPSB0aGlzLmlubGluZUV4dGVybmFsW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA/PyBleHRlcm5hbEZpbHRlcj8uZGVmYXVsdFNob3dpbmc7XHJcbiAgLy8gICAgIGlmIChleHRlcm5hbEZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gIC8vICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gIC8vICAgICAgICAgZnJvbTogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LmZyb20gPz8gZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdD8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgLy8gICAgICAgICB0bzogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LnRvID8/IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQ/LnRvID8/IHVuZGVmaW5lZFxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA/PyBleHRlcm5hbEZpbHRlci5kZWZhdWx0O1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmb3IgKGNvbnN0IGZpbHRlckRlZiBvZiB0aGlzLmZpbHRlckRlZnMpIHtcclxuICAvLyAgICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWZbZmlsdGVyRGVmLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID1cclxuICAvLyAgICAgICB0aGlzLmlubGluZUZpbHRlckRlZltmaWx0ZXJEZWYuc2RNYXRlcmlhbEZpbHRlckRlZl0gPz8gZmlsdGVyRGVmPy5kZWZhdWx0U2hvd2luZztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlciA9IChpdGVtPzogU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfCBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyKSA9PiB7XHJcbiAgICB0aGlzLiNmaWx0ZXJSZWdpc3Rlci5zZXQoe1xyXG4gICAgICBjb2x1bW5GaWx0ZXI6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlcixcclxuICAgICAgZmlsdGVyRGVmOiB0aGlzLmZpbHRlckRlZlxyXG4gICAgfSk7XHJcbiAgICAvLyB0aGlzLmZpbHRlckNoYW5nZS5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb3BlbiA9ICgpID0+IHtcclxuICAgIHRoaXMucG9wdXBGaWx0ZXIub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgb25SZXNldCA9ICgpID0+IHtcclxuICAgIHRoaXMuI2ZpbHRlclJlZ2lzdGVyLnJlbW92ZSgpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIC8vIHNldEZpbHRlciA9IChhcmdzOiB7XHJcbiAgLy8gICBjb2x1bW5GaWx0ZXI/OiBhbnksXHJcbiAgLy8gICBleHRlcm5hbEZpbHRlcj86IGFueSxcclxuICAvLyAgIGZpbHRlckRlZj86IGFueVxyXG4gIC8vIH0pID0+IHtcclxuICAvLyAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzO1xyXG4gIC8vICAgaWYgKGNvbHVtbkZpbHRlcikge1xyXG4gIC8vICAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlcjtcclxuICAvLyAgIH1cclxuICAvLyAgIGlmIChleHRlcm5hbEZpbHRlcikge1xyXG4gIC8vICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gZXh0ZXJuYWxGaWx0ZXI7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAoZmlsdGVyRGVmKSB7XHJcbiAgLy8gICAgIHRoaXMuZmlsdGVyRGVmID0gZmlsdGVyRGVmO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgZm9yIChjb25zdCBleEZpbHRlciBvZiB0aGlzLmV4dGVybmFsRmlsdGVycykge1xyXG4gIC8vICAgICBpZiAoZXhGaWx0ZXIudHlwZSA9PT0gJ2RhdGVyYW5nZScpIHtcclxuICAvLyAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4RmlsdGVyLmZpZWxkXSA9IHtcclxuICAvLyAgICAgICAgIGZyb206IHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXhGaWx0ZXIuZmllbGRdPy5mcm9tID8/IHVuZGVmaW5lZCxcclxuICAvLyAgICAgICAgIHRvOiB0aGlzLmV4dGVybmFsRmlsdGVyW2V4RmlsdGVyLmZpZWxkXT8udG8gPz8gdW5kZWZpbmVkXHJcbiAgLy8gICAgICAgfTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQTRCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFXLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTNUQsTUFBTSxPQUFPLFlBQVk7SUEwQnZCLFlBQ1UsR0FBc0IsRUFDdEIsYUFBb0M7UUFEcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBdEJyQyxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUNyQyxlQUFVLEdBQW1DLEVBQUUsQ0FBQztRQU16RCx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsSUFBSSxDQUFDLENBQUM7UUFFL0UsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUE0QixFQUFFLENBQUM7UUFDOUMsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsaUJBQVksR0FBNEIsRUFBRSxDQUFDO1FBQzNDLG9CQUFlLEdBQW1DLEVBQUUsQ0FBQztRQUNyRCxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixtQkFBYyxHQUE0QixF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QU07SUFDTixJQUFJO0lBRUosV0FBVztRQUNULDRDQUFtQixXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7O1lBM0ZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixvbFJBQTJDO2dCQUUzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQWY4RyxpQkFBaUI7WUFPdkgscUJBQXFCOzs7MEJBVTNCLFNBQVMsU0FBQyxhQUFhO3NCQUV2QixLQUFLLFNBQUMsUUFBUTtzQkFHZCxLQUFLO3lCQUNMLEtBQUs7OEJBRUwsS0FBSyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uLCBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyLCBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbENvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWNvbHVtbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkUG9wdXBGaWx0ZXIgfSBmcm9tICcuLi9wb3B1cC1maWx0ZXIvcG9wdXAtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RHcmlkRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1ncmlkLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRGaWx0ZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cEZpbHRlcikgcG9wdXBGaWx0ZXI6IFNkUG9wdXBGaWx0ZXI7XHJcbiAgZmlsdGVyOiBSZWFkb25seTxTZEdyaWRNYXRlcmlhbEZpbHRlck9wdGlvbj47XHJcbiAgQElucHV0KCdmaWx0ZXInKSBzZXQgX2ZpbHRlcihmaWx0ZXI6IFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uKSB7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjtcclxuICB9XHJcbiAgQElucHV0KCkgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXSA9IFtdO1xyXG4gIGZpbHRlclJlZ2lzdGVyOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyO1xyXG4gIEBJbnB1dCgnZmlsdGVyUmVnaXN0ZXInKSBzZXQgX2ZpbHRlclJlZ2lzdGVyKHZhbHVlOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyQ2hhbmdlLm5leHQodGhpcy5maWx0ZXJSZWdpc3Rlcik7XHJcbiAgfTtcclxuICBmaWx0ZXJSZWdpc3RlckNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3Rlcj4obnVsbCk7XHJcblxyXG4gIGZpbHRlckRlZjogYW55ID0ge307XHJcbiAgaW5saW5lRmlsdGVyRGVmOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gIGNvbHVtbkZpbHRlcjogYW55ID0ge307XHJcbiAgaW5saW5lQ29sdW1uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gIGV4dGVybmFsRmlsdGVyczogU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlcltdID0gW107XHJcbiAgZXh0ZXJuYWxGaWx0ZXI6IGFueSA9IHt9O1xyXG4gIGlubGluZUV4dGVybmFsOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQ6IGJvb2xlYW47XHJcblxyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UpIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICF0aGlzLmRldmljZVNlcnZpY2UuaXNEZXNrdG9wKCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy4jZmlsdGVyT3B0aW9uQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZpbHRlcikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAvLyAgIGlmICh0aGlzLmZpbHRlcj8uZGlzYWJsZWQpIHtcclxuICAgIC8vICAgICB0aGlzLmZpbHRlckNoYW5nZS5uZXh0KHRydWUpO1xyXG4gICAgLy8gICAgIHJldHVybjtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB0aGlzLmV4dGVybmFsRmlsdGVycyA9IHRoaXMuZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMgfHwgW107XHJcbiAgICAvLyAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmZpbHRlcj8ua2V5KTtcclxuICAgIC8vICAgdGhpcy5pbmxpbmVDb2x1bW4gPSBjb25maWd1cmF0aW9uLmlubGluZUNvbHVtbjtcclxuICAgIC8vICAgdGhpcy5pbmxpbmVFeHRlcm5hbCA9IGNvbmZpZ3VyYXRpb24uaW5saW5lRXh0ZXJuYWw7XHJcbiAgICAvLyAgIHRoaXMuaW5saW5lRmlsdGVyRGVmID0gY29uZmlndXJhdGlvbi5pbmxpbmVGaWx0ZXJEZWY7XHJcbiAgICAvLyAgIHRoaXMuI2xvYWREZWZhdWx0KCk7XHJcbiAgICAvLyAgIHRoaXMuZmlsdGVyQ2hhbmdlLm5leHQodHJ1ZSk7XHJcbiAgICAvLyAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgLy8gfSkpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZpbHRlclJlZ2lzdGVyQ2hhbmdlLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyUmVnaXN0ZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZmlsdGVyUmVnaXN0ZXIub2JzZXJ2ZXIuc3Vic2NyaWJlKGNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbi5pbmxpbmVDb2x1bW47XHJcbiAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb25maWd1cmF0aW9uLmNvbHVtbkZpbHRlcjtcclxuICAgICAgICB0aGlzLmlubGluZUV4dGVybmFsID0gY29uZmlndXJhdGlvbi5pbmxpbmVFeHRlcm5hbDtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gY29uZmlndXJhdGlvbi5leHRlcm5hbEZpbHRlcjtcclxuICAgICAgICB0aGlzLmlubGluZUZpbHRlckRlZiA9IGNvbmZpZ3VyYXRpb24uaW5saW5lRmlsdGVyRGVmO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyRGVmID0gY29uZmlndXJhdGlvbi5maWx0ZXJEZWY7XHJcbiAgICAgIH0pKTtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvLyAjbG9hZERlZmF1bHQgPSAoKSA9PiB7XHJcbiAgLy8gICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAvLyAgICAgdGhpcy5pbmxpbmVDb2x1bW5bY29sdW1uLmZpZWxkXSA9IHRoaXMuaW5saW5lQ29sdW1uW2NvbHVtbi5maWVsZF0gPz8gY29sdW1uPy5maWx0ZXI/LmRlZmF1bHRTaG93aW5nO1xyXG4gIC8vICAgICB0aGlzLmNvbHVtbkZpbHRlcltjb2x1bW4uZmllbGRdID0gdGhpcy5jb2x1bW5GaWx0ZXJbY29sdW1uLmZpZWxkXSA/PyBjb2x1bW4/LmZpbHRlcj8uZGVmYXVsdDtcclxuICAvLyAgIH1cclxuICAvLyAgIGZvciAoY29uc3QgZXh0ZXJuYWxGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAvLyAgICAgdGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPSB0aGlzLmlubGluZUV4dGVybmFsW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA/PyBleHRlcm5hbEZpbHRlcj8uZGVmYXVsdFNob3dpbmc7XHJcbiAgLy8gICAgIGlmIChleHRlcm5hbEZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gIC8vICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gIC8vICAgICAgICAgZnJvbTogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LmZyb20gPz8gZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdD8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgLy8gICAgICAgICB0bzogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LnRvID8/IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQ/LnRvID8/IHVuZGVmaW5lZFxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA/PyBleHRlcm5hbEZpbHRlci5kZWZhdWx0O1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmb3IgKGNvbnN0IGZpbHRlckRlZiBvZiB0aGlzLmZpbHRlckRlZnMpIHtcclxuICAvLyAgICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWZbZmlsdGVyRGVmLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID1cclxuICAvLyAgICAgICB0aGlzLmlubGluZUZpbHRlckRlZltmaWx0ZXJEZWYuc2RNYXRlcmlhbEZpbHRlckRlZl0gPz8gZmlsdGVyRGVmPy5kZWZhdWx0U2hvd2luZztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlciA9IChpdGVtPzogU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfCBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnNldCh7XHJcbiAgICAgIGNvbHVtbkZpbHRlcjogdGhpcy5jb2x1bW5GaWx0ZXIsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyOiB0aGlzLmV4dGVybmFsRmlsdGVyLFxyXG4gICAgICBmaWx0ZXJEZWY6IHRoaXMuZmlsdGVyRGVmXHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuZmlsdGVyQ2hhbmdlLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKCkgPT4ge1xyXG4gICAgdGhpcy5wb3B1cEZpbHRlci5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBvblJlc2V0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci5yZW1vdmUoKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICAvLyBzZXRGaWx0ZXIgPSAoYXJnczoge1xyXG4gIC8vICAgY29sdW1uRmlsdGVyPzogYW55LFxyXG4gIC8vICAgZXh0ZXJuYWxGaWx0ZXI/OiBhbnksXHJcbiAgLy8gICBmaWx0ZXJEZWY/OiBhbnlcclxuICAvLyB9KSA9PiB7XHJcbiAgLy8gICBjb25zdCB7IGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gYXJncztcclxuICAvLyAgIGlmIChjb2x1bW5GaWx0ZXIpIHtcclxuICAvLyAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXI7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAoZXh0ZXJuYWxGaWx0ZXIpIHtcclxuICAvLyAgICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKGZpbHRlckRlZikge1xyXG4gIC8vICAgICB0aGlzLmZpbHRlckRlZiA9IGZpbHRlckRlZjtcclxuICAvLyAgIH1cclxuICAvLyAgIGZvciAoY29uc3QgZXhGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAvLyAgICAgaWYgKGV4RmlsdGVyLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgLy8gICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleEZpbHRlci5maWVsZF0gPSB7XHJcbiAgLy8gICAgICAgICBmcm9tOiB0aGlzLmV4dGVybmFsRmlsdGVyW2V4RmlsdGVyLmZpZWxkXT8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgLy8gICAgICAgICB0bzogdGhpcy5leHRlcm5hbEZpbHRlcltleEZpbHRlci5maWVsZF0/LnRvID8/IHVuZGVmaW5lZFxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIC8vIH1cclxufVxyXG4iXX0=
|