igniteui-angular 13.0.4 → 13.0.8
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/esm2020/lib/combo/combo.common.mjs +2 -2
- package/esm2020/lib/core/utils.mjs +13 -2
- package/esm2020/lib/data-operations/data-clone-strategy.mjs +7 -0
- package/esm2020/lib/data-operations/data-util.mjs +7 -6
- package/esm2020/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +33 -1
- package/esm2020/lib/grids/api.service.mjs +2 -2
- package/esm2020/lib/grids/common/crud.service.mjs +4 -3
- package/esm2020/lib/grids/common/grid.interface.mjs +1 -1
- package/esm2020/lib/grids/common/pipes.mjs +2 -2
- package/esm2020/lib/grids/grid-base.directive.mjs +27 -2
- package/esm2020/lib/grids/grid-public-row.mjs +16 -5
- package/esm2020/lib/grids/row.directive.mjs +2 -3
- package/esm2020/lib/grids/summaries/grid-summary.service.mjs +3 -2
- package/esm2020/lib/grids/tree-grid/tree-grid-selection.service.mjs +28 -27
- package/esm2020/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +8 -4
- package/esm2020/lib/grids/tree-grid/tree-grid.pipes.mjs +3 -3
- package/esm2020/lib/services/excel/excel-files.mjs +3 -3
- package/esm2020/lib/services/excel/worksheet-data.mjs +7 -3
- package/esm2020/lib/services/overlay/overlay.mjs +2 -1
- package/esm2020/lib/services/transaction/base-transaction.mjs +17 -4
- package/esm2020/lib/services/transaction/igx-hierarchical-transaction.mjs +3 -4
- package/esm2020/lib/services/transaction/igx-transaction.mjs +3 -3
- package/esm2020/lib/services/transaction/transaction-factory.service.mjs +1 -2
- package/esm2020/lib/services/transaction/transaction.mjs +1 -1
- package/esm2020/public_api.mjs +2 -1
- package/fesm2015/igniteui-angular.mjs +164 -56
- package/fesm2015/igniteui-angular.mjs.map +1 -1
- package/fesm2020/igniteui-angular.mjs +164 -56
- package/fesm2020/igniteui-angular.mjs.map +1 -1
- package/lib/core/utils.d.ts +7 -0
- package/lib/data-operations/data-clone-strategy.d.ts +6 -0
- package/lib/data-operations/data-util.d.ts +3 -2
- package/lib/directives/scroll-inertia/scroll_inertia.directive.d.ts +6 -0
- package/lib/grids/common/grid.interface.d.ts +3 -1
- package/lib/grids/grid-base.directive.d.ts +13 -1
- package/lib/grids/grid-public-row.d.ts +8 -0
- package/lib/grids/tree-grid/tree-grid-selection.service.d.ts +2 -1
- package/lib/services/excel/worksheet-data.d.ts +2 -0
- package/lib/services/transaction/base-transaction.d.ts +7 -0
- package/lib/services/transaction/transaction.d.ts +5 -0
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
|
@@ -124,6 +124,7 @@ export class IgxGridSummaryService {
|
|
|
124
124
|
this.grid.summaryPipeTrigger++;
|
|
125
125
|
if (this.grid.rootSummariesEnabled) {
|
|
126
126
|
this.retriggerRootPipe++;
|
|
127
|
+
Promise.resolve().then(() => this.grid.notifyChanges(true));
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
updateSummaryCache(groupingArgs) {
|
|
@@ -168,7 +169,7 @@ export class IgxGridSummaryService {
|
|
|
168
169
|
const summaryIDs = [];
|
|
169
170
|
let data = this.grid.data;
|
|
170
171
|
if (this.grid.transactions.enabled) {
|
|
171
|
-
data = DataUtil.mergeTransactions(cloneArray(this.grid.data), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey);
|
|
172
|
+
data = DataUtil.mergeTransactions(cloneArray(this.grid.data), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey, this.grid.dataCloneStrategy);
|
|
172
173
|
}
|
|
173
174
|
const rowData = this.grid.primaryKey ? data.find(rec => rec[this.grid.primaryKey] === rowID) : rowID;
|
|
174
175
|
let id = '{ ';
|
|
@@ -230,4 +231,4 @@ IgxGridSummaryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
|
|
|
230
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridSummaryService, decorators: [{
|
|
231
232
|
type: Injectable
|
|
232
233
|
}] });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1zdW1tYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvc3VtbWFyaWVzL2dyaWQtc3VtbWFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHakUsY0FBYztBQUVkLE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFHVyxrQkFBYSxHQUFHLG9CQUFvQixDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUN2Qix3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG9CQUFlLEdBQW9DLElBQUksR0FBRyxFQUEyQyxDQUFDO0tBdU9uSDtJQXJPVSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQUs7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQzVCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM3QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1QjtZQUNELE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDakQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3RILElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQyxPQUFPO2FBQ1Y7WUFFRCxNQUFNLGVBQWUsR0FBSSxJQUFJLENBQUMsSUFBcUIsQ0FBQyxtQkFBbUI7Z0JBQ3RFLElBQUksQ0FBQyxJQUFxQixDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkcsSUFBSSxVQUFVLElBQUksZUFBZSxFQUFHO2dCQUNoQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2FBQzFCO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsVUFBVztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDakYsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3Qix5REFBeUQ7Z0JBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDdEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNoQztTQUNKO2FBQU07WUFDSixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRyxJQUFJLENBQUMsSUFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdGLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFTSw2QkFBNkIsQ0FBQyxVQUFVO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN2QixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztTQUNqQztRQUNELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRixNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN0RixJQUFJLHVCQUF1QixFQUFFO2dCQUN6QixJQUFJLGdCQUFnQixHQUFHLHVCQUF1QixFQUFFO29CQUM1QyxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQztpQkFDOUM7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ2pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDZixZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7WUFDckQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNyQyxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzVGLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsWUFBWTtRQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMvRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRixPQUFPO1NBQ1Y7UUFDRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQVcsb0JBQW9CO1FBQzNCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RixPQUFPLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxVQUFVO1FBQ3JDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0I7Z0JBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RILElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNqRixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbkQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkM7WUFDRCxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzdELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzVCO1NBQ0o7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUssRUFBRSxtQkFBbUI7UUFDM0MsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDN0IsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDdkIsQ0FBQztTQUNMO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztRQUNkLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQixFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztZQUN0RCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqQyxFQUFFLElBQUksSUFBSSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVPLDBCQUEwQixDQUFDLEtBQUssRUFBRSxVQUFXO1FBQ2pELElBQUksR0FBRyxHQUFJLElBQUksQ0FBQyxJQUFxQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLE9BQU87U0FDVjtRQUNELEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDdEMsT0FBTyxHQUFHLEVBQUU7WUFDUixLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELGlDQUFpQztJQUNqQyx3REFBd0Q7SUFDeEQsSUFBSTtJQUVJLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxZQUFZO1FBQ3BELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNsRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUN6QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkUsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssT0FBTyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1QjtTQUNKO2FBQU07WUFDSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxRQUFRLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTzthQUNWO1lBQ0QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFO29CQUN4QyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7d0JBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNuQztnQkFDSixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLGVBQWUsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBWSxrQkFBa0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssdUJBQXVCLENBQUM7SUFDckYsQ0FBQzs7a0hBOU9RLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFN1bW1hcnlSZXN1bHQgfSBmcm9tICcuL2dyaWQtc3VtbWFyeSc7XG5pbXBvcnQgeyBEYXRhVXRpbCB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9kYXRhLXV0aWwnO1xuaW1wb3J0IHsgY2xvbmVBcnJheSwgcmVzb2x2ZU5lc3RlZFBhdGggfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEdyaWRUeXBlLCBGbGF0R3JpZFR5cGUsIFRyZWVHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5cbi8qKiBAaGlkZGVuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSWd4R3JpZFN1bW1hcnlTZXJ2aWNlIHtcbiAgICBwdWJsaWMgZ3JpZDogR3JpZFR5cGU7XG4gICAgcHVibGljIHJvb3RTdW1tYXJ5SUQgPSAnaWd4R3JpZFJvb3RTdW1tYXJ5JztcbiAgICBwdWJsaWMgc3VtbWFyeUhlaWdodCA9IDA7XG4gICAgcHVibGljIG1heFN1bW1hcmllc0xlbmdodCA9IDA7XG4gICAgcHVibGljIGdyb3VwaW5nRXhwcmVzc2lvbnMgPSBbXTtcbiAgICBwdWJsaWMgcmV0cmlnZ2VyUm9vdFBpcGUgPSAwO1xuICAgIHB1YmxpYyBkZWxldGVPcGVyYXRpb24gPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBzdW1tYXJ5Q2FjaGVNYXA6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIGFueVtdPj4gPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgSWd4U3VtbWFyeVJlc3VsdFtdPj4oKTtcblxuICAgIHB1YmxpYyByZWNhbGN1bGF0ZVN1bW1hcmllcygpIHtcbiAgICAgICAgdGhpcy5yZXNldFN1bW1hcnlIZWlnaHQoKTtcbiAgICAgICAgdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXModHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU3VtbWFyeUNhY2hlKGFyZ3M/KSB7XG4gICAgICAgIGlmICghdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYXJncykge1xuICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQgJiYgdGhpcy5ncmlkLnJvb3RTdW1tYXJpZXNFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXRyaWdnZXJSb290UGlwZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLmRhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0lEID0gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyBhcmdzLmRhdGFbdGhpcy5ncmlkLnByaW1hcnlLZXldIDogYXJncy5kYXRhO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdW1tYXJpZXMocm93SUQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLnJvd0lEICE9PSB1bmRlZmluZWQgJiYgYXJncy5yb3dJRCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGNvbHVtbk5hbWUgPSBhcmdzLmNlbGxJRCA/IHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZpbmQoY29sID0+IGNvbC5pbmRleCA9PT0gYXJncy5jZWxsSUQuY29sdW1uSUQpLmZpZWxkIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGNvbHVtbk5hbWUgJiYgdGhpcy5ncmlkLnJvd0VkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0dyb3VwZWRDb2x1bW4gPSAodGhpcy5ncmlkIGFzIEZsYXRHcmlkVHlwZSkuZ3JvdXBpbmdFeHByZXNzaW9ucyAmJlxuICAgICAgICAgICAgKHRoaXMuZ3JpZCBhcyBGbGF0R3JpZFR5cGUpLmdyb3VwaW5nRXhwcmVzc2lvbnMubWFwKGV4cHIgPT4gZXhwci5maWVsZE5hbWUpLmluZGV4T2YoY29sdW1uTmFtZSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKGNvbHVtbk5hbWUgJiYgaXNHcm91cGVkQ29sdW1uICkge1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVN1bW1hcmllcyhhcmdzLnJvd0lELCBjb2x1bW5OYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTdW1tYXJpZXMocm93SUQsIGNvbHVtbk5hbWU/KSB7XG4gICAgICAgIHRoaXMuZGVsZXRlU3VtbWFyeUNhY2hlKHRoaXMucm9vdFN1bW1hcnlJRCwgY29sdW1uTmFtZSk7XG4gICAgICAgIGlmICh0aGlzLnN1bW1hcnlDYWNoZU1hcC5zaXplID09PSAxICYmIHRoaXMuc3VtbWFyeUNhY2hlTWFwLmhhcyh0aGlzLnJvb3RTdW1tYXJ5SUQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNUcmVlR3JpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCAmJiB0aGlzLmRlbGV0ZU9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlT3BlcmF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogdGhpcy5yZW1vdmVDaGlsZFJvd1N1bW1hcmllcyhyb3dJRCwgY29sdW1uTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUFsbFRyZWVHcmlkU3VtbWFyaWVzKHJvd0lELCBjb2x1bW5OYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSGllcmFyY2hpY2FsR3JpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCAmJiB0aGlzLmRlbGV0ZU9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlT3BlcmF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgY29uc3Qgc3VtbWFyeUlkcyA9IHRoaXMuZ2V0U3VtbWFyeUlEKHJvd0lELCAodGhpcy5ncmlkIGFzIEZsYXRHcmlkVHlwZSkuZ3JvdXBpbmdFeHByZXNzaW9ucyk7XG4gICAgICAgICAgIHN1bW1hcnlJZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVN1bW1hcnlDYWNoZShpZCwgY29sdW1uTmFtZSk7XG4gICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVN1bW1hcmllc0NhY2hlUGVyQ29sdW1uKGNvbHVtbk5hbWUpIHtcbiAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZm9yRWFjaCgoY2FjaGUpID0+IHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5nZXQoY29sdW1uTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5kZWxldGUoY29sdW1uTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5ncmlkLnJvb3RTdW1tYXJpZXNFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJldHJpZ2dlclJvb3RQaXBlKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY01heFN1bW1hcnlIZWlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnN1bW1hcnlIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1bW1hcnlIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdyaWQuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VtbWFyeUhlaWdodCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1heFN1bW1hcnlMZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmdyaWQuY29sdW1uTGlzdC5maWx0ZXIoKGNvbCkgPT4gY29sLmhhc1N1bW1hcnkgJiYgIWNvbC5oaWRkZW4pLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2V0Q3VycmVudFN1bW1hcnlDb2x1bW4gPSBjb2x1bW4uc3VtbWFyaWVzLm9wZXJhdGUoW10sIFtdLCBjb2x1bW4uZmllbGQpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChnZXRDdXJyZW50U3VtbWFyeUNvbHVtbikge1xuICAgICAgICAgICAgICAgIGlmIChtYXhTdW1tYXJ5TGVuZ3RoIDwgZ2V0Q3VycmVudFN1bW1hcnlDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4U3VtbWFyeUxlbmd0aCA9IGdldEN1cnJlbnRTdW1tYXJ5Q29sdW1uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWF4U3VtbWFyaWVzTGVuZ2h0ID0gbWF4U3VtbWFyeUxlbmd0aDtcbiAgICAgICAgdGhpcy5zdW1tYXJ5SGVpZ2h0ID0gIG1heFN1bW1hcnlMZW5ndGggKiB0aGlzLmdyaWQuZGVmYXVsdFN1bW1hcnlIZWlnaHQ7XG4gICAgICAgIHJldHVybiB0aGlzLnN1bW1hcnlIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGN1bGF0ZVN1bW1hcmllcyhyb3dJRCwgZGF0YSkge1xuICAgICAgICBsZXQgcm93U3VtbWFyaWVzID0gdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZ2V0KHJvd0lEKTtcbiAgICAgICAgaWYgKCFyb3dTdW1tYXJpZXMpIHtcbiAgICAgICAgICAgIHJvd1N1bW1hcmllcyA9IG5ldyBNYXA8c3RyaW5nLCBJZ3hTdW1tYXJ5UmVzdWx0W10+KCk7XG4gICAgICAgICAgICB0aGlzLnN1bW1hcnlDYWNoZU1hcC5zZXQocm93SUQsIHJvd1N1bW1hcmllcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmhhc1N1bW1hcml6ZWRDb2x1bW5zIHx8ICFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93U3VtbWFyaWVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZpbHRlcihjb2wgPT4gY29sLmhhc1N1bW1hcnkpLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKCFyb3dTdW1tYXJpZXMuZ2V0KGNvbHVtbi5maWVsZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5UmVzdWx0ID0gY29sdW1uLnN1bW1hcmllcy5vcGVyYXRlKGRhdGEubWFwKHIgPT4gcmVzb2x2ZU5lc3RlZFBhdGgociwgY29sdW1uLmZpZWxkKSksXG4gICAgICAgICAgICAgICAgICAgIGRhdGEsIGNvbHVtbi5maWVsZCwgdGhpcy5ncmlkLmxvY2FsZSwgY29sdW1uLnBpcGVBcmdzKTtcbiAgICAgICAgICAgICAgICByb3dTdW1tYXJpZXMuc2V0KGNvbHVtbi5maWVsZCwgc3VtbWFyeVJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm93U3VtbWFyaWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldFN1bW1hcnlIZWlnaHQoKSB7XG4gICAgICAgIHRoaXMuc3VtbWFyeUhlaWdodCA9IDA7XG4gICAgICAgIHRoaXMuZ3JpZC5zdW1tYXJ5UGlwZVRyaWdnZXIrKztcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb290U3VtbWFyaWVzRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5yZXRyaWdnZXJSb290UGlwZSsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVN1bW1hcnlDYWNoZShncm91cGluZ0FyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMuc3VtbWFyeUNhY2hlTWFwLnNpemUgPT09IDAgfHwgIXRoaXMuaGFzU3VtbWFyaXplZENvbHVtbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cGluZ0V4cHJlc3Npb25zID0gZ3JvdXBpbmdBcmdzLmV4cHJlc3Npb25zLm1hcChyZWNvcmQgPT4gcmVjb3JkLmZpZWxkTmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdyb3VwaW5nQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBpbmdFeHByZXNzaW9ucyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jbGVhclN1bW1hcnlDYWNoZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcGFyZUdyb3VwaW5nRXhwcmVzc2lvbnModGhpcy5ncm91cGluZ0V4cHJlc3Npb25zLCBncm91cGluZ0FyZ3MpO1xuICAgICAgICB0aGlzLmdyb3VwaW5nRXhwcmVzc2lvbnMgPSBncm91cGluZ0FyZ3MuZXhwcmVzc2lvbnMubWFwKHJlY29yZCA9PiByZWNvcmQuZmllbGROYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1N1bW1hcml6ZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzdW1tYXJpemVkQ29sdW1ucyA9IHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZpbHRlcihjb2wgPT4gY29sLmhhc1N1bW1hcnkgJiYgIWNvbC5oaWRkZW4pO1xuICAgICAgICByZXR1cm4gc3VtbWFyaXplZENvbHVtbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlbGV0ZVN1bW1hcnlDYWNoZShpZCwgY29sdW1uTmFtZSkge1xuICAgICAgICBpZiAodGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZ2V0KGlkKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyaW5nQXBwbGllZCA9IGNvbHVtbk5hbWUgJiYgdGhpcy5ncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLm1hcCgoZXhwcikgPT4gZXhwci5maWVsZE5hbWUpLmluZGV4T2YoY29sdW1uTmFtZSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKGNvbHVtbk5hbWUgJiYgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZ2V0KGlkKS5nZXQoY29sdW1uTmFtZSkgJiYgIWZpbHRlcmluZ0FwcGxpZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1bW1hcnlDYWNoZU1hcC5nZXQoaWQpLmRlbGV0ZShjb2x1bW5OYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpZCA9PT0gdGhpcy5yb290U3VtbWFyeUlEICYmIHRoaXMuZ3JpZC5yb290U3VtbWFyaWVzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmV0cmlnZ2VyUm9vdFBpcGUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3VtbWFyeUlEKHJvd0lELCBncm91cGluZ0V4cHJlc3Npb25zKSB7XG4gICAgICAgIGlmIChncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1bW1hcnlJRHMgPSBbXTtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdyaWQuZGF0YTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCkge1xuICAgICAgICAgICAgZGF0YSA9IERhdGFVdGlsLm1lcmdlVHJhbnNhY3Rpb25zKFxuICAgICAgICAgICAgICAgIGNsb25lQXJyYXkodGhpcy5ncmlkLmRhdGEpLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZENoYW5nZXModHJ1ZSksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnByaW1hcnlLZXlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID8gZGF0YS5maW5kKHJlYyA9PiByZWNbdGhpcy5ncmlkLnByaW1hcnlLZXldID09PSByb3dJRCkgOiByb3dJRDtcbiAgICAgICAgbGV0IGlkID0gJ3sgJztcbiAgICAgICAgZ3JvdXBpbmdFeHByZXNzaW9ucy5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgaWQgKz0gYCcke2V4cHIuZmllbGROYW1lfSc6ICcke3Jvd0RhdGFbZXhwci5maWVsZE5hbWVdfSdgO1xuICAgICAgICAgICAgICAgIHN1bW1hcnlJRHMucHVzaChpZC5jb25jYXQoJyB9JykpO1xuICAgICAgICAgICAgICAgIGlkICs9ICcsICc7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3VtbWFyeUlEcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUFsbFRyZWVHcmlkU3VtbWFyaWVzKHJvd0lELCBjb2x1bW5OYW1lPykge1xuICAgICAgICBsZXQgcm93ID0gKHRoaXMuZ3JpZCBhcyBUcmVlR3JpZFR5cGUpLnJlY29yZHMuZ2V0KHJvd0lEKTtcbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByb3cgPSByb3cuY2hpbGRyZW4gPyByb3cgOiByb3cucGFyZW50O1xuICAgICAgICB3aGlsZSAocm93KSB7XG4gICAgICAgICAgICByb3dJRCA9IHJvdy5rZXk7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVN1bW1hcnlDYWNoZShyb3dJRCwgY29sdW1uTmFtZSk7XG4gICAgICAgICAgICByb3cgPSByb3cucGFyZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmVtb3ZlIG9ubHkgZGVsZXRlZCByb3dzXG4gICAgLy8gcHJpdmF0ZSByZW1vdmVDaGlsZFJvd1N1bW1hcmllcyhyb3dJRCwgY29sdW1uTmFtZT8pIHtcbiAgICAvLyB9XG5cbiAgICBwcml2YXRlIGNvbXBhcmVHcm91cGluZ0V4cHJlc3Npb25zKGN1cnJlbnQsIGdyb3VwaW5nQXJncykge1xuICAgICAgICBjb25zdCBuZXdFeHByZXNzaW9ucyA9IGdyb3VwaW5nQXJncy5leHByZXNzaW9ucy5tYXAocmVjb3JkID0+IHJlY29yZC5maWVsZE5hbWUpO1xuICAgICAgICBjb25zdCByZW1vdmVkQ29scyA9IGdyb3VwaW5nQXJncy51bmdyb3VwZWRDb2x1bW5zO1xuICAgICAgICBpZiAoY3VycmVudC5sZW5ndGggPD0gbmV3RXhwcmVzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdFeHByID0gbmV3RXhwcmVzc2lvbnMuc2xpY2UoMCwgY3VycmVudC5sZW5ndGgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudC50b1N0cmluZygpICE9PSBuZXdFeHByKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclN1bW1hcnlDYWNoZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VyckV4cHIgPSBjdXJyZW50LnNsaWNlKDAsIG5ld0V4cHJlc3Npb25zLmxlbmd0aCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmIChjdXJyRXhwciAhPT0gbmV3RXhwcmVzc2lvbnMudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTdW1tYXJ5Q2FjaGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW1vdmVkQ29scy5tYXAoY29sID0+IGNvbC5maWVsZCkuZm9yRWFjaChjb2xOYW1lID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1bW1hcnlDYWNoZU1hcC5mb3JFYWNoKChjYWNoZSwgaWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICBpZiAoaWQuaW5kZXhPZihjb2xOYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzVHJlZUdyaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpZ3gtdHJlZS1ncmlkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0hpZXJhcmNoaWNhbEdyaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpZ3gtaGllcmFyY2hpY2FsLWdyaWQnO1xuICAgIH1cblxufVxuIl19
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1zdW1tYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvc3VtbWFyaWVzL2dyaWQtc3VtbWFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHakUsY0FBYztBQUVkLE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFHVyxrQkFBYSxHQUFHLG9CQUFvQixDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUN2Qix3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG9CQUFlLEdBQW9DLElBQUksR0FBRyxFQUEyQyxDQUFDO0tBeU9uSDtJQXZPVSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQUs7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQzVCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFF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QUFFLENBQUM7YUFDNUI7U0FDSjthQUFNO1lBQ0gsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLElBQUksUUFBUSxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLE9BQU87YUFDVjtZQUNELFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRTtvQkFDeEMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDbkM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELElBQVksVUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxlQUFlLENBQUM7SUFDN0UsQ0FBQztJQUVELElBQVksa0JBQWtCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLHVCQUF1QixDQUFDO0lBQ3JGLENBQUM7O2tIQWhQUSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hTdW1tYXJ5UmVzdWx0IH0gZnJvbSAnLi9ncmlkLXN1bW1hcnknO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IGNsb25lQXJyYXksIHJlc29sdmVOZXN0ZWRQYXRoIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkVHlwZSwgRmxhdEdyaWRUeXBlLCBUcmVlR3JpZFR5cGUgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuXG4vKiogQGhpZGRlbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIElneEdyaWRTdW1tYXJ5U2VydmljZSB7XG4gICAgcHVibGljIGdyaWQ6IEdyaWRUeXBlO1xuICAgIHB1YmxpYyByb290U3VtbWFyeUlEID0gJ2lneEdyaWRSb290U3VtbWFyeSc7XG4gICAgcHVibGljIHN1bW1hcnlIZWlnaHQgPSAwO1xuICAgIHB1YmxpYyBtYXhTdW1tYXJpZXNMZW5naHQgPSAwO1xuICAgIHB1YmxpYyBncm91cGluZ0V4cHJlc3Npb25zID0gW107XG4gICAgcHVibGljIHJldHJpZ2dlclJvb3RQaXBlID0gMDtcbiAgICBwdWJsaWMgZGVsZXRlT3BlcmF0aW9uID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgc3VtbWFyeUNhY2hlTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBhbnlbXT4+ID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIElneFN1bW1hcnlSZXN1bHRbXT4+KCk7XG5cbiAgICBwdWJsaWMgcmVjYWxjdWxhdGVTdW1tYXJpZXMoKSB7XG4gICAgICAgIHRoaXMucmVzZXRTdW1tYXJ5SGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuZ3JpZC5ub3RpZnlDaGFuZ2VzKHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclN1bW1hcnlDYWNoZShhcmdzPykge1xuICAgICAgICBpZiAoIXRoaXMuc3VtbWFyeUNhY2hlTWFwLnNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgICAgIHRoaXMuc3VtbWFyeUNhY2hlTWFwLmNsZWFyKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkICYmIHRoaXMuZ3JpZC5yb290U3VtbWFyaWVzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmV0cmlnZ2VyUm9vdFBpcGUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJncy5kYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByb3dJRCA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID8gYXJncy5kYXRhW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSA6IGFyZ3MuZGF0YTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU3VtbWFyaWVzKHJvd0lEKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJncy5yb3dJRCAhPT0gdW5kZWZpbmVkICYmIGFyZ3Mucm93SUQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gYXJncy5jZWxsSUQgPyB0aGlzLmdyaWQuY29sdW1uTGlzdC5maW5kKGNvbCA9PiBjb2wuaW5kZXggPT09IGFyZ3MuY2VsbElELmNvbHVtbklEKS5maWVsZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lICYmIHRoaXMuZ3JpZC5yb3dFZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXNHcm91cGVkQ29sdW1uID0gKHRoaXMuZ3JpZCBhcyBGbGF0R3JpZFR5cGUpLmdyb3VwaW5nRXhwcmVzc2lvbnMgJiZcbiAgICAgICAgICAgICh0aGlzLmdyaWQgYXMgRmxhdEdyaWRUeXBlKS5ncm91cGluZ0V4cHJlc3Npb25zLm1hcChleHByID0+IGV4cHIuZmllbGROYW1lKS5pbmRleE9mKGNvbHVtbk5hbWUpICE9PSAtMTtcbiAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lICYmIGlzR3JvdXBlZENvbHVtbiApIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdW1tYXJpZXMoYXJncy5yb3dJRCwgY29sdW1uTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlU3VtbWFyaWVzKHJvd0lELCBjb2x1bW5OYW1lPykge1xuICAgICAgICB0aGlzLmRlbGV0ZVN1bW1hcnlDYWNoZSh0aGlzLnJvb3RTdW1tYXJ5SUQsIGNvbHVtbk5hbWUpO1xuICAgICAgICBpZiAodGhpcy5zdW1tYXJ5Q2FjaGVNYXAuc2l6ZSA9PT0gMSAmJiB0aGlzLnN1bW1hcnlDYWNoZU1hcC5oYXModGhpcy5yb290U3VtbWFyeUlEKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzVHJlZUdyaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQgJiYgdGhpcy5kZWxldGVPcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZU9wZXJhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IHRoaXMucmVtb3ZlQ2hpbGRSb3dTdW1tYXJpZXMocm93SUQsIGNvbHVtbk5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VtbWFyeUNhY2hlTWFwLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVBbGxUcmVlR3JpZFN1bW1hcmllcyhyb3dJRCwgY29sdW1uTmFtZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0hpZXJhcmNoaWNhbEdyaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQgJiYgdGhpcy5kZWxldGVPcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZU9wZXJhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VtbWFyeUNhY2hlTWFwLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgIGNvbnN0IHN1bW1hcnlJZHMgPSB0aGlzLmdldFN1bW1hcnlJRChyb3dJRCwgKHRoaXMuZ3JpZCBhcyBGbGF0R3JpZFR5cGUpLmdyb3VwaW5nRXhwcmVzc2lvbnMpO1xuICAgICAgICAgICBzdW1tYXJ5SWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgdGhpcy5kZWxldGVTdW1tYXJ5Q2FjaGUoaWQsIGNvbHVtbk5hbWUpO1xuICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTdW1tYXJpZXNDYWNoZVBlckNvbHVtbihjb2x1bW5OYW1lKSB7XG4gICAgICAgIHRoaXMuc3VtbWFyeUNhY2hlTWFwLmZvckVhY2goKGNhY2hlKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuZ2V0KGNvbHVtbk5hbWUpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuZGVsZXRlKGNvbHVtbk5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb290U3VtbWFyaWVzRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5yZXRyaWdnZXJSb290UGlwZSsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGNNYXhTdW1tYXJ5SGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5zdW1tYXJ5SGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdW1tYXJ5SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ncmlkLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1bW1hcnlIZWlnaHQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtYXhTdW1tYXJ5TGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5ncmlkLmNvbHVtbkxpc3QuZmlsdGVyKChjb2wpID0+IGNvbC5oYXNTdW1tYXJ5ICYmICFjb2wuaGlkZGVuKS5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdldEN1cnJlbnRTdW1tYXJ5Q29sdW1uID0gY29sdW1uLnN1bW1hcmllcy5vcGVyYXRlKFtdLCBbXSwgY29sdW1uLmZpZWxkKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoZ2V0Q3VycmVudFN1bW1hcnlDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4U3VtbWFyeUxlbmd0aCA8IGdldEN1cnJlbnRTdW1tYXJ5Q29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heFN1bW1hcnlMZW5ndGggPSBnZXRDdXJyZW50U3VtbWFyeUNvbHVtbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1heFN1bW1hcmllc0xlbmdodCA9IG1heFN1bW1hcnlMZW5ndGg7XG4gICAgICAgIHRoaXMuc3VtbWFyeUhlaWdodCA9ICBtYXhTdW1tYXJ5TGVuZ3RoICogdGhpcy5ncmlkLmRlZmF1bHRTdW1tYXJ5SGVpZ2h0O1xuICAgICAgICByZXR1cm4gdGhpcy5zdW1tYXJ5SGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxjdWxhdGVTdW1tYXJpZXMocm93SUQsIGRhdGEpIHtcbiAgICAgICAgbGV0IHJvd1N1bW1hcmllcyA9IHRoaXMuc3VtbWFyeUNhY2hlTWFwLmdldChyb3dJRCk7XG4gICAgICAgIGlmICghcm93U3VtbWFyaWVzKSB7XG4gICAgICAgICAgICByb3dTdW1tYXJpZXMgPSBuZXcgTWFwPHN0cmluZywgSWd4U3VtbWFyeVJlc3VsdFtdPigpO1xuICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuc2V0KHJvd0lELCByb3dTdW1tYXJpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5oYXNTdW1tYXJpemVkQ29sdW1ucyB8fCAhZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd1N1bW1hcmllcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWQuY29sdW1uTGlzdC5maWx0ZXIoY29sID0+IGNvbC5oYXNTdW1tYXJ5KS5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmICghcm93U3VtbWFyaWVzLmdldChjb2x1bW4uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VtbWFyeVJlc3VsdCA9IGNvbHVtbi5zdW1tYXJpZXMub3BlcmF0ZShkYXRhLm1hcChyID0+IHJlc29sdmVOZXN0ZWRQYXRoKHIsIGNvbHVtbi5maWVsZCkpLFxuICAgICAgICAgICAgICAgICAgICBkYXRhLCBjb2x1bW4uZmllbGQsIHRoaXMuZ3JpZC5sb2NhbGUsIGNvbHVtbi5waXBlQXJncyk7XG4gICAgICAgICAgICAgICAgcm93U3VtbWFyaWVzLnNldChjb2x1bW4uZmllbGQsIHN1bW1hcnlSZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvd1N1bW1hcmllcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRTdW1tYXJ5SGVpZ2h0KCkge1xuICAgICAgICB0aGlzLnN1bW1hcnlIZWlnaHQgPSAwO1xuICAgICAgICB0aGlzLmdyaWQuc3VtbWFyeVBpcGVUcmlnZ2VyKys7XG4gICAgICAgIGlmICh0aGlzLmdyaWQucm9vdFN1bW1hcmllc0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0cmlnZ2VyUm9vdFBpcGUrKztcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXModHJ1ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVN1bW1hcnlDYWNoZShncm91cGluZ0FyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMuc3VtbWFyeUNhY2hlTWFwLnNpemUgPT09IDAgfHwgIXRoaXMuaGFzU3VtbWFyaXplZENvbHVtbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cGluZ0V4cHJlc3Npb25zID0gZ3JvdXBpbmdBcmdzLmV4cHJlc3Npb25zLm1hcChyZWNvcmQgPT4gcmVjb3JkLmZpZWxkTmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdyb3VwaW5nQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBpbmdFeHByZXNzaW9ucyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jbGVhclN1bW1hcnlDYWNoZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcGFyZUdyb3VwaW5nRXhwcmVzc2lvbnModGhpcy5ncm91cGluZ0V4cHJlc3Npb25zLCBncm91cGluZ0FyZ3MpO1xuICAgICAgICB0aGlzLmdyb3VwaW5nRXhwcmVzc2lvbnMgPSBncm91cGluZ0FyZ3MuZXhwcmVzc2lvbnMubWFwKHJlY29yZCA9PiByZWNvcmQuZmllbGROYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1N1bW1hcml6ZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzdW1tYXJpemVkQ29sdW1ucyA9IHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZpbHRlcihjb2wgPT4gY29sLmhhc1N1bW1hcnkgJiYgIWNvbC5oaWRkZW4pO1xuICAgICAgICByZXR1cm4gc3VtbWFyaXplZENvbHVtbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlbGV0ZVN1bW1hcnlDYWNoZShpZCwgY29sdW1uTmFtZSkge1xuICAgICAgICBpZiAodGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZ2V0KGlkKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyaW5nQXBwbGllZCA9IGNvbHVtbk5hbWUgJiYgdGhpcy5ncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLm1hcCgoZXhwcikgPT4gZXhwci5maWVsZE5hbWUpLmluZGV4T2YoY29sdW1uTmFtZSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKGNvbHVtbk5hbWUgJiYgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZ2V0KGlkKS5nZXQoY29sdW1uTmFtZSkgJiYgIWZpbHRlcmluZ0FwcGxpZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1bW1hcnlDYWNoZU1hcC5nZXQoaWQpLmRlbGV0ZShjb2x1bW5OYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpZCA9PT0gdGhpcy5yb290U3VtbWFyeUlEICYmIHRoaXMuZ3JpZC5yb290U3VtbWFyaWVzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmV0cmlnZ2VyUm9vdFBpcGUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3VtbWFyeUlEKHJvd0lELCBncm91cGluZ0V4cHJlc3Npb25zKSB7XG4gICAgICAgIGlmIChncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1bW1hcnlJRHMgPSBbXTtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdyaWQuZGF0YTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCkge1xuICAgICAgICAgICAgZGF0YSA9IERhdGFVdGlsLm1lcmdlVHJhbnNhY3Rpb25zKFxuICAgICAgICAgICAgICAgIGNsb25lQXJyYXkodGhpcy5ncmlkLmRhdGEpLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZENoYW5nZXModHJ1ZSksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnByaW1hcnlLZXksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmdyaWQucHJpbWFyeUtleSA/IGRhdGEuZmluZChyZWMgPT4gcmVjW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSA9PT0gcm93SUQpIDogcm93SUQ7XG4gICAgICAgIGxldCBpZCA9ICd7ICc7XG4gICAgICAgIGdyb3VwaW5nRXhwcmVzc2lvbnMuZm9yRWFjaChleHByID0+IHtcbiAgICAgICAgICAgIGlkICs9IGAnJHtleHByLmZpZWxkTmFtZX0nOiAnJHtyb3dEYXRhW2V4cHIuZmllbGROYW1lXX0nYDtcbiAgICAgICAgICAgICAgICBzdW1tYXJ5SURzLnB1c2goaWQuY29uY2F0KCcgfScpKTtcbiAgICAgICAgICAgICAgICBpZCArPSAnLCAnO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN1bW1hcnlJRHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVBbGxUcmVlR3JpZFN1bW1hcmllcyhyb3dJRCwgY29sdW1uTmFtZT8pIHtcbiAgICAgICAgbGV0IHJvdyA9ICh0aGlzLmdyaWQgYXMgVHJlZUdyaWRUeXBlKS5yZWNvcmRzLmdldChyb3dJRCk7XG4gICAgICAgIGlmICghcm93KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcm93ID0gcm93LmNoaWxkcmVuID8gcm93IDogcm93LnBhcmVudDtcbiAgICAgICAgd2hpbGUgKHJvdykge1xuICAgICAgICAgICAgcm93SUQgPSByb3cua2V5O1xuICAgICAgICAgICAgdGhpcy5kZWxldGVTdW1tYXJ5Q2FjaGUocm93SUQsIGNvbHVtbk5hbWUpO1xuICAgICAgICAgICAgcm93ID0gcm93LnBhcmVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IHJlbW92ZSBvbmx5IGRlbGV0ZWQgcm93c1xuICAgIC8vIHByaXZhdGUgcmVtb3ZlQ2hpbGRSb3dTdW1tYXJpZXMocm93SUQsIGNvbHVtbk5hbWU/KSB7XG4gICAgLy8gfVxuXG4gICAgcHJpdmF0ZSBjb21wYXJlR3JvdXBpbmdFeHByZXNzaW9ucyhjdXJyZW50LCBncm91cGluZ0FyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV3RXhwcmVzc2lvbnMgPSBncm91cGluZ0FyZ3MuZXhwcmVzc2lvbnMubWFwKHJlY29yZCA9PiByZWNvcmQuZmllbGROYW1lKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZENvbHMgPSBncm91cGluZ0FyZ3MudW5ncm91cGVkQ29sdW1ucztcbiAgICAgICAgaWYgKGN1cnJlbnQubGVuZ3RoIDw9IG5ld0V4cHJlc3Npb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmV3RXhwciA9IG5ld0V4cHJlc3Npb25zLnNsaWNlKDAsIGN1cnJlbnQubGVuZ3RoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQudG9TdHJpbmcoKSAhPT0gbmV3RXhwcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTdW1tYXJ5Q2FjaGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJFeHByID0gY3VycmVudC5zbGljZSgwLCBuZXdFeHByZXNzaW9ucy5sZW5ndGgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoY3VyckV4cHIgIT09IG5ld0V4cHJlc3Npb25zLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU3VtbWFyeUNhY2hlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVtb3ZlZENvbHMubWFwKGNvbCA9PiBjb2wuZmllbGQpLmZvckVhY2goY29sTmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5Q2FjaGVNYXAuZm9yRWFjaCgoY2FjaGUsIGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgaWYgKGlkLmluZGV4T2YoY29sTmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtbWFyeUNhY2hlTWFwLmRlbGV0ZShpZCk7XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc1RyZWVHcmlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaWd4LXRyZWUtZ3JpZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNIaWVyYXJjaGljYWxHcmlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaWd4LWhpZXJhcmNoaWNhbC1ncmlkJztcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -33,7 +33,7 @@ export class IgxTreeGridSelectionService extends IgxGridSelectionService {
|
|
|
33
33
|
if (!parents.size) {
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
|
-
visibleRowIDs = this.getRowIDs(this.allData);
|
|
36
|
+
visibleRowIDs = new Set(this.getRowIDs(this.allData));
|
|
37
37
|
this.rowsToBeSelected = new Set(this.rowSelection);
|
|
38
38
|
this.rowsToBeIndeterminate = new Set(this.indeterminateRows);
|
|
39
39
|
if (crudRowID) {
|
|
@@ -120,8 +120,10 @@ export class IgxTreeGridSelectionService extends IgxGridSelectionService {
|
|
|
120
120
|
* retrieve the rows which should be added/removed to/from the old selection
|
|
121
121
|
*/
|
|
122
122
|
handleAddedAndRemovedArgs(args) {
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
const newSelectionSet = new Set(args.newSelection);
|
|
124
|
+
const oldSelectionSet = new Set(args.oldSelection);
|
|
125
|
+
args.removed = args.oldSelection.filter(x => !newSelectionSet.has(x));
|
|
126
|
+
args.added = args.newSelection.filter(x => !oldSelectionSet.has(x));
|
|
125
127
|
}
|
|
126
128
|
/**
|
|
127
129
|
* adds to rowsToBeProcessed set all visible children of the rows which was initially within the rowsToBeProcessed set
|
|
@@ -130,14 +132,15 @@ export class IgxTreeGridSelectionService extends IgxGridSelectionService {
|
|
|
130
132
|
* @param visibleRowIDs list of all visible rowIds
|
|
131
133
|
* @returns a new set with all direct parents of the rows within rowsToBeProcessed set
|
|
132
134
|
*/
|
|
133
|
-
collectRowsChildrenAndDirectParents(rowsToBeProcessed, visibleRowIDs) {
|
|
135
|
+
collectRowsChildrenAndDirectParents(rowsToBeProcessed, visibleRowIDs, adding) {
|
|
134
136
|
const processedRowsParents = new Set();
|
|
135
137
|
Array.from(rowsToBeProcessed).forEach((rowID) => {
|
|
138
|
+
this.selectDeselectRow(rowID, adding);
|
|
136
139
|
const rowTreeRecord = this.grid.gridAPI.get_rec_by_id(rowID);
|
|
137
140
|
const rowAndAllChildren = this.get_all_children(rowTreeRecord);
|
|
138
141
|
rowAndAllChildren.forEach(row => {
|
|
139
|
-
if (visibleRowIDs.
|
|
140
|
-
|
|
142
|
+
if (visibleRowIDs.has(row.key)) {
|
|
143
|
+
this.selectDeselectRow(row.key, adding);
|
|
141
144
|
}
|
|
142
145
|
});
|
|
143
146
|
if (rowTreeRecord && rowTreeRecord.parent) {
|
|
@@ -153,27 +156,19 @@ export class IgxTreeGridSelectionService extends IgxGridSelectionService {
|
|
|
153
156
|
calculateRowsNewSelectionState(args) {
|
|
154
157
|
this.rowsToBeSelected = new Set(args.oldSelection ? args.oldSelection : this.getSelectedRows());
|
|
155
158
|
this.rowsToBeIndeterminate = new Set(this.getIndeterminateRows());
|
|
156
|
-
const visibleRowIDs = this.getRowIDs(this.allData);
|
|
159
|
+
const visibleRowIDs = new Set(this.getRowIDs(this.allData));
|
|
157
160
|
const removed = new Set(args.removed);
|
|
158
161
|
const added = new Set(args.added);
|
|
159
162
|
if (removed && removed.size) {
|
|
160
163
|
let removedRowsParents = new Set();
|
|
161
|
-
removedRowsParents = this.collectRowsChildrenAndDirectParents(removed, visibleRowIDs);
|
|
162
|
-
removed.forEach(removedRow => {
|
|
163
|
-
this.rowsToBeSelected.delete(removedRow);
|
|
164
|
-
this.rowsToBeIndeterminate.delete(removedRow);
|
|
165
|
-
});
|
|
164
|
+
removedRowsParents = this.collectRowsChildrenAndDirectParents(removed, visibleRowIDs, false);
|
|
166
165
|
Array.from(removedRowsParents).forEach((parent) => {
|
|
167
166
|
this.handleParentSelectionState(parent, visibleRowIDs);
|
|
168
167
|
});
|
|
169
168
|
}
|
|
170
169
|
if (added && added.size) {
|
|
171
170
|
let addedRowsParents = new Set();
|
|
172
|
-
addedRowsParents = this.collectRowsChildrenAndDirectParents(added, visibleRowIDs);
|
|
173
|
-
added.forEach(addedRow => {
|
|
174
|
-
this.rowsToBeSelected.add(addedRow);
|
|
175
|
-
this.rowsToBeIndeterminate.delete(addedRow);
|
|
176
|
-
});
|
|
171
|
+
addedRowsParents = this.collectRowsChildrenAndDirectParents(added, visibleRowIDs, true);
|
|
177
172
|
Array.from(addedRowsParents).forEach((parent) => {
|
|
178
173
|
this.handleParentSelectionState(parent, visibleRowIDs);
|
|
179
174
|
});
|
|
@@ -197,31 +192,27 @@ export class IgxTreeGridSelectionService extends IgxGridSelectionService {
|
|
|
197
192
|
handleRowSelectionState(treeRow, visibleRowIDs) {
|
|
198
193
|
let visibleChildren = [];
|
|
199
194
|
if (treeRow && treeRow.children) {
|
|
200
|
-
visibleChildren = treeRow.children.filter(child => visibleRowIDs.
|
|
195
|
+
visibleChildren = treeRow.children.filter(child => visibleRowIDs.has(child.key));
|
|
201
196
|
}
|
|
202
197
|
if (visibleChildren.length) {
|
|
203
198
|
if (visibleChildren.every(row => this.rowsToBeSelected.has(row.key))) {
|
|
204
|
-
this.
|
|
205
|
-
this.rowsToBeIndeterminate.delete(treeRow.key);
|
|
199
|
+
this.selectDeselectRow(treeRow.key, true);
|
|
206
200
|
}
|
|
207
201
|
else if (visibleChildren.some(row => this.rowsToBeSelected.has(row.key) || this.rowsToBeIndeterminate.has(row.key))) {
|
|
208
202
|
this.rowsToBeIndeterminate.add(treeRow.key);
|
|
209
203
|
this.rowsToBeSelected.delete(treeRow.key);
|
|
210
204
|
}
|
|
211
205
|
else {
|
|
212
|
-
this.
|
|
213
|
-
this.rowsToBeSelected.delete(treeRow.key);
|
|
206
|
+
this.selectDeselectRow(treeRow.key, false);
|
|
214
207
|
}
|
|
215
208
|
}
|
|
216
209
|
else {
|
|
217
210
|
// if the children of the row has been deleted and the row was selected do not change its state
|
|
218
211
|
if (this.isRowSelected(treeRow.key)) {
|
|
219
|
-
this.
|
|
220
|
-
this.rowsToBeIndeterminate.delete(treeRow.key);
|
|
212
|
+
this.selectDeselectRow(treeRow.key, true);
|
|
221
213
|
}
|
|
222
214
|
else {
|
|
223
|
-
this.
|
|
224
|
-
this.rowsToBeIndeterminate.delete(treeRow.key);
|
|
215
|
+
this.selectDeselectRow(treeRow.key, false);
|
|
225
216
|
}
|
|
226
217
|
}
|
|
227
218
|
}
|
|
@@ -235,10 +226,20 @@ export class IgxTreeGridSelectionService extends IgxGridSelectionService {
|
|
|
235
226
|
}
|
|
236
227
|
return children;
|
|
237
228
|
}
|
|
229
|
+
selectDeselectRow(rowID, select) {
|
|
230
|
+
if (select) {
|
|
231
|
+
this.rowsToBeSelected.add(rowID);
|
|
232
|
+
this.rowsToBeIndeterminate.delete(rowID);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
this.rowsToBeSelected.delete(rowID);
|
|
236
|
+
this.rowsToBeIndeterminate.delete(rowID);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
238
239
|
}
|
|
239
240
|
IgxTreeGridSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxTreeGridSelectionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
240
241
|
IgxTreeGridSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxTreeGridSelectionService });
|
|
241
242
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxTreeGridSelectionService, decorators: [{
|
|
242
243
|
type: Injectable
|
|
243
244
|
}] });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLXNlbGVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3RyZWUtZ3JpZC90cmVlLWdyaWQtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFLekUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtJQUlwRSxrREFBa0Q7SUFDM0MscUJBQXFCLENBQUMsTUFBYSxFQUFFLGtCQUFtQjtRQUMzRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssaUJBQWlCLENBQUMsZUFBZSxFQUFFO1lBQzNFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUM5RCxPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELG9EQUFvRDtJQUM3Qyx1QkFBdUIsQ0FBQyxNQUFhO1FBQ3hDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssaUJBQWlCLENBQUMsZUFBZSxFQUFFO1lBQzlELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQU07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RDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbEQ7U0FDSjtJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUF1QjtRQUM1QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNyRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QjtTQUNKO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFFcEIsQ0FBQzs7d0hBN1FRLDJCQUEyQjs0SEFBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkU2VsZWN0aW9uTW9kZSB9IGZyb20gJy4uL2NvbW1vbi9lbnVtcyc7XG5pbXBvcnQgeyBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJVHJlZUdyaWRSZWNvcmQgfSBmcm9tICcuL3RyZWUtZ3JpZC5pbnRlcmZhY2VzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIGV4dGVuZHMgSWd4R3JpZFNlbGVjdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcm93c1RvQmVTZWxlY3RlZDogU2V0PGFueT47XG4gICAgcHJpdmF0ZSByb3dzVG9CZUluZGV0ZXJtaW5hdGU6IFNldDxhbnk+O1xuXG4gICAgLyoqIFNlbGVjdCBzcGVjaWZpZWQgcm93cy4gTm8gZXZlbnQgaXMgZW1pdHRlZC4gKi9cbiAgICBwdWJsaWMgc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEczogYW55W10sIGNsZWFyUHJldlNlbGVjdGlvbj8pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZCAmJiB0aGlzLmdyaWQucm93U2VsZWN0aW9uID09PSBHcmlkU2VsZWN0aW9uTW9kZS5tdWx0aXBsZUNhc2NhZGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzY2FkZVNlbGVjdFJvd3NXaXRoTm9FdmVudChyb3dJRHMsIGNsZWFyUHJldlNlbGVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEcywgY2xlYXJQcmV2U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogRGVzZWxlY3Qgc3BlY2lmaWVkIHJvd3MuIE5vIGV2ZW50IGlzIGVtaXR0ZWQuICovXG4gICAgcHVibGljIGRlc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb3dTZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLm11bHRpcGxlQ2FzY2FkZSkge1xuICAgICAgICAgICAgdGhpcy5jYXNjYWRlRGVzZWxlY3RSb3dzV2l0aE5vRXZlbnQocm93SURzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kZXNlbGVjdFJvd3NXaXRoTm9FdmVudChyb3dJRHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0Um93U2VsZWN0aW9uRXZlbnQobmV3U2VsZWN0aW9uLCBhZGRlZCwgcmVtb3ZlZCwgZXZlbnQ/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQucm93U2VsZWN0aW9uID09PSBHcmlkU2VsZWN0aW9uTW9kZS5tdWx0aXBsZUNhc2NhZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENhc2NhZGVSb3dTZWxlY3Rpb25FdmVudChuZXdTZWxlY3Rpb24sIGFkZGVkLCByZW1vdmVkLCBldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5lbWl0Um93U2VsZWN0aW9uRXZlbnQobmV3U2VsZWN0aW9uLCBhZGRlZCwgcmVtb3ZlZCwgZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVDYXNjYWRlU2VsZWN0aW9uT25GaWx0ZXJBbmRDUlVEKFxuICAgICAgICBwYXJlbnRzOiBTZXQ8YW55PixcbiAgICAgICAgY3J1ZFJvd0lEPzogYW55LFxuICAgICAgICB2aXNpYmxlUm93SURzOiBhbnlbXSA9IG51bGwpIHtcbiAgICAgICAgaWYgKHZpc2libGVSb3dJRHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSB0cmVlIGdyaWQgaGFzIGZsYXQgc3RydWN0dXJlXG4gICAgICAgICAgICAvLyBkbyBub3QgZXhwbGljaXRseSBoYW5kbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiB0aGUgcm93c1xuICAgICAgICAgICAgaWYgKCFwYXJlbnRzLnNpemUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2aXNpYmxlUm93SURzID0gdGhpcy5nZXRSb3dJRHModGhpcy5hbGxEYXRhKTtcbiAgICAgICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5yb3dTZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5yb3dzVG9CZUluZGV0ZXJtaW5hdGUgPSBuZXcgU2V0KHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MpO1xuICAgICAgICAgICAgaWYgKGNydWRSb3dJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm93U2VsZWN0aW9uLmRlbGV0ZShjcnVkUm93SUQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyZW50cy5zaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZXQodGhpcy5yb3dzVG9CZVNlbGVjdGVkKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgIC8vIFRPRE86IGVtaXQgc2VsZWN0aW9uQ2hhbmdlRCBldmVudCwgY2FsY3VsYXRlIGl0cyBhcmdzIHRocm91Z2ggdGhlIGhhbmRsZUFkZGVkQW5kUmVtb3ZlZEFyZ3MgbWV0aG9kXG4gICAgICAgICAgICB0aGlzLmNsZWFySGVhZGVyQ0JTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UubmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1BhcmVudHMgPSBuZXcgU2V0PGFueT4oKTtcbiAgICAgICAgcGFyZW50cy5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJvd1NlbGVjdGlvblN0YXRlKHBhcmVudCwgdmlzaWJsZVJvd0lEcyk7XG4gICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBuZXdQYXJlbnRzLmFkZChwYXJlbnQucGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FzY2FkZVNlbGVjdGlvbk9uRmlsdGVyQW5kQ1JVRChuZXdQYXJlbnRzLCBudWxsLCB2aXNpYmxlUm93SURzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhc2NhZGVTZWxlY3RSb3dzV2l0aE5vRXZlbnQocm93SURzOiBhbnlbXSwgY2xlYXJQcmV2U2VsZWN0aW9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoY2xlYXJQcmV2U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVSb3dzLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoeyBhZGRlZDogcm93SURzLCByZW1vdmVkOiBbXSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBbLi4ub2xkU2VsZWN0aW9uLCAuLi5yb3dJRHNdO1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHsgb2xkU2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24gfTtcblxuICAgICAgICAgICAgLy8gcmV0cmlldmUgb25seSB0aGUgcm93cyB3aXRob3V0IHRoZWlyIHBhcmVudHMvY2hpbGRyZW4gd2hpY2ggaGFzIHRvIGJlIGFkZGVkIHRvIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQWRkZWRBbmRSZW1vdmVkQXJncyhhcmdzKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gPSBuZXcgU2V0KHRoaXMucm93c1RvQmVTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgdGhpcy5jbGVhckhlYWRlckNCU3RhdGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FzY2FkZURlc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJncyA9IHsgYWRkZWQ6IFtdLCByZW1vdmVkOiByb3dJRHMgfTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoYXJncyk7XG5cbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gPSBuZXcgU2V0KHRoaXMucm93c1RvQmVTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgdGhpcy5jbGVhckhlYWRlckNCU3RhdGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0aW9uU2VydmljZSgpOiBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDYXNjYWRlUm93U2VsZWN0aW9uRXZlbnQobmV3U2VsZWN0aW9uLCBhZGRlZCwgcmVtb3ZlZCwgZXZlbnQ/KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGVkUm93cygpO1xuICAgICAgICBpZiAodGhpcy5hcmVFcXVhbENvbGxlY3Rpb25zKGN1cnJTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICAgICAgICBvbGRTZWxlY3Rpb246IGN1cnJTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbixcbiAgICAgICAgICAgIGFkZGVkLCByZW1vdmVkLCBldmVudCwgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUm93c05ld1NlbGVjdGlvblN0YXRlKGFyZ3MpO1xuXG4gICAgICAgIGFyZ3MubmV3U2VsZWN0aW9uID0gQXJyYXkuZnJvbSh0aGlzLnJvd3NUb0JlU2VsZWN0ZWQpO1xuXG4gICAgICAgIC8vIHJldHJpZXZlIHJvd3MvcGFyZW50cy9jaGlsZHJlbiB3aGljaCBoYXMgYmVlbiBhZGRlZC9yZW1vdmVkIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAgICB0aGlzLmhhbmRsZUFkZGVkQW5kUmVtb3ZlZEFyZ3MoYXJncyk7XG5cbiAgICAgICAgdGhpcy5ncmlkLnJvd1NlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG5cbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhcmdzLm5ld1NlbGVjdGlvbiBoYXNuJ3QgYmVlbiBtb2RpZmllZFxuICAgICAgICBpZiAodGhpcy5hcmVFcXVhbENvbGxlY3Rpb25zKEFycmF5LmZyb20odGhpcy5yb3dzVG9CZVNlbGVjdGVkKSwgYXJncy5uZXdTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZXQodGhpcy5yb3dzVG9CZVNlbGVjdGVkKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJIZWFkZXJDQlN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZS5uZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzZWxlY3QgdGhlIHJvd3Mgd2l0aGluIHRoZSBtb2RpZmllZCBhcmdzLm5ld1NlbGVjdGlvbiB3aXRoIG5vIGV2ZW50XG4gICAgICAgICAgICB0aGlzLmNhc2NhZGVTZWxlY3RSb3dzV2l0aE5vRXZlbnQoYXJncy5uZXdTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiByZXRyaWV2ZSB0aGUgcm93cyB3aGljaCBzaG91bGQgYmUgYWRkZWQvcmVtb3ZlZCB0by9mcm9tIHRoZSBvbGQgc2VsZWN0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBoYW5kbGVBZGRlZEFuZFJlbW92ZWRBcmdzKGFyZ3M6IGFueSkge1xuICAgICAgICBhcmdzLnJlbW92ZWQgPSBhcmdzLm9sZFNlbGVjdGlvbi5maWx0ZXIoeCA9PiBhcmdzLm5ld1NlbGVjdGlvbi5pbmRleE9mKHgpIDwgMCk7XG4gICAgICAgIGFyZ3MuYWRkZWQgPSBhcmdzLm5ld1NlbGVjdGlvbi5maWx0ZXIoeCA9PiBhcmdzLm9sZFNlbGVjdGlvbi5pbmRleE9mKHgpIDwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkcyB0byByb3dzVG9CZVByb2Nlc3NlZCBzZXQgYWxsIHZpc2libGUgY2hpbGRyZW4gb2YgdGhlIHJvd3Mgd2hpY2ggd2FzIGluaXRpYWxseSB3aXRoaW4gdGhlIHJvd3NUb0JlUHJvY2Vzc2VkIHNldFxuICAgICAqXG4gICAgICogQHBhcmFtIHJvd3NUb0JlUHJvY2Vzc2VkIHNldCBvZiB0aGUgcm93cyAod2l0aG91dCB0aGVpciBwYXJlbnRzL2NoaWxkcmVuKSB0byBiZSBzZWxlY3RlZC9kZXNlbGVjdGVkXG4gICAgICogQHBhcmFtIHZpc2libGVSb3dJRHMgbGlzdCBvZiBhbGwgdmlzaWJsZSByb3dJZHNcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBhbGwgZGlyZWN0IHBhcmVudHMgb2YgdGhlIHJvd3Mgd2l0aGluIHJvd3NUb0JlUHJvY2Vzc2VkIHNldFxuICAgICAqL1xuICAgIHByaXZhdGUgY29sbGVjdFJvd3NDaGlsZHJlbkFuZERpcmVjdFBhcmVudHMocm93c1RvQmVQcm9jZXNzZWQ6IFNldDxhbnk+LCB2aXNpYmxlUm93SURzOiBhbnlbXSk6IFNldDxhbnk+IHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkUm93c1BhcmVudHMgPSBuZXcgU2V0PGFueT4oKTtcbiAgICAgICAgQXJyYXkuZnJvbShyb3dzVG9CZVByb2Nlc3NlZCkuZm9yRWFjaCgocm93SUQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd1RyZWVSZWNvcmQgPSB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRfcmVjX2J5X2lkKHJvd0lEKTtcbiAgICAgICAgICAgIGNvbnN0IHJvd0FuZEFsbENoaWxkcmVuID0gdGhpcy5nZXRfYWxsX2NoaWxkcmVuKHJvd1RyZWVSZWNvcmQpO1xuICAgICAgICAgICAgcm93QW5kQWxsQ2hpbGRyZW4uZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlUm93SURzLmluZGV4T2Yocm93LmtleSkgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICByb3dzVG9CZVByb2Nlc3NlZC5hZGQocm93LmtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocm93VHJlZVJlY29yZCAmJiByb3dUcmVlUmVjb3JkLnBhcmVudCkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZFJvd3NQYXJlbnRzLmFkZChyb3dUcmVlUmVjb3JkLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkUm93c1BhcmVudHM7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBwb3B1bGF0ZXMgdGhlIHJvd3NUb0JlU2VsZWN0ZWQgYW5kIHJvd3NUb0JlSW5kZXRlcm1pbmF0ZSBzZXRzXG4gICAgICogd2l0aCB0aGUgcm93cyB3aGljaCB3aWxsIGJlIGV2ZW50dWFsbHkgaW4gc2VsZWN0ZWQvaW5kZXRlcm1pbmF0ZSBzdGF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY2FsY3VsYXRlUm93c05ld1NlbGVjdGlvblN0YXRlKGFyZ3M6IGFueSkge1xuICAgICAgICB0aGlzLnJvd3NUb0JlU2VsZWN0ZWQgPSBuZXcgU2V0PGFueT4oYXJncy5vbGRTZWxlY3Rpb24gPyBhcmdzLm9sZFNlbGVjdGlvbiA6IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzKCkpO1xuICAgICAgICB0aGlzLnJvd3NUb0JlSW5kZXRlcm1pbmF0ZSA9IG5ldyBTZXQ8YW55Pih0aGlzLmdldEluZGV0ZXJtaW5hdGVSb3dzKCkpO1xuXG4gICAgICAgIGNvbnN0IHZpc2libGVSb3dJRHMgPSB0aGlzLmdldFJvd0lEcyh0aGlzLmFsbERhdGEpO1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSBuZXcgU2V0KGFyZ3MucmVtb3ZlZCk7XG4gICAgICAgIGNvbnN0IGFkZGVkID0gbmV3IFNldChhcmdzLmFkZGVkKTtcblxuICAgICAgICBpZiAocmVtb3ZlZCAmJiByZW1vdmVkLnNpemUpIHtcbiAgICAgICAgICAgIGxldCByZW1vdmVkUm93c1BhcmVudHMgPSBuZXcgU2V0PGFueT4oKTtcblxuICAgICAgICAgICAgcmVtb3ZlZFJvd3NQYXJlbnRzID0gdGhpcy5jb2xsZWN0Um93c0NoaWxkcmVuQW5kRGlyZWN0UGFyZW50cyhyZW1vdmVkLCB2aXNpYmxlUm93SURzKTtcblxuICAgICAgICAgICAgcmVtb3ZlZC5mb3JFYWNoKHJlbW92ZWRSb3cgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZC5kZWxldGUocmVtb3ZlZFJvdyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzVG9CZUluZGV0ZXJtaW5hdGUuZGVsZXRlKHJlbW92ZWRSb3cpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIEFycmF5LmZyb20ocmVtb3ZlZFJvd3NQYXJlbnRzKS5mb3JFYWNoKChwYXJlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHBhcmVudCwgdmlzaWJsZVJvd0lEcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZGRlZCAmJiBhZGRlZC5zaXplKSB7XG4gICAgICAgICAgICBsZXQgYWRkZWRSb3dzUGFyZW50cyA9IG5ldyBTZXQ8YW55PigpO1xuXG4gICAgICAgICAgICBhZGRlZFJvd3NQYXJlbnRzID0gdGhpcy5jb2xsZWN0Um93c0NoaWxkcmVuQW5kRGlyZWN0UGFyZW50cyhhZGRlZCwgdmlzaWJsZVJvd0lEcyk7XG5cbiAgICAgICAgICAgIGFkZGVkLmZvckVhY2goYWRkZWRSb3cgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZC5hZGQoYWRkZWRSb3cpO1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlLmRlbGV0ZShhZGRlZFJvdyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgQXJyYXkuZnJvbShhZGRlZFJvd3NQYXJlbnRzKS5mb3JFYWNoKChwYXJlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHBhcmVudCwgdmlzaWJsZVJvd0lEcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlY3Vyc2l2ZWx5IGhhbmRsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IHBhcmVudHNcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHRyZWVSb3c6IElUcmVlR3JpZFJlY29yZCwgdmlzaWJsZVJvd0lEczogYW55W10pIHtcbiAgICAgICAgaWYgKCF0cmVlUm93KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVSb3dTZWxlY3Rpb25TdGF0ZSh0cmVlUm93LCB2aXNpYmxlUm93SURzKTtcbiAgICAgICAgaWYgKHRyZWVSb3cucGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHRyZWVSb3cucGFyZW50LCB2aXNpYmxlUm93SURzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGEgZ2l2ZW4gcm93IGJhc2VkIHRoZSBzZWxlY3Rpb24gc3RhdGVzIG9mIGl0cyBkaXJlY3QgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZVJvd1NlbGVjdGlvblN0YXRlKHRyZWVSb3c6IElUcmVlR3JpZFJlY29yZCwgdmlzaWJsZVJvd0lEczogYW55W10pIHtcbiAgICAgICAgbGV0IHZpc2libGVDaGlsZHJlbiA9IFtdO1xuICAgICAgICBpZiAodHJlZVJvdyAmJiB0cmVlUm93LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB2aXNpYmxlQ2hpbGRyZW4gPSB0cmVlUm93LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB2aXNpYmxlUm93SURzLmluZGV4T2YoY2hpbGQua2V5KSA+PSAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmlzaWJsZUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHZpc2libGVDaGlsZHJlbi5ldmVyeShyb3cgPT4gdGhpcy5yb3dzVG9CZVNlbGVjdGVkLmhhcyhyb3cua2V5KSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NUb0JlU2VsZWN0ZWQuYWRkKHRyZWVSb3cua2V5KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NUb0JlSW5kZXRlcm1pbmF0ZS5kZWxldGUodHJlZVJvdy5rZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2aXNpYmxlQ2hpbGRyZW4uc29tZShyb3cgPT4gdGhpcy5yb3dzVG9CZVNlbGVjdGVkLmhhcyhyb3cua2V5KSB8fCB0aGlzLnJvd3NUb0JlSW5kZXRlcm1pbmF0ZS5oYXMocm93LmtleSkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzVG9CZUluZGV0ZXJtaW5hdGUuYWRkKHRyZWVSb3cua2V5KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NUb0JlU2VsZWN0ZWQuZGVsZXRlKHRyZWVSb3cua2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzVG9CZUluZGV0ZXJtaW5hdGUuZGVsZXRlKHRyZWVSb3cua2V5KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NUb0JlU2VsZWN0ZWQuZGVsZXRlKHRyZWVSb3cua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBjaGlsZHJlbiBvZiB0aGUgcm93IGhhcyBiZWVuIGRlbGV0ZWQgYW5kIHRoZSByb3cgd2FzIHNlbGVjdGVkIGRvIG5vdCBjaGFuZ2UgaXRzIHN0YXRlXG4gICAgICAgICAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHRyZWVSb3cua2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZC5hZGQodHJlZVJvdy5rZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlLmRlbGV0ZSh0cmVlUm93LmtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZC5kZWxldGUodHJlZVJvdy5rZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlLmRlbGV0ZSh0cmVlUm93LmtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldF9hbGxfY2hpbGRyZW4ocmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gW107XG4gICAgICAgIGlmIChyZWNvcmQgJiYgcmVjb3JkLmNoaWxkcmVuICYmIHJlY29yZC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcmVjb3JkLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaCguLi50aGlzLmdldF9hbGxfY2hpbGRyZW4oY2hpbGQpKTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGRyZW47XG5cbiAgICB9XG5cbn1cbiJdfQ==
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLXNlbGVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3RyZWUtZ3JpZC90cmVlLWdyaWQtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFLekUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtJQUlwRSxrREFBa0Q7SUFDM0MscUJBQXFCLENBQUMsTUFBYSxFQUFFLGtCQUFtQjtRQUMzRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssaUJBQWlCLENBQUMsZUFBZSxFQUFFO1lBQzNFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUM5RCxPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELG9EQUFvRDtJQUM3Qyx1QkFBdUIsQ0FBQyxNQUFhO1FBQ3hDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssaUJBQWlCLENBQUMsZUFBZSxFQUFFO1lBQzlELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQU07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QyxDQUFDLENBQUM7Z0JBQy9DLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEI7U0FDSjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBRXBCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFVLEVBQUUsTUFBZTtRQUNqRCxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQzs7d0hBNVFRLDJCQUEyQjs0SEFBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkU2VsZWN0aW9uTW9kZSB9IGZyb20gJy4uL2NvbW1vbi9lbnVtcyc7XG5pbXBvcnQgeyBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJVHJlZUdyaWRSZWNvcmQgfSBmcm9tICcuL3RyZWUtZ3JpZC5pbnRlcmZhY2VzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIGV4dGVuZHMgSWd4R3JpZFNlbGVjdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcm93c1RvQmVTZWxlY3RlZDogU2V0PGFueT47XG4gICAgcHJpdmF0ZSByb3dzVG9CZUluZGV0ZXJtaW5hdGU6IFNldDxhbnk+O1xuXG4gICAgLyoqIFNlbGVjdCBzcGVjaWZpZWQgcm93cy4gTm8gZXZlbnQgaXMgZW1pdHRlZC4gKi9cbiAgICBwdWJsaWMgc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEczogYW55W10sIGNsZWFyUHJldlNlbGVjdGlvbj8pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZCAmJiB0aGlzLmdyaWQucm93U2VsZWN0aW9uID09PSBHcmlkU2VsZWN0aW9uTW9kZS5tdWx0aXBsZUNhc2NhZGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzY2FkZVNlbGVjdFJvd3NXaXRoTm9FdmVudChyb3dJRHMsIGNsZWFyUHJldlNlbGVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEcywgY2xlYXJQcmV2U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogRGVzZWxlY3Qgc3BlY2lmaWVkIHJvd3MuIE5vIGV2ZW50IGlzIGVtaXR0ZWQuICovXG4gICAgcHVibGljIGRlc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb3dTZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLm11bHRpcGxlQ2FzY2FkZSkge1xuICAgICAgICAgICAgdGhpcy5jYXNjYWRlRGVzZWxlY3RSb3dzV2l0aE5vRXZlbnQocm93SURzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kZXNlbGVjdFJvd3NXaXRoTm9FdmVudChyb3dJRHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0Um93U2VsZWN0aW9uRXZlbnQobmV3U2VsZWN0aW9uLCBhZGRlZCwgcmVtb3ZlZCwgZXZlbnQ/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQucm93U2VsZWN0aW9uID09PSBHcmlkU2VsZWN0aW9uTW9kZS5tdWx0aXBsZUNhc2NhZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENhc2NhZGVSb3dTZWxlY3Rpb25FdmVudChuZXdTZWxlY3Rpb24sIGFkZGVkLCByZW1vdmVkLCBldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5lbWl0Um93U2VsZWN0aW9uRXZlbnQobmV3U2VsZWN0aW9uLCBhZGRlZCwgcmVtb3ZlZCwgZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVDYXNjYWRlU2VsZWN0aW9uT25GaWx0ZXJBbmRDUlVEKFxuICAgICAgICBwYXJlbnRzOiBTZXQ8YW55PixcbiAgICAgICAgY3J1ZFJvd0lEPzogYW55LFxuICAgICAgICB2aXNpYmxlUm93SURzOiBTZXQ8YW55PiA9IG51bGwpIHtcbiAgICAgICAgaWYgKHZpc2libGVSb3dJRHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSB0cmVlIGdyaWQgaGFzIGZsYXQgc3RydWN0dXJlXG4gICAgICAgICAgICAvLyBkbyBub3QgZXhwbGljaXRseSBoYW5kbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiB0aGUgcm93c1xuICAgICAgICAgICAgaWYgKCFwYXJlbnRzLnNpemUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2aXNpYmxlUm93SURzID0gbmV3IFNldCh0aGlzLmdldFJvd0lEcyh0aGlzLmFsbERhdGEpKTtcbiAgICAgICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5yb3dTZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5yb3dzVG9CZUluZGV0ZXJtaW5hdGUgPSBuZXcgU2V0KHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MpO1xuICAgICAgICAgICAgaWYgKGNydWRSb3dJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm93U2VsZWN0aW9uLmRlbGV0ZShjcnVkUm93SUQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyZW50cy5zaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZXQodGhpcy5yb3dzVG9CZVNlbGVjdGVkKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgIC8vIFRPRE86IGVtaXQgc2VsZWN0aW9uQ2hhbmdlRCBldmVudCwgY2FsY3VsYXRlIGl0cyBhcmdzIHRocm91Z2ggdGhlIGhhbmRsZUFkZGVkQW5kUmVtb3ZlZEFyZ3MgbWV0aG9kXG4gICAgICAgICAgICB0aGlzLmNsZWFySGVhZGVyQ0JTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UubmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1BhcmVudHMgPSBuZXcgU2V0PGFueT4oKTtcbiAgICAgICAgcGFyZW50cy5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJvd1NlbGVjdGlvblN0YXRlKHBhcmVudCwgdmlzaWJsZVJvd0lEcyk7XG4gICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBuZXdQYXJlbnRzLmFkZChwYXJlbnQucGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FzY2FkZVNlbGVjdGlvbk9uRmlsdGVyQW5kQ1JVRChuZXdQYXJlbnRzLCBudWxsLCB2aXNpYmxlUm93SURzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhc2NhZGVTZWxlY3RSb3dzV2l0aE5vRXZlbnQocm93SURzOiBhbnlbXSwgY2xlYXJQcmV2U2VsZWN0aW9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoY2xlYXJQcmV2U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVSb3dzLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoeyBhZGRlZDogcm93SURzLCByZW1vdmVkOiBbXSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBbLi4ub2xkU2VsZWN0aW9uLCAuLi5yb3dJRHNdO1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHsgb2xkU2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24gfTtcblxuICAgICAgICAgICAgLy8gcmV0cmlldmUgb25seSB0aGUgcm93cyB3aXRob3V0IHRoZWlyIHBhcmVudHMvY2hpbGRyZW4gd2hpY2ggaGFzIHRvIGJlIGFkZGVkIHRvIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQWRkZWRBbmRSZW1vdmVkQXJncyhhcmdzKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gPSBuZXcgU2V0KHRoaXMucm93c1RvQmVTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgdGhpcy5jbGVhckhlYWRlckNCU3RhdGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FzY2FkZURlc2VsZWN0Um93c1dpdGhOb0V2ZW50KHJvd0lEczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJncyA9IHsgYWRkZWQ6IFtdLCByZW1vdmVkOiByb3dJRHMgfTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoYXJncyk7XG5cbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gPSBuZXcgU2V0KHRoaXMucm93c1RvQmVTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgdGhpcy5jbGVhckhlYWRlckNCU3RhdGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0aW9uU2VydmljZSgpOiBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDYXNjYWRlUm93U2VsZWN0aW9uRXZlbnQobmV3U2VsZWN0aW9uLCBhZGRlZCwgcmVtb3ZlZCwgZXZlbnQ/KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGVkUm93cygpO1xuICAgICAgICBpZiAodGhpcy5hcmVFcXVhbENvbGxlY3Rpb25zKGN1cnJTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICAgICAgICBvbGRTZWxlY3Rpb246IGN1cnJTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbixcbiAgICAgICAgICAgIGFkZGVkLCByZW1vdmVkLCBldmVudCwgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUm93c05ld1NlbGVjdGlvblN0YXRlKGFyZ3MpO1xuXG4gICAgICAgIGFyZ3MubmV3U2VsZWN0aW9uID0gQXJyYXkuZnJvbSh0aGlzLnJvd3NUb0JlU2VsZWN0ZWQpO1xuXG4gICAgICAgIC8vIHJldHJpZXZlIHJvd3MvcGFyZW50cy9jaGlsZHJlbiB3aGljaCBoYXMgYmVlbiBhZGRlZC9yZW1vdmVkIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAgICB0aGlzLmhhbmRsZUFkZGVkQW5kUmVtb3ZlZEFyZ3MoYXJncyk7XG5cbiAgICAgICAgdGhpcy5ncmlkLnJvd1NlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG5cbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhcmdzLm5ld1NlbGVjdGlvbiBoYXNuJ3QgYmVlbiBtb2RpZmllZFxuICAgICAgICBpZiAodGhpcy5hcmVFcXVhbENvbGxlY3Rpb25zKEFycmF5LmZyb20odGhpcy5yb3dzVG9CZVNlbGVjdGVkKSwgYXJncy5uZXdTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZXQodGhpcy5yb3dzVG9CZVNlbGVjdGVkKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVJvd3MgPSBuZXcgU2V0KHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJIZWFkZXJDQlN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZS5uZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzZWxlY3QgdGhlIHJvd3Mgd2l0aGluIHRoZSBtb2RpZmllZCBhcmdzLm5ld1NlbGVjdGlvbiB3aXRoIG5vIGV2ZW50XG4gICAgICAgICAgICB0aGlzLmNhc2NhZGVTZWxlY3RSb3dzV2l0aE5vRXZlbnQoYXJncy5uZXdTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiByZXRyaWV2ZSB0aGUgcm93cyB3aGljaCBzaG91bGQgYmUgYWRkZWQvcmVtb3ZlZCB0by9mcm9tIHRoZSBvbGQgc2VsZWN0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBoYW5kbGVBZGRlZEFuZFJlbW92ZWRBcmdzKGFyZ3M6IGFueSkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb25TZXQgPSBuZXcgU2V0KGFyZ3MubmV3U2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uU2V0ID0gbmV3IFNldChhcmdzLm9sZFNlbGVjdGlvbik7XG4gICAgICAgIGFyZ3MucmVtb3ZlZCA9IGFyZ3Mub2xkU2VsZWN0aW9uLmZpbHRlcih4ID0+ICFuZXdTZWxlY3Rpb25TZXQuaGFzKHgpKTtcbiAgICAgICAgYXJncy5hZGRlZCA9IGFyZ3MubmV3U2VsZWN0aW9uLmZpbHRlcih4ID0+ICFvbGRTZWxlY3Rpb25TZXQuaGFzKHgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhZGRzIHRvIHJvd3NUb0JlUHJvY2Vzc2VkIHNldCBhbGwgdmlzaWJsZSBjaGlsZHJlbiBvZiB0aGUgcm93cyB3aGljaCB3YXMgaW5pdGlhbGx5IHdpdGhpbiB0aGUgcm93c1RvQmVQcm9jZXNzZWQgc2V0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93c1RvQmVQcm9jZXNzZWQgc2V0IG9mIHRoZSByb3dzICh3aXRob3V0IHRoZWlyIHBhcmVudHMvY2hpbGRyZW4pIHRvIGJlIHNlbGVjdGVkL2Rlc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gdmlzaWJsZVJvd0lEcyBsaXN0IG9mIGFsbCB2aXNpYmxlIHJvd0lkc1xuICAgICAqIEByZXR1cm5zIGEgbmV3IHNldCB3aXRoIGFsbCBkaXJlY3QgcGFyZW50cyBvZiB0aGUgcm93cyB3aXRoaW4gcm93c1RvQmVQcm9jZXNzZWQgc2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBjb2xsZWN0Um93c0NoaWxkcmVuQW5kRGlyZWN0UGFyZW50cyhyb3dzVG9CZVByb2Nlc3NlZDogU2V0PGFueT4sIHZpc2libGVSb3dJRHM6IFNldDxhbnk+LCBhZGRpbmc6IGJvb2xlYW4pOiBTZXQ8YW55PiB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZFJvd3NQYXJlbnRzID0gbmV3IFNldDxhbnk+KCk7XG4gICAgICAgIEFycmF5LmZyb20ocm93c1RvQmVQcm9jZXNzZWQpLmZvckVhY2goKHJvd0lEKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERlc2VsZWN0Um93KHJvd0lELCBhZGRpbmcpO1xuICAgICAgICAgICAgY29uc3Qgcm93VHJlZVJlY29yZCA9IHRoaXMuZ3JpZC5ncmlkQVBJLmdldF9yZWNfYnlfaWQocm93SUQpO1xuICAgICAgICAgICAgY29uc3Qgcm93QW5kQWxsQ2hpbGRyZW4gPSB0aGlzLmdldF9hbGxfY2hpbGRyZW4ocm93VHJlZVJlY29yZCk7XG4gICAgICAgICAgICByb3dBbmRBbGxDaGlsZHJlbi5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZpc2libGVSb3dJRHMuaGFzKHJvdy5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVzZWxlY3RSb3cocm93LmtleSwgYWRkaW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyb3dUcmVlUmVjb3JkICYmIHJvd1RyZWVSZWNvcmQucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkUm93c1BhcmVudHMuYWRkKHJvd1RyZWVSZWNvcmQucGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRSb3dzUGFyZW50cztcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIHBvcHVsYXRlcyB0aGUgcm93c1RvQmVTZWxlY3RlZCBhbmQgcm93c1RvQmVJbmRldGVybWluYXRlIHNldHNcbiAgICAgKiB3aXRoIHRoZSByb3dzIHdoaWNoIHdpbGwgYmUgZXZlbnR1YWxseSBpbiBzZWxlY3RlZC9pbmRldGVybWluYXRlIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVSb3dzTmV3U2VsZWN0aW9uU3RhdGUoYXJnczogYW55KSB7XG4gICAgICAgIHRoaXMucm93c1RvQmVTZWxlY3RlZCA9IG5ldyBTZXQ8YW55PihhcmdzLm9sZFNlbGVjdGlvbiA/IGFyZ3Mub2xkU2VsZWN0aW9uIDogdGhpcy5nZXRTZWxlY3RlZFJvd3MoKSk7XG4gICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlID0gbmV3IFNldDxhbnk+KHRoaXMuZ2V0SW5kZXRlcm1pbmF0ZVJvd3MoKSk7XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZVJvd0lEcyA9IG5ldyBTZXQodGhpcy5nZXRSb3dJRHModGhpcy5hbGxEYXRhKSk7XG5cbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IG5ldyBTZXQoYXJncy5yZW1vdmVkKTtcbiAgICAgICAgY29uc3QgYWRkZWQgPSBuZXcgU2V0KGFyZ3MuYWRkZWQpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkICYmIHJlbW92ZWQuc2l6ZSkge1xuICAgICAgICAgICAgbGV0IHJlbW92ZWRSb3dzUGFyZW50cyA9IG5ldyBTZXQ8YW55PigpO1xuXG4gICAgICAgICAgICByZW1vdmVkUm93c1BhcmVudHMgPSB0aGlzLmNvbGxlY3RSb3dzQ2hpbGRyZW5BbmREaXJlY3RQYXJlbnRzKHJlbW92ZWQsIHZpc2libGVSb3dJRHMsIGZhbHNlKTtcblxuICAgICAgICAgICAgQXJyYXkuZnJvbShyZW1vdmVkUm93c1BhcmVudHMpLmZvckVhY2goKHBhcmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUGFyZW50U2VsZWN0aW9uU3RhdGUocGFyZW50LCB2aXNpYmxlUm93SURzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFkZGVkICYmIGFkZGVkLnNpemUpIHtcbiAgICAgICAgICAgIGxldCBhZGRlZFJvd3NQYXJlbnRzID0gbmV3IFNldDxhbnk+KCk7XG5cbiAgICAgICAgICAgIGFkZGVkUm93c1BhcmVudHMgPSB0aGlzLmNvbGxlY3RSb3dzQ2hpbGRyZW5BbmREaXJlY3RQYXJlbnRzKGFkZGVkLCB2aXNpYmxlUm93SURzLCB0cnVlKTtcblxuICAgICAgICAgICAgQXJyYXkuZnJvbShhZGRlZFJvd3NQYXJlbnRzKS5mb3JFYWNoKChwYXJlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHBhcmVudCwgdmlzaWJsZVJvd0lEcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlY3Vyc2l2ZWx5IGhhbmRsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IHBhcmVudHNcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHRyZWVSb3c6IElUcmVlR3JpZFJlY29yZCwgdmlzaWJsZVJvd0lEczogU2V0PGFueT4pIHtcbiAgICAgICAgaWYgKCF0cmVlUm93KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVSb3dTZWxlY3Rpb25TdGF0ZSh0cmVlUm93LCB2aXNpYmxlUm93SURzKTtcbiAgICAgICAgaWYgKHRyZWVSb3cucGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVBhcmVudFNlbGVjdGlvblN0YXRlKHRyZWVSb3cucGFyZW50LCB2aXNpYmxlUm93SURzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGEgZ2l2ZW4gcm93IGJhc2VkIHRoZSBzZWxlY3Rpb24gc3RhdGVzIG9mIGl0cyBkaXJlY3QgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZVJvd1NlbGVjdGlvblN0YXRlKHRyZWVSb3c6IElUcmVlR3JpZFJlY29yZCwgdmlzaWJsZVJvd0lEczogU2V0PGFueT4pIHtcbiAgICAgICAgbGV0IHZpc2libGVDaGlsZHJlbiA9IFtdO1xuICAgICAgICBpZiAodHJlZVJvdyAmJiB0cmVlUm93LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB2aXNpYmxlQ2hpbGRyZW4gPSB0cmVlUm93LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB2aXNpYmxlUm93SURzLmhhcyhjaGlsZC5rZXkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmlzaWJsZUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHZpc2libGVDaGlsZHJlbi5ldmVyeShyb3cgPT4gdGhpcy5yb3dzVG9CZVNlbGVjdGVkLmhhcyhyb3cua2V5KSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERlc2VsZWN0Um93KHRyZWVSb3cua2V5LCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmlzaWJsZUNoaWxkcmVuLnNvbWUocm93ID0+IHRoaXMucm93c1RvQmVTZWxlY3RlZC5oYXMocm93LmtleSkgfHwgdGhpcy5yb3dzVG9CZUluZGV0ZXJtaW5hdGUuaGFzKHJvdy5rZXkpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlLmFkZCh0cmVlUm93LmtleSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzVG9CZVNlbGVjdGVkLmRlbGV0ZSh0cmVlUm93LmtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVzZWxlY3RSb3codHJlZVJvdy5rZXksIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBjaGlsZHJlbiBvZiB0aGUgcm93IGhhcyBiZWVuIGRlbGV0ZWQgYW5kIHRoZSByb3cgd2FzIHNlbGVjdGVkIGRvIG5vdCBjaGFuZ2UgaXRzIHN0YXRlXG4gICAgICAgICAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHRyZWVSb3cua2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVzZWxlY3RSb3codHJlZVJvdy5rZXksIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERlc2VsZWN0Um93KHRyZWVSb3cua2V5LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldF9hbGxfY2hpbGRyZW4ocmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gW107XG4gICAgICAgIGlmIChyZWNvcmQgJiYgcmVjb3JkLmNoaWxkcmVuICYmIHJlY29yZC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcmVjb3JkLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaCguLi50aGlzLmdldF9hbGxfY2hpbGRyZW4oY2hpbGQpKTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGRyZW47XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdERlc2VsZWN0Um93KHJvd0lEOiBhbnksIHNlbGVjdDogYm9vbGVhbikge1xuICAgICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnJvd3NUb0JlU2VsZWN0ZWQuYWRkKHJvd0lEKTtcbiAgICAgICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlLmRlbGV0ZShyb3dJRCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvd3NUb0JlU2VsZWN0ZWQuZGVsZXRlKHJvd0lEKTtcbiAgICAgICAgICAgIHRoaXMucm93c1RvQmVJbmRldGVybWluYXRlLmRlbGV0ZShyb3dJRCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -77,16 +77,20 @@ export class IgxTreeGridGroupingPipe {
|
|
|
77
77
|
const value = isDateTime
|
|
78
78
|
? formatDate(record[key], column.pipeArgs.format, this.grid.locale)
|
|
79
79
|
: record[key];
|
|
80
|
+
let valueCase = value;
|
|
80
81
|
let groupByRecord;
|
|
81
|
-
if (
|
|
82
|
-
|
|
82
|
+
if (groupingExpression.ignoreCase) {
|
|
83
|
+
valueCase = value?.toString().toLowerCase();
|
|
84
|
+
}
|
|
85
|
+
if (map.has(valueCase)) {
|
|
86
|
+
groupByRecord = map.get(valueCase);
|
|
83
87
|
}
|
|
84
88
|
else {
|
|
85
89
|
groupByRecord = new GroupByRecord();
|
|
86
90
|
groupByRecord.key = key;
|
|
87
91
|
groupByRecord.value = value;
|
|
88
92
|
groupByRecord.records = [];
|
|
89
|
-
map.set(
|
|
93
|
+
map.set(valueCase, groupByRecord);
|
|
90
94
|
}
|
|
91
95
|
groupByRecord.records.push(record);
|
|
92
96
|
}
|
|
@@ -101,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
|
|
|
101
105
|
name: 'treeGridGrouping'
|
|
102
106
|
}]
|
|
103
107
|
}] });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLmdyb3VwaW5nLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdHJlZS1ncmlkL3RyZWUtZ3JpZC5ncm91cGluZy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRWhELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxhQUFhO0NBS2xCO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtDQUdoQztBQUVELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUFVO0lBRzlDLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVTLGFBQWEsQ0FBQyxHQUFRLEVBQUUsR0FBVyxFQUFFLFNBQWtCLEtBQUssRUFBRSxTQUFrQixLQUFLO1FBQzNGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDaEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1B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LEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7b0hBaEdRLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGtCQUFrQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZFR5cGUgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4U29ydGluZyB9IGZyb20gJy4uL2NvbW1vbi9zdHJhdGVneSc7XG5cbmNvbnN0IEhJRERFTl9GSUVMRF9OQU1FID0gJ19JZ3hfSGlkZGVuX0RhdGFfJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgR3JvdXBCeVJlY29yZCB7XG4gICAgcHVibGljIGtleTogc3RyaW5nO1xuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xuICAgIHB1YmxpYyBncm91cHM6IEdyb3VwQnlSZWNvcmRbXTtcbiAgICBwdWJsaWMgcmVjb3JkczogYW55W107XG59XG5cbmV4cG9ydCBjbGFzcyBJVHJlZUdyaWRBZ2dyZWdhdGlvbiB7XG4gICAgcHVibGljIGZpZWxkOiBzdHJpbmc7XG4gICAgcHVibGljIGFnZ3JlZ2F0ZTogKHBhcmVudDogYW55LCBjaGlsZHJlbjogYW55W10pID0+IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIElneEdyb3VwZWRUcmVlR3JpZFNvcnRpbmcgZXh0ZW5kcyBJZ3hTb3J0aW5nIHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IElneEdyb3VwZWRUcmVlR3JpZFNvcnRpbmcgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBJZ3hHcm91cGVkVHJlZUdyaWRTb3J0aW5nKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgaXNEYXRlOiBib29sZWFuID0gZmFsc2UsIGlzVGltZTogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcbiAgICAgICAgcmV0dXJuIG9iai5kYXRhW0hJRERFTl9GSUVMRF9OQU1FXSA/XG4gICAgICAgICAgICBzdXBlci5nZXRGaWVsZFZhbHVlKG9iai5kYXRhW0hJRERFTl9GSUVMRF9OQU1FXSwga2V5LCBpc0RhdGUsIGlzVGltZSkgOlxuICAgICAgICAgICAgc3VwZXIuZ2V0RmllbGRWYWx1ZShvYmouZGF0YSwga2V5LCBpc0RhdGUsIGlzVGltZSk7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICd0cmVlR3JpZEdyb3VwaW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZEdyb3VwaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUgZ3JpZDogR3JpZFR5cGU7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgZ3JvdXBpbmdFeHByZXNzaW9uczogSUdyb3VwaW5nRXhwcmVzc2lvbltdLFxuICAgICAgICAgICAgICAgICAgICAgZ3JvdXBLZXk6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGF0YUtleTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbnM/OiBJVHJlZUdyaWRBZ2dyZWdhdGlvbltdXG4gICAgICAgICAgICAgICAgICAgICk6IGFueVtdIHtcbiAgICAgICAgaWYgKGdyb3VwaW5nRXhwcmVzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cEtleT8udG9Mb3dlckNhc2UoKSA9PT0gY2hpbGREYXRhS2V5Py50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyb3VwIGtleSBhbmQgY2hpbGQgZGF0YSBrZXkgY2Fubm90IGJlIHRoZSBzYW1lLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkID0gZ3JpZDtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZFJlY29yZHMgPSB0aGlzLmdyb3VwQnlNdWx0aXBsZShjb2xsZWN0aW9uLCBncm91cGluZ0V4cHJlc3Npb25zKTtcbiAgICAgICAgdGhpcy5mbGF0dGVuR3JvdXBpbmcoZ3JvdXBlZFJlY29yZHMsIGdyb3VwS2V5LFxuICAgICAgICAgICAgY2hpbGREYXRhS2V5LCByZXN1bHQsIGFnZ3JlZ2F0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZsYXR0ZW5Hcm91cGluZyhncm91cFJlY29yZHM6IEdyb3VwQnlSZWNvcmRbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cEtleTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGF0YUtleTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uczogSVRyZWVHcmlkQWdncmVnYXRpb25bXSA9IFtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXBSZWNvcmQgb2YgZ3JvdXBSZWNvcmRzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZ3JvdXBSZWNvcmQucmVjb3JkcztcblxuICAgICAgICAgICAgcGFyZW50W2NoaWxkRGF0YUtleV0gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhZ2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRbYWdncmVnYXRpb24uZmllbGRdID0gYWdncmVnYXRpb24uYWdncmVnYXRlKHBhcmVudCwgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJlbnRbZ3JvdXBLZXldID0gZ3JvdXBSZWNvcmQudmFsdWUgKyBgICgke2dyb3VwUmVjb3JkLnJlY29yZHMubGVuZ3RofSlgO1xuICAgICAgICAgICAgcGFyZW50W0hJRERFTl9GSUVMRF9OQU1FXSA9IHsgW2dyb3VwUmVjb3JkLmtleV06IGdyb3VwUmVjb3JkLnZhbHVlIH07XG4gICAgICAgICAgICBkYXRhLnB1c2gocGFyZW50KTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwUmVjb3JkLmdyb3Vwcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwaW5nKGdyb3VwUmVjb3JkLmdyb3VwcywgZ3JvdXBLZXksIGNoaWxkRGF0YUtleSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50W2NoaWxkRGF0YUtleV0sIGFnZ3JlZ2F0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudFtjaGlsZERhdGFLZXldID0gY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwQnlNdWx0aXBsZShhcnJheTogYW55W10sIGdyb3VwaW5nRXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXSwgaW5kZXggPSAwKTogR3JvdXBCeVJlY29yZFtdIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5ncm91cEJ5KGFycmF5LCBncm91cGluZ0V4cHJlc3Npb25zW2luZGV4XSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICsgMSA8IGdyb3VwaW5nRXhwcmVzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgIGZvciAoY29uc3QgZ3JvdXBCeVJlY29yZCBvZiByZXMpIHtcbiAgICAgICAgICAgICAgICBncm91cEJ5UmVjb3JkLmdyb3VwcyA9IHRoaXMuZ3JvdXBCeU11bHRpcGxlKGdyb3VwQnlSZWNvcmQucmVjb3JkcywgZ3JvdXBpbmdFeHByZXNzaW9ucywgaW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBncm91cEJ5KGFycmF5OiBhbnlbXSwgZ3JvdXBpbmdFeHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uKTogR3JvdXBCeVJlY29yZFtdIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZ3JvdXBpbmdFeHByZXNzaW9uLmZpZWxkTmFtZTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5ncmlkPy5nZXRDb2x1bW5CeU5hbWUoa2V5KTtcbiAgICAgICAgY29uc3QgaXNEYXRlVGltZSA9IGNvbHVtbj8uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlIHx8XG4gICAgICAgICAgICBjb2x1bW4/LmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWUgfHxcbiAgICAgICAgICAgIGNvbHVtbj8uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lO1xuICAgICAgICBjb25zdCBtYXA6IE1hcDxhbnksIEdyb3VwQnlSZWNvcmQ+ID0gbmV3IE1hcDxhbnksIEdyb3VwQnlSZWNvcmQ+KCk7XG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGFycmF5KSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlzRGF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IGZvcm1hdERhdGUocmVjb3JkW2tleV0sIGNvbHVtbi5waXBlQXJncy5mb3JtYXQsIHRoaXMuZ3JpZC5sb2NhbGUpXG4gICAgICAgICAgICAgICAgOiByZWNvcmRba2V5XTtcblxuICAgICAgICAgICAgbGV0IGdyb3VwQnlSZWNvcmQ6IEdyb3VwQnlSZWNvcmQ7XG5cbiAgICAgICAgICAgIGlmIChtYXAuaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGdyb3VwQnlSZWNvcmQgPSBtYXAuZ2V0KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZCA9IG5ldyBHcm91cEJ5UmVjb3JkKCk7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZC5rZXkgPSBrZXk7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGdyb3VwQnlSZWNvcmQucmVjb3JkcyA9IFtdO1xuICAgICAgICAgICAgICAgIG1hcC5zZXQodmFsdWUsIGdyb3VwQnlSZWNvcmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncm91cEJ5UmVjb3JkLnJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obWFwLnZhbHVlcygpKTtcbiAgICB9XG59XG4iXX0=
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLmdyb3VwaW5nLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdHJlZS1ncmlkL3RyZWUtZ3JpZC5ncm91cGluZy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRWhELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxhQUFhO0NBS2xCO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtDQUdoQztBQUVELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUFVO0lBRzlDLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVTLGFBQWEsQ0FBQyxHQUFRLEVBQUUsR0FBVyxFQUFFLFNBQWtCLEtBQUssRUFBRSxTQUFrQixLQUFLO1FBQzNGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDaEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1B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QUM7Z0JBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3JDO1lBRUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7b0hBcEdRLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGtCQUFrQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZFR5cGUgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4U29ydGluZyB9IGZyb20gJy4uL2NvbW1vbi9zdHJhdGVneSc7XG5cbmNvbnN0IEhJRERFTl9GSUVMRF9OQU1FID0gJ19JZ3hfSGlkZGVuX0RhdGFfJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgR3JvdXBCeVJlY29yZCB7XG4gICAgcHVibGljIGtleTogc3RyaW5nO1xuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xuICAgIHB1YmxpYyBncm91cHM6IEdyb3VwQnlSZWNvcmRbXTtcbiAgICBwdWJsaWMgcmVjb3JkczogYW55W107XG59XG5cbmV4cG9ydCBjbGFzcyBJVHJlZUdyaWRBZ2dyZWdhdGlvbiB7XG4gICAgcHVibGljIGZpZWxkOiBzdHJpbmc7XG4gICAgcHVibGljIGFnZ3JlZ2F0ZTogKHBhcmVudDogYW55LCBjaGlsZHJlbjogYW55W10pID0+IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIElneEdyb3VwZWRUcmVlR3JpZFNvcnRpbmcgZXh0ZW5kcyBJZ3hTb3J0aW5nIHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IElneEdyb3VwZWRUcmVlR3JpZFNvcnRpbmcgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBJZ3hHcm91cGVkVHJlZUdyaWRTb3J0aW5nKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgaXNEYXRlOiBib29sZWFuID0gZmFsc2UsIGlzVGltZTogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcbiAgICAgICAgcmV0dXJuIG9iai5kYXRhW0hJRERFTl9GSUVMRF9OQU1FXSA/XG4gICAgICAgICAgICBzdXBlci5nZXRGaWVsZFZhbHVlKG9iai5kYXRhW0hJRERFTl9GSUVMRF9OQU1FXSwga2V5LCBpc0RhdGUsIGlzVGltZSkgOlxuICAgICAgICAgICAgc3VwZXIuZ2V0RmllbGRWYWx1ZShvYmouZGF0YSwga2V5LCBpc0RhdGUsIGlzVGltZSk7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICd0cmVlR3JpZEdyb3VwaW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZEdyb3VwaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUgZ3JpZDogR3JpZFR5cGU7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgZ3JvdXBpbmdFeHByZXNzaW9uczogSUdyb3VwaW5nRXhwcmVzc2lvbltdLFxuICAgICAgICAgICAgICAgICAgICAgZ3JvdXBLZXk6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGF0YUtleTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbnM/OiBJVHJlZUdyaWRBZ2dyZWdhdGlvbltdXG4gICAgICAgICAgICAgICAgICAgICk6IGFueVtdIHtcbiAgICAgICAgaWYgKGdyb3VwaW5nRXhwcmVzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cEtleT8udG9Mb3dlckNhc2UoKSA9PT0gY2hpbGREYXRhS2V5Py50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyb3VwIGtleSBhbmQgY2hpbGQgZGF0YSBrZXkgY2Fubm90IGJlIHRoZSBzYW1lLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkID0gZ3JpZDtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZFJlY29yZHMgPSB0aGlzLmdyb3VwQnlNdWx0aXBsZShjb2xsZWN0aW9uLCBncm91cGluZ0V4cHJlc3Npb25zKTtcbiAgICAgICAgdGhpcy5mbGF0dGVuR3JvdXBpbmcoZ3JvdXBlZFJlY29yZHMsIGdyb3VwS2V5LFxuICAgICAgICAgICAgY2hpbGREYXRhS2V5LCByZXN1bHQsIGFnZ3JlZ2F0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZsYXR0ZW5Hcm91cGluZyhncm91cFJlY29yZHM6IEdyb3VwQnlSZWNvcmRbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cEtleTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGF0YUtleTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uczogSVRyZWVHcmlkQWdncmVnYXRpb25bXSA9IFtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXBSZWNvcmQgb2YgZ3JvdXBSZWNvcmRzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZ3JvdXBSZWNvcmQucmVjb3JkcztcblxuICAgICAgICAgICAgcGFyZW50W2NoaWxkRGF0YUtleV0gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhZ2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRbYWdncmVnYXRpb24uZmllbGRdID0gYWdncmVnYXRpb24uYWdncmVnYXRlKHBhcmVudCwgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJlbnRbZ3JvdXBLZXldID0gZ3JvdXBSZWNvcmQudmFsdWUgKyBgICgke2dyb3VwUmVjb3JkLnJlY29yZHMubGVuZ3RofSlgO1xuICAgICAgICAgICAgcGFyZW50W0hJRERFTl9GSUVMRF9OQU1FXSA9IHsgW2dyb3VwUmVjb3JkLmtleV06IGdyb3VwUmVjb3JkLnZhbHVlIH07XG4gICAgICAgICAgICBkYXRhLnB1c2gocGFyZW50KTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwUmVjb3JkLmdyb3Vwcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwaW5nKGdyb3VwUmVjb3JkLmdyb3VwcywgZ3JvdXBLZXksIGNoaWxkRGF0YUtleSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50W2NoaWxkRGF0YUtleV0sIGFnZ3JlZ2F0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudFtjaGlsZERhdGFLZXldID0gY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwQnlNdWx0aXBsZShhcnJheTogYW55W10sIGdyb3VwaW5nRXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXSwgaW5kZXggPSAwKTogR3JvdXBCeVJlY29yZFtdIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5ncm91cEJ5KGFycmF5LCBncm91cGluZ0V4cHJlc3Npb25zW2luZGV4XSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICsgMSA8IGdyb3VwaW5nRXhwcmVzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgIGZvciAoY29uc3QgZ3JvdXBCeVJlY29yZCBvZiByZXMpIHtcbiAgICAgICAgICAgICAgICBncm91cEJ5UmVjb3JkLmdyb3VwcyA9IHRoaXMuZ3JvdXBCeU11bHRpcGxlKGdyb3VwQnlSZWNvcmQucmVjb3JkcywgZ3JvdXBpbmdFeHByZXNzaW9ucywgaW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBncm91cEJ5KGFycmF5OiBhbnlbXSwgZ3JvdXBpbmdFeHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uKTogR3JvdXBCeVJlY29yZFtdIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZ3JvdXBpbmdFeHByZXNzaW9uLmZpZWxkTmFtZTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5ncmlkPy5nZXRDb2x1bW5CeU5hbWUoa2V5KTtcbiAgICAgICAgY29uc3QgaXNEYXRlVGltZSA9IGNvbHVtbj8uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlIHx8XG4gICAgICAgICAgICBjb2x1bW4/LmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWUgfHxcbiAgICAgICAgICAgIGNvbHVtbj8uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lO1xuICAgICAgICBjb25zdCBtYXA6IE1hcDxhbnksIEdyb3VwQnlSZWNvcmQ+ID0gbmV3IE1hcDxhbnksIEdyb3VwQnlSZWNvcmQ+KCk7XG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGFycmF5KSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlzRGF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IGZvcm1hdERhdGUocmVjb3JkW2tleV0sIGNvbHVtbi5waXBlQXJncy5mb3JtYXQsIHRoaXMuZ3JpZC5sb2NhbGUpXG4gICAgICAgICAgICAgICAgOiByZWNvcmRba2V5XTtcblxuICAgICAgICAgICAgbGV0IHZhbHVlQ2FzZSA9IHZhbHVlO1xuICAgICAgICAgICAgbGV0IGdyb3VwQnlSZWNvcmQ6IEdyb3VwQnlSZWNvcmQ7XG5cbiAgICAgICAgICAgIGlmIChncm91cGluZ0V4cHJlc3Npb24uaWdub3JlQ2FzZSkge1xuICAgICAgICAgICAgICAgIHZhbHVlQ2FzZSA9IHZhbHVlPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWFwLmhhcyh2YWx1ZUNhc2UpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZCA9IG1hcC5nZXQodmFsdWVDYXNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZCA9IG5ldyBHcm91cEJ5UmVjb3JkKCk7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZC5rZXkgPSBrZXk7XG4gICAgICAgICAgICAgICAgZ3JvdXBCeVJlY29yZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGdyb3VwQnlSZWNvcmQucmVjb3JkcyA9IFtdO1xuICAgICAgICAgICAgICAgIG1hcC5zZXQodmFsdWVDYXNlLCBncm91cEJ5UmVjb3JkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ3JvdXBCeVJlY29yZC5yZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKG1hcC52YWx1ZXMoKSk7XG4gICAgfVxufVxuIl19
|