@firestitch/list 12.8.2 → 12.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/classes/data-controller.d.ts +2 -1
- package/app/classes/reorder-controller.d.ts +5 -1
- package/app/classes/selection-controller.d.ts +5 -0
- package/app/components/body/body.component.d.ts +2 -2
- package/app/components/body/row/row.component.d.ts +2 -0
- package/app/components/list/list.component.d.ts +2 -0
- package/app/directives/draggable-list/draggable-list.directive.d.ts +12 -3
- package/app/directives/draggable-row/draggable-row.directive.d.ts +2 -0
- package/app/interfaces/listconfig.interface.d.ts +2 -0
- package/bundles/firestitch-list.umd.js +199 -39
- package/bundles/firestitch-list.umd.js.map +1 -1
- package/esm2015/app/classes/data-controller.js +23 -2
- package/esm2015/app/classes/reorder-controller.js +7 -2
- package/esm2015/app/classes/selection-controller.js +16 -2
- package/esm2015/app/components/body/body.component.js +4 -4
- package/esm2015/app/components/body/row/row.component.js +13 -3
- package/esm2015/app/components/head/head.component.js +2 -2
- package/esm2015/app/components/list/list.component.js +9 -3
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +97 -31
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +9 -1
- package/esm2015/app/interfaces/listconfig.interface.js +1 -1
- package/fesm2015/firestitch-list.js +169 -39
- package/fesm2015/firestitch-list.js.map +1 -1
- package/package.json +1 -1
|
@@ -192,7 +192,7 @@ export class DataController {
|
|
|
192
192
|
}
|
|
193
193
|
return !!removedRows.length;
|
|
194
194
|
}
|
|
195
|
-
swapRows(row1, row2) {
|
|
195
|
+
swapRows(row1, row2, selectedRows, isMultipleDrag = false) {
|
|
196
196
|
let tmpEl;
|
|
197
197
|
const rowsStack = this._rowsStack;
|
|
198
198
|
const row1GlobalIndex = rowsStack.indexOf(row1);
|
|
@@ -200,6 +200,24 @@ export class DataController {
|
|
|
200
200
|
tmpEl = rowsStack[row1GlobalIndex];
|
|
201
201
|
rowsStack[row1GlobalIndex] = rowsStack[row2GlobalIndex];
|
|
202
202
|
rowsStack[row2GlobalIndex] = tmpEl;
|
|
203
|
+
if (isMultipleDrag && Array.isArray(selectedRows)) {
|
|
204
|
+
if (!selectedRows.includes(row1)) {
|
|
205
|
+
selectedRows = [row1, ...selectedRows];
|
|
206
|
+
}
|
|
207
|
+
selectedRows
|
|
208
|
+
.filter((selectedRow) => {
|
|
209
|
+
return selectedRow !== row1;
|
|
210
|
+
})
|
|
211
|
+
.forEach((selectedRow) => {
|
|
212
|
+
const idx = rowsStack.indexOf(selectedRow);
|
|
213
|
+
rowsStack.splice(idx, 1);
|
|
214
|
+
});
|
|
215
|
+
const indexToInsertAfter = rowsStack.indexOf(tmpEl);
|
|
216
|
+
rowsStack.splice(indexToInsertAfter, 1);
|
|
217
|
+
selectedRows.forEach((selectedRow, offset) => {
|
|
218
|
+
rowsStack.splice(indexToInsertAfter + offset, 0, selectedRow);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
203
221
|
this._rowsStack = [...rowsStack];
|
|
204
222
|
}
|
|
205
223
|
destroy() {
|
|
@@ -213,6 +231,9 @@ export class DataController {
|
|
|
213
231
|
row.toggleRowExpandStatus();
|
|
214
232
|
this._updateVisibleRows();
|
|
215
233
|
}
|
|
234
|
+
finishReorder() {
|
|
235
|
+
this._updateVisibleRows();
|
|
236
|
+
}
|
|
216
237
|
_updateRowsStack(rows) {
|
|
217
238
|
this._destroyRowsStack();
|
|
218
239
|
if (this.groupEnabled) {
|
|
@@ -328,4 +349,4 @@ export class DataController {
|
|
|
328
349
|
}, []);
|
|
329
350
|
}
|
|
330
351
|
}
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2RhdGEtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU1qRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2hFLE1BQU0sT0FBTyxjQUFjO0lBdUJ6QjtRQXJCaUIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVsRCxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQVUsRUFBRSxDQUFDO1FBTXZCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBS3RCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFUixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVsQyxDQUFDO0lBRWhCLElBQUksWUFBWTtRQUNk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QUFFO2dCQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hCO1lBRUQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgRnNMaXN0U3RhdGUgfSBmcm9tICcuLi9lbnVtcy9zdGF0ZS5lbnVtJztcbmltcG9ydCB7IFJvd1R5cGUgfSBmcm9tICcuLi9lbnVtcy9yb3ctdHlwZS5lbnVtJztcbmltcG9ydCB7XG4gIEZzTGlzdEFic3RyYWN0Um93LFxuICBGc0xpc3RHcm91cENvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG59IGZyb20gJy4uL2ludGVyZmFjZXMvbGlzdGNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JvdXBSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93L2dyb3VwLXJvdyc7XG5pbXBvcnQgeyBDaGlsZFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cvY2hpbGQtcm93JztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgR3JvdXBGb290ZXJSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93L2dyb3VwLWZvb3Rlci1yb3cnO1xuXG5cbmV4cG9ydCBjbGFzcyBEYXRhQ29udHJvbGxlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmlzaWJsZVJvd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSb3dbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3dzUmVtb3ZlZCQgPSBuZXcgU3ViamVjdDxSb3dbXT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVtb3RlUm93c0NoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX3N0b3JlID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIF9yb3dzU3RhY2s6IFJvd1tdID0gW107XG4gIHByaXZhdGUgX29wZXJhdGlvbjogRnNMaXN0U3RhdGU7XG5cbiAgcHJpdmF0ZSBfZ3JvdXBCeUZuOiAocm93KSA9PiBhbnlbXTtcbiAgcHJpdmF0ZSBfZm9vdGVyUm93Rm46IChyb3csIGdyb3VwKSA9PiBib29sZWFuO1xuICBwcml2YXRlIF9jb21wYXJlQnlGbjogKGdyb3VwKSA9PiBhbnk7XG4gIHByaXZhdGUgX2luaXRpYWxFeHBhbmQgPSB0cnVlO1xuICBwcml2YXRlIF9ncm91cEVuYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pbmZpbml0eVNjcm9sbEVuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2xvYWRNb3JlRW5hYmxlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIF9oYXNEYXRhID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBnZXQgdmlzaWJsZVJvd3MkKCkge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlUm93cyQ7XG4gIH1cblxuICBnZXQgdmlzaWJsZVJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVSb3dzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHZpc2libGVSb3dzRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlUm93cy5tYXAoKHJvdykgPT4gcm93LmRhdGEpO1xuICB9XG5cbiAgZ2V0IHJvd3NTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93c1N0YWNrLnNsaWNlKCk7XG4gIH1cblxuICBnZXQgZ3JvdXBFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cEVuYWJsZWQ7XG4gIH1cblxuICBzZXQgZ3JvdXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZ3JvdXBFbmFibGVkID0gdmFsdWU7XG4gIH1cblxuICBnZXQgcmVtb3RlUm93c0NoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW90ZVJvd3NDaGFuZ2UkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICk7XG4gIH1cblxuICBnZXQgcm93c1JlbW92ZWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dzUmVtb3ZlZCQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNEYXRhO1xuICB9XG5cbiAgZ2V0IG9wZXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlcmF0aW9uO1xuICB9XG5cbiAgc2V0IHZpc2libGVSb3dzKHZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuX3Zpc2libGVSb3dzJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLl9oYXNEYXRhID0gdGhpcy52aXNpYmxlUm93cy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHZpc2libGVSb3dzQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZVJvd3MubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGhhc0dyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGFyZUJ5Rm4gJiYgdGhpcy5fZ3JvdXBCeUZuO1xuICB9XG5cbiAgZ2V0IHJlb3JkZXJEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dzU3RhY2tcbiAgICAgIC5tYXAoKHJvdykgPT4gcm93LmdldFJlb3JkZXJEYXRhKCkpO1xuICB9XG5cbiAgcHVibGljIHNldEdyb3VwQ29uZmlnKGdyb3VwOiBGc0xpc3RHcm91cENvbmZpZykge1xuICAgIGlmIChncm91cCkge1xuICAgICAgdGhpcy5fZ3JvdXBCeUZuID0gZ3JvdXAuZ3JvdXBCeTtcbiAgICAgIHRoaXMuX2NvbXBhcmVCeUZuID0gZ3JvdXAuY29tcGFyZUJ5O1xuICAgICAgdGhpcy5fZm9vdGVyUm93Rm4gPSBncm91cC5mb290ZXIgfHwgKCgpID0+IGZhbHNlKTtcbiAgICAgIHRoaXMuX2luaXRpYWxFeHBhbmQgPSBncm91cC5pbml0aWFsRXhwYW5kID8/IHRydWU7XG5cbiAgICAgIC8vIGdyb3VwIG1vZGUgZW5hYmxlZCBieSBkZWZhdWx0XG4gICAgICB0aGlzLl9ncm91cEVuYWJsZWQgPSAoZ3JvdXAuZW5hYmxlZCAhPT0gdm9pZCAwKVxuICAgICAgICA/IGdyb3VwLmVuYWJsZWRcbiAgICAgICAgOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRBZGRpdGlvbmFsQ29uZmlncyhjb25maWdzOiB7IHNjcm9sbGFibGU6IGJvb2xlYW4sIGxvYWRNb3JlRW5hYmxlZDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5faW5maW5pdHlTY3JvbGxFbmFibGVkID0gY29uZmlncy5zY3JvbGxhYmxlO1xuICAgIHRoaXMuX2xvYWRNb3JlRW5hYmxlZCA9IGNvbmZpZ3MubG9hZE1vcmVFbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvd3Mgd2hhdCB3YXMgcmVjZWl2ZWQgZnJvbSBmZXRjaCBmdW5jdGlvblxuICAgKiBAcGFyYW0gcm93c1xuICAgKi9cbiAgcHVibGljIHNldFJvd3NGcm9tUmVzcG9uc2Uocm93czogYW55W10pIHtcbiAgICBpZiAodGhpcy5faW5maW5pdHlTY3JvbGxFbmFibGVkKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuX29wZXJhdGlvbikge1xuICAgICAgICBjYXNlIEZzTGlzdFN0YXRlLkZpbHRlcjpcbiAgICAgICAgY2FzZSBGc0xpc3RTdGF0ZS5SZWxvYWQ6XG4gICAgICAgIGNhc2UgRnNMaXN0U3RhdGUuU29ydDoge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVJvd3NTdGFjayhyb3dzKTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgdGhpcy5fZXh0ZW5kUm93c1N0YWNrKHJvd3MpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlbW90ZVJvd3NDaGFuZ2UkLm5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9vcGVyYXRpb24gPT09IEZzTGlzdFN0YXRlLkxvYWRNb3JlIHx8XG4gICAgICAgICh0aGlzLl9vcGVyYXRpb24gPT09IEZzTGlzdFN0YXRlLlBhZ2VDaGFuZ2UgJiYgdGhpcy5fbG9hZE1vcmVFbmFibGVkKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2V4dGVuZFJvd3NTdGFjayhyb3dzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVJvd3NTdGFjayhyb3dzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9vcGVyYXRpb24gPSBGc0xpc3RTdGF0ZS5JZGxlO1xuXG4gICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY3VycmVudCBvcGVyYXRpb24gZm9yIGxpc3QgZGF0YSBmbG93XG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNldE9wZXJhdGlvbih2YWx1ZTogRnNMaXN0U3RhdGUpIHtcbiAgICB0aGlzLl9vcGVyYXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgcm93cyBmcm9tIHZpc2libGVcbiAgICovXG4gIHB1YmxpYyBjbGVhclJvd3MoKSB7XG4gICAgdGhpcy52aXNpYmxlUm93cyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgZGF0YSBmb3Igc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gdGFyZ2V0Um93XG4gICAqIEBwYXJhbSB0cmFja0J5XG4gICAqL1xuICBwdWJsaWMgcmVwbGFjZURhdGEoXG4gICAgdGFyZ2V0Um93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG4gICkge1xuICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5fcm93c1N0YWNrLmZpbmRJbmRleCgobGlzdFJvdykgPT4ge1xuICAgICAgcmV0dXJuIHRyYWNrQnkobGlzdFJvdy5kYXRhLCB0YXJnZXRSb3cpO1xuICAgIH0pO1xuXG4gICAgaWYgKHJvd0luZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuX3Jvd3NTdGFja1tyb3dJbmRleF0gPSBuZXcgUm93KFxuICAgICAgICB0YXJnZXRSb3csXG4gICAgICAgIFJvd1R5cGUuU2ltcGxlLFxuICAgICAgICB7IGluaXRpYWxFeHBhbmQ6IHRoaXMuX2luaXRpYWxFeHBhbmQgfVxuICAgICAgKTtcblxuICAgICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZGF0YSBmb3Igc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gcm93c1xuICAgKiBAcGFyYW0gdHJhY2tCeVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICBsZXQgdXBkYXRlU3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICByb3dzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlUm93KGl0ZW0sIHRyYWNrQnkpKSB7XG4gICAgICAgICAgdXBkYXRlU3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuXG4gICAgICByZXR1cm4gdXBkYXRlU3VjY2VzcztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHRoaXMudXBkYXRlUm93KHJvd3MsIHRyYWNrQnkpO1xuXG4gICAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuXG4gICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRhdGEgZm9yIHNwZWNpZmllZCByb3dcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHB1YmxpYyByZW1vdmVEYXRhKGRhdGE6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSB8IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlbW92ZWRSb3dzID0gW107XG5cbiAgICBjb25zdCBkZWZhdWx0VHJhY2tCeSA9IChyb3csIHRhcmdldCkgPT4ge1xuICAgICAgcmV0dXJuIHJvdyA9PT0gdGFyZ2V0O1xuICAgIH07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgLy9cbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICByZW1vdmVkUm93cy5wdXNoKC4uLnRoaXMucmVtb3ZlUm93KGl0ZW0sIGRlZmF1bHRUcmFja0J5KSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24oZGF0YSkpIHtcbiAgICAgIHJlbW92ZWRSb3dzLnB1c2goLi4udGhpcy5yZW1vdmVSb3cobnVsbCwgKGRhdGEgYXMgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgIHJlbW92ZWRSb3dzLnB1c2goLi4udGhpcy5yZW1vdmVSb3coZGF0YSwgZGVmYXVsdFRyYWNrQnkpKTtcbiAgICB9XG5cbiAgICBpZiAocmVtb3ZlZFJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcblxuICAgICAgdGhpcy5fcm93c1JlbW92ZWQkLm5leHQocmVtb3ZlZFJvd3MpXG4gICAgfVxuXG4gICAgcmV0dXJuICEhcmVtb3ZlZFJvd3MubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIHN3YXBSb3dzKHJvdzEsIHJvdzIpIHtcbiAgICBsZXQgdG1wRWw7XG4gICAgY29uc3Qgcm93c1N0YWNrID0gdGhpcy5fcm93c1N0YWNrO1xuICAgIGNvbnN0IHJvdzFHbG9iYWxJbmRleCA9IHJvd3NTdGFjay5pbmRleE9mKHJvdzEpO1xuICAgIGNvbnN0IHJvdzJHbG9iYWxJbmRleCA9IHJvd3NTdGFjay5pbmRleE9mKHJvdzIpO1xuXG4gICAgdG1wRWwgPSByb3dzU3RhY2tbcm93MUdsb2JhbEluZGV4XTtcbiAgICByb3dzU3RhY2tbcm93MUdsb2JhbEluZGV4XSA9IHJvd3NTdGFja1tyb3cyR2xvYmFsSW5kZXhdO1xuICAgIHJvd3NTdGFja1tyb3cyR2xvYmFsSW5kZXhdID0gdG1wRWw7XG5cbiAgICB0aGlzLl9yb3dzU3RhY2sgPSBbIC4uLnJvd3NTdGFjayBdO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveVJvd3NTdGFjaygpO1xuICAgIHRoaXMuX3N0b3JlLmNsZWFyKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVSb3dHcm91cChyb3dEYXRhKSB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy52aXNpYmxlUm93cy5maW5kKCh2aXNpYmxlUm93KSA9PiB2aXNpYmxlUm93LmRhdGEgPT09IHJvd0RhdGEgKTtcbiAgICByb3cudG9nZ2xlUm93RXhwYW5kU3RhdHVzKCk7XG5cbiAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlUm93c1N0YWNrKHJvd3MpIHtcblxuICAgIHRoaXMuX2Rlc3Ryb3lSb3dzU3RhY2soKTtcblxuICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgdGhpcy5fc3RvcmUuY2xlYXIoKTtcbiAgICAgIHRoaXMuX3Jvd3NTdGFjayA9IFsuLi50aGlzLmdyb3VwUm93c0J5KHJvd3MpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93cyA9IHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3coXG4gICAgICAgICAgcm93LFxuICAgICAgICAgIFJvd1R5cGUuU2ltcGxlLFxuICAgICAgICAgIHsgaW5pdGlhbEV4cGFuZDogdGhpcy5faW5pdGlhbEV4cGFuZCB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4ucm93c107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZXh0ZW5kUm93c1N0YWNrKHJvd3MpIHtcbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3Jvd3NTdGFjayA9IFsuLi50aGlzLmdyb3VwUm93c0J5KHJvd3MpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93cyA9IHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3coXG4gICAgICAgICAgcm93LFxuICAgICAgICAgIFJvd1R5cGUuU2ltcGxlLFxuICAgICAgICAgIHsgaW5pdGlhbEV4cGFuZDogdGhpcy5faW5pdGlhbEV4cGFuZCB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4udGhpcy5fcm93c1N0YWNrLCAuLi5yb3dzXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95Um93c1N0YWNrKCkge1xuICAgIHRoaXMuX3Jvd3NTdGFjay5mb3JFYWNoKChyb3cpID0+IHJvdy5kZXN0cm95KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmlzaWJsZVJvd3MoKSB7XG4gICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuX3Jvd3NTdGFja1xuICAgICAgLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgIHJldHVybiAoIXJvdy5pc0NoaWxkICYmICFyb3cuaXNHcm91cEZvb3RlcikgfHwgcm93LnZpc2libGU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUm93KFxuICAgIHRhcmdldFJvdzogRnNMaXN0QWJzdHJhY3RSb3csXG4gICAgdHJhY2tCeT86IChsaXN0Um93OiBGc0xpc3RBYnN0cmFjdFJvdywgdGFyZ2V0Um93PzogRnNMaXN0QWJzdHJhY3RSb3cpID0+IGJvb2xlYW4pIHtcblxuICAgIGlmICh0cmFja0J5ID09PSB2b2lkIDApIHtcbiAgICAgIHRyYWNrQnkgPSAocm93LCB0YXJnZXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHJvdyA9PT0gdGFyZ2V0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEluZGV4ID0gdGhpcy5fcm93c1N0YWNrLmZpbmRJbmRleCgobGlzdFJvdykgPT4gdHJhY2tCeShsaXN0Um93LmRhdGEsIHRhcmdldFJvdykpO1xuXG4gICAgaWYgKHRhcmdldEluZGV4ICE9PSAtMSkge1xuICAgICAgY29uc3QgdXBkYXRlVGFyZ2V0ID0gdGhpcy5fcm93c1N0YWNrW3RhcmdldEluZGV4XTtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgdXBkYXRlVGFyZ2V0LmRhdGEsIHRhcmdldFJvdyk7XG5cbiAgICAgIHRoaXMuX3Jvd3NTdGFja1t0YXJnZXRJbmRleF0gPSBuZXcgUm93KFxuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgdXBkYXRlVGFyZ2V0LnR5cGUsXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJlbnQ6IHVwZGF0ZVRhcmdldC5wYXJlbnQsXG4gICAgICAgICAgaW5pdGlhbEV4cGFuZDogdXBkYXRlVGFyZ2V0LmV4cGFuZGVkLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHJvdyBmcm9tXG4gICAqIEBwYXJhbSB0YXJnZXRSb3dcbiAgICogQHBhcmFtIHRyYWNrQnlcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlUm93KFxuICAgIHRhcmdldFJvdzogRnNMaXN0QWJzdHJhY3RSb3cgfCBudWxsLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbiAgKSB7XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5fcm93c1N0YWNrO1xuICAgIGNvbnN0IHJlbW92ZWRSb3dzID0gW107XG5cbiAgICByb3dzLmZvckVhY2goKGxpc3RSb3csIGluZGV4KSA9PiB7XG4gICAgICBpZiAodHJhY2tCeShsaXN0Um93LmRhdGEsIHRhcmdldFJvdykpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZFJvdyA9IHJvd3Muc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICByZW1vdmVkUm93cy5wdXNoKHJlbW92ZWRSb3cpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlbW92ZWRSb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IGV4aXN0aW5nIHJvd3MgYnkgZ3JvdXBzIGFuZCBzdG9yZSB0aGVtIGZvciBmdXR1cmUgdXNlXG4gICAqL1xuICBwcml2YXRlIGdyb3VwUm93c0J5KHJvd3MpIHtcbiAgICBpZiAoIXRoaXMuX2dyb3VwQnlGbiB8fCAhdGhpcy5fY29tcGFyZUJ5Rm4pIHsgcmV0dXJuIHJvd3MgfVxuXG4gICAgbGV0IGdyb3VwUm93czogR3JvdXBSb3dbXSA9IFtdO1xuICAgIGNvbnN0IGZvb3RlclJvd3MgPSBuZXcgTWFwKCk7XG5cbiAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgY29uc3QgbWFpbkdyb3VwID0gdGhpcy5fZ3JvdXBCeUZuKHJvdyk7XG4gICAgICBjb25zdCBtYWluR3JvdXBLZXkgPSB0aGlzLl9jb21wYXJlQnlGbihtYWluR3JvdXApO1xuXG4gICAgICBpZiAoIXRoaXMuX3N0b3JlLmhhcyhtYWluR3JvdXBLZXkpKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdyb3VwUm93KFxuICAgICAgICAgIG1haW5Hcm91cCxcbiAgICAgICAgICB0aGlzLl9pbml0aWFsRXhwYW5kLFxuICAgICAgICApO1xuXG4gICAgICAgIGdyb3VwLmluZGV4ID0gZ3JvdXBSb3dzLmxlbmd0aDtcbiAgICAgICAgZ3JvdXBSb3dzLnB1c2goZ3JvdXApO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkUm93ID0gbmV3IENoaWxkUm93KHJvdywgZ3JvdXApO1xuXG4gICAgICAgIHRoaXMuX3N0b3JlLnNldChtYWluR3JvdXBLZXksIGdyb3VwKTtcbiAgICAgICAgZ3JvdXAuY2hpbGRyZW4ucHVzaChjaGlsZFJvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuX3N0b3JlLmdldChtYWluR3JvdXBLZXkpO1xuICAgICAgICBjb25zdCBjaGlsZFJvdyA9IG5ldyBDaGlsZFJvdyhyb3csIGdyb3VwKTtcblxuICAgICAgICBncm91cC5jaGlsZHJlbi5wdXNoKGNoaWxkUm93KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGdyb3VwUm93cy5mb3JFYWNoKChncm91cFJvdykgPT4ge1xuICAgICAgY29uc3QgZm9vdGVySW5kZXggPSBncm91cFJvdy5jaGlsZHJlblxuICAgICAgICAuZmluZEluZGV4KChyb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZm9vdGVyUm93Rm4ocm93LmRhdGEsIHtcbiAgICAgICAgICAgIC4uLmdyb3VwUm93LmRhdGEsXG4gICAgICAgICAgICBjaGlsZHJlbjogZ3JvdXBSb3cuY2hpbGRyZW5EYXRhXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBpZihmb290ZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZm9vdGVyUm93ID0gZ3JvdXBSb3cuY2hpbGRyZW4uc2xpY2UoZm9vdGVySW5kZXgsIGZvb3RlckluZGV4ICsgMSlbMF07XG4gICAgICAgIGdyb3VwUm93LmNoaWxkcmVuLnB1c2gobmV3IEdyb3VwRm9vdGVyUm93KGZvb3RlclJvdy5kYXRhLCBncm91cFJvdykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3RvcmUudmFsdWVzKCkpXG4gICAgICAucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uaXNHcm91cCkge1xuICAgICAgICAgIGFjYy5wdXNoKGl0ZW0sIC4uLml0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjYy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKTtcbiAgfVxufVxuIl19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2RhdGEtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU1qRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2hFLE1BQU0sT0FBTyxjQUFjO0lBdUJ6QjtRQXJCaUIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVsRCxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQVUsRUFBRSxDQUFDO1FBTXZCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBS3RCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFUixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVsQyxDQUFDO0lBRWhCLElBQUksWUFBWTtRQUNk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QUNoQjtZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc09iamVjdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IEZzTGlzdFN0YXRlIH0gZnJvbSAnLi4vZW51bXMvc3RhdGUuZW51bSc7XG5pbXBvcnQgeyBSb3dUeXBlIH0gZnJvbSAnLi4vZW51bXMvcm93LXR5cGUuZW51bSc7XG5pbXBvcnQge1xuICBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgRnNMaXN0R3JvdXBDb25maWcsXG4gIEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGblxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyb3VwUm93IH0gZnJvbSAnLi4vbW9kZWxzL3Jvdy9ncm91cC1yb3cnO1xuaW1wb3J0IHsgQ2hpbGRSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93L2NoaWxkLXJvdyc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93JztcbmltcG9ydCB7IEdyb3VwRm9vdGVyUm93IH0gZnJvbSAnLi4vbW9kZWxzL3Jvdy9ncm91cC1mb290ZXItcm93JztcblxuXG5leHBvcnQgY2xhc3MgRGF0YUNvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Zpc2libGVSb3dzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm93c1JlbW92ZWQkID0gbmV3IFN1YmplY3Q8Um93W10+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbW90ZVJvd3NDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9zdG9yZSA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBfcm93c1N0YWNrOiBSb3dbXSA9IFtdO1xuICBwcml2YXRlIF9vcGVyYXRpb246IEZzTGlzdFN0YXRlO1xuXG4gIHByaXZhdGUgX2dyb3VwQnlGbjogKHJvdykgPT4gYW55W107XG4gIHByaXZhdGUgX2Zvb3RlclJvd0ZuOiAocm93LCBncm91cCkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBfY29tcGFyZUJ5Rm46IChncm91cCkgPT4gYW55O1xuICBwcml2YXRlIF9pbml0aWFsRXhwYW5kID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZ3JvdXBFbmFibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaW5maW5pdHlTY3JvbGxFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIF9sb2FkTW9yZUVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfaGFzRGF0YSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0IHZpc2libGVSb3dzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZVJvd3MkO1xuICB9XG5cbiAgZ2V0IHZpc2libGVSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlUm93cyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlUm93c0RhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZVJvd3MubWFwKChyb3cpID0+IHJvdy5kYXRhKTtcbiAgfVxuXG4gIGdldCByb3dzU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NTdGFjay5zbGljZSgpO1xuICB9XG5cbiAgZ2V0IGdyb3VwRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvdXBFbmFibGVkO1xuICB9XG5cbiAgc2V0IGdyb3VwRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2dyb3VwRW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlbW90ZVJvd3NDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZW1vdGVSb3dzQ2hhbmdlJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHJvd3NSZW1vdmVkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93c1JlbW92ZWQkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICk7XG4gIH1cblxuICBnZXQgaGFzRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRGF0YTtcbiAgfVxuXG4gIGdldCBvcGVyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGlvbjtcbiAgfVxuXG4gIHNldCB2aXNpYmxlUm93cyh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl92aXNpYmxlUm93cyQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5faGFzRGF0YSA9IHRoaXMudmlzaWJsZVJvd3MubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlUm93c0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVSb3dzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNHcm91cHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVCeUZuICYmIHRoaXMuX2dyb3VwQnlGbjtcbiAgfVxuXG4gIGdldCByZW9yZGVyRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93c1N0YWNrXG4gICAgICAubWFwKChyb3cpID0+IHJvdy5nZXRSZW9yZGVyRGF0YSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRHcm91cENvbmZpZyhncm91cDogRnNMaXN0R3JvdXBDb25maWcpIHtcbiAgICBpZiAoZ3JvdXApIHtcbiAgICAgIHRoaXMuX2dyb3VwQnlGbiA9IGdyb3VwLmdyb3VwQnk7XG4gICAgICB0aGlzLl9jb21wYXJlQnlGbiA9IGdyb3VwLmNvbXBhcmVCeTtcbiAgICAgIHRoaXMuX2Zvb3RlclJvd0ZuID0gZ3JvdXAuZm9vdGVyIHx8ICgoKSA9PiBmYWxzZSk7XG4gICAgICB0aGlzLl9pbml0aWFsRXhwYW5kID0gZ3JvdXAuaW5pdGlhbEV4cGFuZCA/PyB0cnVlO1xuXG4gICAgICAvLyBncm91cCBtb2RlIGVuYWJsZWQgYnkgZGVmYXVsdFxuICAgICAgdGhpcy5fZ3JvdXBFbmFibGVkID0gKGdyb3VwLmVuYWJsZWQgIT09IHZvaWQgMClcbiAgICAgICAgPyBncm91cC5lbmFibGVkXG4gICAgICAgIDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0QWRkaXRpb25hbENvbmZpZ3MoY29uZmlnczogeyBzY3JvbGxhYmxlOiBib29sZWFuLCBsb2FkTW9yZUVuYWJsZWQ6IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuX2luZmluaXR5U2Nyb2xsRW5hYmxlZCA9IGNvbmZpZ3Muc2Nyb2xsYWJsZTtcbiAgICB0aGlzLl9sb2FkTW9yZUVuYWJsZWQgPSBjb25maWdzLmxvYWRNb3JlRW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3dzIHdoYXQgd2FzIHJlY2VpdmVkIGZyb20gZmV0Y2ggZnVuY3Rpb25cbiAgICogQHBhcmFtIHJvd3NcbiAgICovXG4gIHB1YmxpYyBzZXRSb3dzRnJvbVJlc3BvbnNlKHJvd3M6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuX2luZmluaXR5U2Nyb2xsRW5hYmxlZCkge1xuICAgICAgc3dpdGNoICh0aGlzLl9vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBGc0xpc3RTdGF0ZS5GaWx0ZXI6XG4gICAgICAgIGNhc2UgRnNMaXN0U3RhdGUuUmVsb2FkOlxuICAgICAgICBjYXNlIEZzTGlzdFN0YXRlLlNvcnQ6IHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVSb3dzU3RhY2socm93cyk7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRoaXMuX2V4dGVuZFJvd3NTdGFjayhyb3dzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZW1vdGVSb3dzQ2hhbmdlJC5uZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fb3BlcmF0aW9uID09PSBGc0xpc3RTdGF0ZS5Mb2FkTW9yZSB8fFxuICAgICAgICAodGhpcy5fb3BlcmF0aW9uID09PSBGc0xpc3RTdGF0ZS5QYWdlQ2hhbmdlICYmIHRoaXMuX2xvYWRNb3JlRW5hYmxlZClcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9leHRlbmRSb3dzU3RhY2socm93cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl91cGRhdGVSb3dzU3RhY2socm93cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fb3BlcmF0aW9uID0gRnNMaXN0U3RhdGUuSWRsZTtcblxuICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGN1cnJlbnQgb3BlcmF0aW9uIGZvciBsaXN0IGRhdGEgZmxvd1xuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzZXRPcGVyYXRpb24odmFsdWU6IEZzTGlzdFN0YXRlKSB7XG4gICAgdGhpcy5fb3BlcmF0aW9uID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHJvd3MgZnJvbSB2aXNpYmxlXG4gICAqL1xuICBwdWJsaWMgY2xlYXJSb3dzKCkge1xuICAgIHRoaXMudmlzaWJsZVJvd3MgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGRhdGEgZm9yIHNwZWNpZmllZCByb3dcbiAgICogQHBhcmFtIHRhcmdldFJvd1xuICAgKiBAcGFyYW0gdHJhY2tCeVxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VEYXRhKFxuICAgIHRhcmdldFJvdzogRnNMaXN0QWJzdHJhY3RSb3csXG4gICAgdHJhY2tCeT86IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGblxuICApIHtcbiAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuX3Jvd3NTdGFjay5maW5kSW5kZXgoKGxpc3RSb3cpID0+IHtcbiAgICAgIHJldHVybiB0cmFja0J5KGxpc3RSb3cuZGF0YSwgdGFyZ2V0Um93KTtcbiAgICB9KTtcblxuICAgIGlmIChyb3dJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLl9yb3dzU3RhY2tbcm93SW5kZXhdID0gbmV3IFJvdyhcbiAgICAgICAgdGFyZ2V0Um93LFxuICAgICAgICBSb3dUeXBlLlNpbXBsZSxcbiAgICAgICAgeyBpbml0aWFsRXhwYW5kOiB0aGlzLl9pbml0aWFsRXhwYW5kIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGRhdGEgZm9yIHNwZWNpZmllZCByb3dcbiAgICogQHBhcmFtIHJvd3NcbiAgICogQHBhcmFtIHRyYWNrQnlcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVEYXRhKFxuICAgIHJvd3M6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgbGV0IHVwZGF0ZVN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgcm93cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVJvdyhpdGVtLCB0cmFja0J5KSkge1xuICAgICAgICAgIHVwZGF0ZVN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcblxuICAgICAgcmV0dXJuIHVwZGF0ZVN1Y2Nlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLnVwZGF0ZVJvdyhyb3dzLCB0cmFja0J5KTtcblxuICAgICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcblxuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBkYXRhIGZvciBzcGVjaWZpZWQgcm93XG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRGF0YShkYXRhOiBGc0xpc3RBYnN0cmFjdFJvdyB8IEZzTGlzdEFic3RyYWN0Um93W10gfCBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4pOiBib29sZWFuIHtcbiAgICBjb25zdCByZW1vdmVkUm93cyA9IFtdO1xuXG4gICAgY29uc3QgZGVmYXVsdFRyYWNrQnkgPSAocm93LCB0YXJnZXQpID0+IHtcbiAgICAgIHJldHVybiByb3cgPT09IHRhcmdldDtcbiAgICB9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIC8vXG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgcmVtb3ZlZFJvd3MucHVzaCguLi50aGlzLnJlbW92ZVJvdyhpdGVtLCBkZWZhdWx0VHJhY2tCeSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKGRhdGEpKSB7XG4gICAgICByZW1vdmVkUm93cy5wdXNoKC4uLnRoaXMucmVtb3ZlUm93KG51bGwsIChkYXRhIGFzIEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbikpKTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICByZW1vdmVkUm93cy5wdXNoKC4uLnRoaXMucmVtb3ZlUm93KGRhdGEsIGRlZmF1bHRUcmFja0J5KSk7XG4gICAgfVxuXG4gICAgaWYgKHJlbW92ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG5cbiAgICAgIHRoaXMuX3Jvd3NSZW1vdmVkJC5uZXh0KHJlbW92ZWRSb3dzKVxuICAgIH1cblxuICAgIHJldHVybiAhIXJlbW92ZWRSb3dzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBzd2FwUm93cyhyb3cxLCByb3cyLCBzZWxlY3RlZFJvd3M/OiBSb3dbXSwgaXNNdWx0aXBsZURyYWcgPSBmYWxzZSkge1xuICAgIGxldCB0bXBFbDtcbiAgICBjb25zdCByb3dzU3RhY2sgPSB0aGlzLl9yb3dzU3RhY2s7XG4gICAgY29uc3Qgcm93MUdsb2JhbEluZGV4ID0gcm93c1N0YWNrLmluZGV4T2Yocm93MSk7XG4gICAgY29uc3Qgcm93Mkdsb2JhbEluZGV4ID0gcm93c1N0YWNrLmluZGV4T2Yocm93Mik7XG5cbiAgICB0bXBFbCA9IHJvd3NTdGFja1tyb3cxR2xvYmFsSW5kZXhdO1xuICAgIHJvd3NTdGFja1tyb3cxR2xvYmFsSW5kZXhdID0gcm93c1N0YWNrW3JvdzJHbG9iYWxJbmRleF07XG4gICAgcm93c1N0YWNrW3JvdzJHbG9iYWxJbmRleF0gPSB0bXBFbDtcblxuICAgIGlmIChpc011bHRpcGxlRHJhZyAmJiBBcnJheS5pc0FycmF5KHNlbGVjdGVkUm93cykpIHtcbiAgICAgIGlmICghc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKHJvdzEpKSB7XG4gICAgICAgIHNlbGVjdGVkUm93cyA9IFtyb3cxLCAuLi5zZWxlY3RlZFJvd3NdO1xuICAgICAgfVxuXG4gICAgICBzZWxlY3RlZFJvd3NcbiAgICAgICAgLmZpbHRlcigoc2VsZWN0ZWRSb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3cgIT09IHJvdzE7XG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKChzZWxlY3RlZFJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkeCA9IHJvd3NTdGFjay5pbmRleE9mKHNlbGVjdGVkUm93KTtcbiAgICAgICAgICByb3dzU3RhY2suc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbmRleFRvSW5zZXJ0QWZ0ZXIgPSByb3dzU3RhY2suaW5kZXhPZih0bXBFbCk7XG5cbiAgICAgIHJvd3NTdGFjay5zcGxpY2UoaW5kZXhUb0luc2VydEFmdGVyLCAxKTtcblxuICAgICAgc2VsZWN0ZWRSb3dzLmZvckVhY2goKHNlbGVjdGVkUm93LCBvZmZzZXQpID0+IHtcbiAgICAgICAgcm93c1N0YWNrLnNwbGljZShpbmRleFRvSW5zZXJ0QWZ0ZXIgKyBvZmZzZXQsIDAsIHNlbGVjdGVkUm93KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3Jvd3NTdGFjayA9IFsgLi4ucm93c1N0YWNrIF07XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95Um93c1N0YWNrKCk7XG4gICAgdGhpcy5fc3RvcmUuY2xlYXIoKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJvd0dyb3VwKHJvd0RhdGEpIHtcbiAgICBjb25zdCByb3cgPSB0aGlzLnZpc2libGVSb3dzLmZpbmQoKHZpc2libGVSb3cpID0+IHZpc2libGVSb3cuZGF0YSA9PT0gcm93RGF0YSApO1xuICAgIHJvdy50b2dnbGVSb3dFeHBhbmRTdGF0dXMoKTtcblxuICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG4gIH1cblxuICBwdWJsaWMgZmluaXNoUmVvcmRlcigpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlUm93c1N0YWNrKHJvd3MpIHtcbiAgICB0aGlzLl9kZXN0cm95Um93c1N0YWNrKCk7XG5cbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3N0b3JlLmNsZWFyKCk7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4udGhpcy5ncm91cFJvd3NCeShyb3dzKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUm93KFxuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBSb3dUeXBlLlNpbXBsZSxcbiAgICAgICAgICB7IGluaXRpYWxFeHBhbmQ6IHRoaXMuX2luaXRpYWxFeHBhbmQgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcm93c1N0YWNrID0gWy4uLnJvd3NdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2V4dGVuZFJvd3NTdGFjayhyb3dzKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4udGhpcy5ncm91cFJvd3NCeShyb3dzKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUm93KFxuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBSb3dUeXBlLlNpbXBsZSxcbiAgICAgICAgICB7IGluaXRpYWxFeHBhbmQ6IHRoaXMuX2luaXRpYWxFeHBhbmQgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcm93c1N0YWNrID0gWy4uLnRoaXMuX3Jvd3NTdGFjaywgLi4ucm93c107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveVJvd3NTdGFjaygpIHtcbiAgICB0aGlzLl9yb3dzU3RhY2suZm9yRWFjaCgocm93KSA9PiByb3cuZGVzdHJveSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZpc2libGVSb3dzKCkge1xuICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLl9yb3dzU3RhY2tcbiAgICAgIC5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICByZXR1cm4gKCFyb3cuaXNDaGlsZCAmJiAhcm93LmlzR3JvdXBGb290ZXIpIHx8IHJvdy52aXNpYmxlO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJvdyhcbiAgICB0YXJnZXRSb3c6IEZzTGlzdEFic3RyYWN0Um93LFxuICAgIHRyYWNrQnk/OiAobGlzdFJvdzogRnNMaXN0QWJzdHJhY3RSb3csIHRhcmdldFJvdz86IEZzTGlzdEFic3RyYWN0Um93KSA9PiBib29sZWFuKSB7XG5cbiAgICBpZiAodHJhY2tCeSA9PT0gdm9pZCAwKSB7XG4gICAgICB0cmFja0J5ID0gKHJvdywgdGFyZ2V0KSA9PiB7XG4gICAgICAgIHJldHVybiByb3cgPT09IHRhcmdldDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IHRoaXMuX3Jvd3NTdGFjay5maW5kSW5kZXgoKGxpc3RSb3cpID0+IHRyYWNrQnkobGlzdFJvdy5kYXRhLCB0YXJnZXRSb3cpKTtcblxuICAgIGlmICh0YXJnZXRJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVRhcmdldCA9IHRoaXMuX3Jvd3NTdGFja1t0YXJnZXRJbmRleF07XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIHVwZGF0ZVRhcmdldC5kYXRhLCB0YXJnZXRSb3cpO1xuXG4gICAgICB0aGlzLl9yb3dzU3RhY2tbdGFyZ2V0SW5kZXhdID0gbmV3IFJvdyhcbiAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgIHVwZGF0ZVRhcmdldC50eXBlLFxuICAgICAgICB7XG4gICAgICAgICAgcGFyZW50OiB1cGRhdGVUYXJnZXQucGFyZW50LFxuICAgICAgICAgIGluaXRpYWxFeHBhbmQ6IHVwZGF0ZVRhcmdldC5leHBhbmRlZCxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSByb3cgZnJvbVxuICAgKiBAcGFyYW0gdGFyZ2V0Um93XG4gICAqIEBwYXJhbSB0cmFja0J5XG4gICAqL1xuICBwcml2YXRlIHJlbW92ZVJvdyhcbiAgICB0YXJnZXRSb3c6IEZzTGlzdEFic3RyYWN0Um93IHwgbnVsbCxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG4gICkge1xuXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuX3Jvd3NTdGFjaztcbiAgICBjb25zdCByZW1vdmVkUm93cyA9IFtdO1xuXG4gICAgcm93cy5mb3JFYWNoKChsaXN0Um93LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHRyYWNrQnkobGlzdFJvdy5kYXRhLCB0YXJnZXRSb3cpKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRSb3cgPSByb3dzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgcmVtb3ZlZFJvd3MucHVzaChyZW1vdmVkUm93KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZW1vdmVkUm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCBleGlzdGluZyByb3dzIGJ5IGdyb3VwcyBhbmQgc3RvcmUgdGhlbSBmb3IgZnV0dXJlIHVzZVxuICAgKi9cbiAgcHJpdmF0ZSBncm91cFJvd3NCeShyb3dzKSB7XG4gICAgaWYgKCF0aGlzLl9ncm91cEJ5Rm4gfHwgIXRoaXMuX2NvbXBhcmVCeUZuKSB7IHJldHVybiByb3dzIH1cblxuICAgIGxldCBncm91cFJvd3M6IEdyb3VwUm93W10gPSBbXTtcbiAgICBjb25zdCBmb290ZXJSb3dzID0gbmV3IE1hcCgpO1xuXG4gICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IG1haW5Hcm91cCA9IHRoaXMuX2dyb3VwQnlGbihyb3cpO1xuICAgICAgY29uc3QgbWFpbkdyb3VwS2V5ID0gdGhpcy5fY29tcGFyZUJ5Rm4obWFpbkdyb3VwKTtcblxuICAgICAgaWYgKCF0aGlzLl9zdG9yZS5oYXMobWFpbkdyb3VwS2V5KSkge1xuICAgICAgICBjb25zdCBncm91cCA9IG5ldyBHcm91cFJvdyhcbiAgICAgICAgICBtYWluR3JvdXAsXG4gICAgICAgICAgdGhpcy5faW5pdGlhbEV4cGFuZCxcbiAgICAgICAgKTtcblxuICAgICAgICBncm91cC5pbmRleCA9IGdyb3VwUm93cy5sZW5ndGg7XG4gICAgICAgIGdyb3VwUm93cy5wdXNoKGdyb3VwKTtcblxuICAgICAgICBjb25zdCBjaGlsZFJvdyA9IG5ldyBDaGlsZFJvdyhyb3csIGdyb3VwKTtcblxuICAgICAgICB0aGlzLl9zdG9yZS5zZXQobWFpbkdyb3VwS2V5LCBncm91cCk7XG4gICAgICAgIGdyb3VwLmNoaWxkcmVuLnB1c2goY2hpbGRSb3cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLl9zdG9yZS5nZXQobWFpbkdyb3VwS2V5KTtcbiAgICAgICAgY29uc3QgY2hpbGRSb3cgPSBuZXcgQ2hpbGRSb3cocm93LCBncm91cCk7XG5cbiAgICAgICAgZ3JvdXAuY2hpbGRyZW4ucHVzaChjaGlsZFJvdyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBncm91cFJvd3MuZm9yRWFjaCgoZ3JvdXBSb3cpID0+IHtcbiAgICAgIGNvbnN0IGZvb3RlckluZGV4ID0gZ3JvdXBSb3cuY2hpbGRyZW5cbiAgICAgICAgLmZpbmRJbmRleCgocm93KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvb3RlclJvd0ZuKHJvdy5kYXRhLCB7XG4gICAgICAgICAgICAuLi5ncm91cFJvdy5kYXRhLFxuICAgICAgICAgICAgY2hpbGRyZW46IGdyb3VwUm93LmNoaWxkcmVuRGF0YVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgaWYoZm9vdGVySW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGZvb3RlclJvdyA9IGdyb3VwUm93LmNoaWxkcmVuLnNsaWNlKGZvb3RlckluZGV4LCBmb290ZXJJbmRleCArIDEpWzBdO1xuICAgICAgICBncm91cFJvdy5jaGlsZHJlbi5wdXNoKG5ldyBHcm91cEZvb3RlclJvdyhmb290ZXJSb3cuZGF0YSwgZ3JvdXBSb3cpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3N0b3JlLnZhbHVlcygpKVxuICAgICAgLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmlzR3JvdXApIHtcbiAgICAgICAgICBhY2MucHVzaChpdGVtLCAuLi5pdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2MucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -31,6 +31,9 @@ export class ReorderController {
|
|
|
31
31
|
get dataController() {
|
|
32
32
|
return this._dataController;
|
|
33
33
|
}
|
|
34
|
+
get selectionController() {
|
|
35
|
+
return this._selectionController;
|
|
36
|
+
}
|
|
34
37
|
get manualReorderActivated$() {
|
|
35
38
|
return this._manualReorderActivated$.asObservable();
|
|
36
39
|
}
|
|
@@ -59,7 +62,7 @@ export class ReorderController {
|
|
|
59
62
|
get reorderDisabled() {
|
|
60
63
|
return this._reorderDisabled$.getValue();
|
|
61
64
|
}
|
|
62
|
-
initWithConfig(data, dataController, actionsController) {
|
|
65
|
+
initWithConfig(data, dataController, actionsController, selectionController) {
|
|
63
66
|
var _a, _b;
|
|
64
67
|
if (!data) {
|
|
65
68
|
return;
|
|
@@ -74,12 +77,14 @@ export class ReorderController {
|
|
|
74
77
|
}
|
|
75
78
|
// this.strategy = data.strategy ?? ReorderStrategy.Manual;
|
|
76
79
|
this.label = data.label;
|
|
80
|
+
this.multiple = data.multiple;
|
|
77
81
|
this.startCallback = data.start;
|
|
78
82
|
this.movedCallback = data.moved;
|
|
79
83
|
this.doneCallback = data.done;
|
|
80
84
|
this.moveDropCallback = data.moveDrop;
|
|
81
85
|
this._dataController = dataController;
|
|
82
86
|
this._actionsController = actionsController;
|
|
87
|
+
this._selectionController = selectionController;
|
|
83
88
|
if (this.strategy === ReorderStrategy.Always) {
|
|
84
89
|
this.enableReorder();
|
|
85
90
|
}
|
|
@@ -175,4 +180,4 @@ ReorderController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
|
|
|
175
180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController, decorators: [{
|
|
176
181
|
type: Injectable
|
|
177
182
|
}], ctorParameters: function () { return []; } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFZbkYsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isa0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdELE1BQU0sT0FBTyxpQkFBaUI7SUF3QjVCO1FBUlEsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUUzQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixDQUFDO0lBRWhCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsT0FBTyxD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Q0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLGFBQXFCO1FBQ25ELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxhQUFhLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7OytHQTNOVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgRnNMaXN0UmVvcmRlckNvbmZpZyxcbiAgRnNMaXN0UmVvcmRlckRvbmVDYWxsYmFjayxcbiAgRnNMaXN0UmVvcmRlck1vdmVkQ2FsbGJhY2ssXG4gIEZzTGlzdFJlb3JkZXJNb3ZlSW5Hcm91cENhbGxiYWNrXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBEYXRhQ29udHJvbGxlciB9IGZyb20gJy4vZGF0YS1jb250cm9sbGVyJztcbmltcG9ydCB7IEFjdGlvbnNDb250cm9sbGVyIH0gZnJvbSAnLi9hY3Rpb25zLWNvbnRyb2xsZXInO1xuXG5leHBvcnQgZW51bSBSZW9yZGVyUG9zaXRpb24ge1xuICBMZWZ0ID0gJ2xlZnQnLFxuICBSaWdodCA9ICdyaWdodCcsXG59XG5cbmV4cG9ydCBlbnVtIFJlb3JkZXJTdHJhdGVneSB7XG4gIEFsd2F5cyA9ICdhbHdheXMnLFxuICBNYW51YWwgPSAnbWFudWFsJyxcbiAgQ3VzdG9tID0gJ2N1c3RvbScsXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZW9yZGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHN0YXJ0Q2FsbGJhY2s6ICgpID0+IHZvaWQgfCBPYnNlcnZhYmxlPHZvaWQ+O1xuICBwdWJsaWMgbW92ZWRDYWxsYmFjazogRnNMaXN0UmVvcmRlck1vdmVkQ2FsbGJhY2s7XG4gIHB1YmxpYyBkb25lQ2FsbGJhY2s6IEZzTGlzdFJlb3JkZXJEb25lQ2FsbGJhY2s7XG4gIHB1YmxpYyBtb3ZlRHJvcENhbGxiYWNrOiBGc0xpc3RSZW9yZGVyTW92ZUluR3JvdXBDYWxsYmFjaztcblxuICBwdWJsaWMgc3RhdHVzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgcHVibGljIG1lbnU6IGJvb2xlYW47XG4gIHB1YmxpYyBwb3NpdGlvbjogUmVvcmRlclBvc2l0aW9uO1xuICBwdWJsaWMgc3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneTtcblxuICBwcml2YXRlIF9kYXRhQ29udHJvbGxlcjogRGF0YUNvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2FjdGlvbnNDb250cm9sbGVyOiBBY3Rpb25zQ29udHJvbGxlcjtcblxuICBwcml2YXRlIF9lbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9tYW51YWxSZW9yZGVyQWN0aXZhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9yZW9yZGVyRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfbnVtYmVyT2ZBY3RpdmVGaWx0ZXJzID0gMDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZW5hYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2VuYWJsZWQkLm5leHQodmFsdWUpO1xuXG4gICAgdGhpcy5fbWFudWFsUmVvcmRlckFjdGl2YXRlZCQubmV4dCh0aGlzLmVuYWJsZWQgJiYgdGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFDb250cm9sbGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhQ29udHJvbGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFudWFsUmVvcmRlckFjdGl2YXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hbnVhbFJlb3JkZXJBY3RpdmF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYW51YWxSZW9yZGVyQWN0aXZhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tYW51YWxSZW9yZGVyQWN0aXZhdGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBsZWZ0UmVvcmRlckFjdGl2YXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWQgJiYgdGhpcy5wb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLkxlZnQ7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW5hYmxlZCAmJiB0aGlzLl9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPT09IDA7XG4gICAgICAgIH0pLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgpLFxuICAgICAgKVxuICB9XG5cbiAgcHVibGljIGdldCByaWdodFJlb3JkZXJBY3RpdmF0ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkICYmIHRoaXMucG9zaXRpb24gPT09IFJlb3JkZXJQb3NpdGlvbi5SaWdodDtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkICYmIHRoaXMuX251bWJlck9mQWN0aXZlRmlsdGVycyA9PT0gMDtcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlb3JkZXJEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlb3JkZXJEaXNhYmxlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlb3JkZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVvcmRlckRpc2FibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRXaXRoQ29uZmlnKGRhdGE6IEZzTGlzdFJlb3JkZXJDb25maWcsIGRhdGFDb250cm9sbGVyOiBEYXRhQ29udHJvbGxlciwgYWN0aW9uc0NvbnRyb2xsZXI6IEFjdGlvbnNDb250cm9sbGVyKSB7XG4gICAgaWYgKCFkYXRhKSB7IHJldHVybiB9XG5cbiAgICB0aGlzLm1lbnUgPSBkYXRhLm1lbnUgPz8gZmFsc2U7XG4gICAgdGhpcy5wb3NpdGlvbiA9IGRhdGEucG9zaXRpb24gPz8gUmVvcmRlclBvc2l0aW9uLkxlZnQ7XG5cbiAgICBpZiAoIWRhdGEuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc3RyYXRlZ3kgPSBSZW9yZGVyU3RyYXRlZ3kuQWx3YXlzO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnRvZ2dsZSkge1xuICAgICAgdGhpcy5zdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneS5NYW51YWxcbiAgICB9XG4gICAgLy8gdGhpcy5zdHJhdGVneSA9IGRhdGEuc3RyYXRlZ3kgPz8gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbDtcbiAgICB0aGlzLmxhYmVsID0gZGF0YS5sYWJlbDtcblxuICAgIHRoaXMuc3RhcnRDYWxsYmFjayA9IGRhdGEuc3RhcnQ7XG4gICAgdGhpcy5tb3ZlZENhbGxiYWNrID0gZGF0YS5tb3ZlZDtcbiAgICB0aGlzLmRvbmVDYWxsYmFjayA9IGRhdGEuZG9uZTtcbiAgICB0aGlzLm1vdmVEcm9wQ2FsbGJhY2sgPSBkYXRhLm1vdmVEcm9wO1xuXG4gICAgdGhpcy5fZGF0YUNvbnRyb2xsZXIgPSBkYXRhQ29udHJvbGxlcjtcbiAgICB0aGlzLl9hY3Rpb25zQ29udHJvbGxlciA9IGFjdGlvbnNDb250cm9sbGVyO1xuXG4gICAgaWYgKHRoaXMuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5BbHdheXMpIHtcbiAgICAgIHRoaXMuZW5hYmxlUmVvcmRlcigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCkge1xuICAgICAgYWN0aW9uc0NvbnRyb2xsZXIuYWRkUmVvcmRlckFjdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsIHx8ICdSZW9yZGVyJyxcbiAgICAgICAgICBtZW51OiB0aGlzLm1lbnUsXG4gICAgICAgICAgcHJpbWFyeTogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlcigpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGlzYWJsZWQ6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlb3JkZXJEaXNhYmxlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGFjdGlvbnNDb250cm9sbGVyLmFkZFJlb3JkZXJEb25lQWN0aW9uKHtcbiAgICAgICAgICBsYWJlbDogJ0RvbmUnLFxuICAgICAgICAgIHByaW1hcnk6IGZhbHNlLFxuICAgICAgICAgIGNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVSZW9yZGVyKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkaXNhYmxlZDogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVvcmRlckRpc2FibGVkO1xuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlUmVvcmRlcigpIHtcbiAgICBpZiAoKHRoaXMuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5NYW51YWwgfHwgdGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkN1c3RvbSkgJiYgdGhpcy5zdGFydENhbGxiYWNrKSB7XG4gICAgICBjb25zdCByZXR1cm5lZFZhbHVlID0gdGhpcy5zdGFydENhbGxiYWNrKCk7XG5cbiAgICAgIGlmIChyZXR1cm5lZFZhbHVlICYmIHJldHVybmVkVmFsdWUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZVJlb3JkZXJBY3Rpb24oKTtcblxuICAgICAgICByZXR1cm5lZFZhbHVlXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVJlb3JkZXJBY3Rpb24oKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlUmVvcmRlcigpIHtcbiAgICBpZiAodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCB8fCB0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuQ3VzdG9tKSB7XG4gICAgICBjb25zdCByZXR1cm5lZFZhbHVlID0gdGhpcy5yZW9yZGVyRmluaXNoZWQoKTtcblxuICAgICAgaWYgKHJldHVybmVkVmFsdWUgJiYgcmV0dXJuZWRWYWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUmVvcmRlckFjdGlvbigpO1xuXG4gICAgICAgIHJldHVybmVkVmFsdWVcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVJlb3JkZXJBY3Rpb24oKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRXhlYyBlbmQgY2FsbGJhY2tcbiAgICovXG4gIHB1YmxpYyByZW9yZGVyRmluaXNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZG9uZUNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb25lQ2FsbGJhY2sodGhpcy5fZGF0YUNvbnRyb2xsZXIucmVvcmRlckRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgcmVvcmRlciBhY3Rpb24gYW5kIHVwZGF0ZSBmaWx0ZXIgYWN0aW9ucyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIGVuYWJsZVJlb3JkZXJBY3Rpb24oKSB7XG4gICAgdGhpcy5fcmVvcmRlckRpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLl9hY3Rpb25zQ29udHJvbGxlci51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSByZW9yZGVyIGFjdGlvbiBhbmQgdXBkYXRlIGZpbHRlciBhY3Rpb25zIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZVJlb3JkZXJBY3Rpb24oKSB7XG4gICAgdGhpcy5fcmVvcmRlckRpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXROdW5iZXJPZkFjdGl2ZUZpbHRlcnMoYWN0aXZlRmlsdGVyczogbnVtYmVyKSB7XG4gICAgdGhpcy5fbnVtYmVyT2ZBY3RpdmVGaWx0ZXJzID0gYWN0aXZlRmlsdGVycztcblxuICAgIHRoaXMuZW5hYmxlZCA9IHRoaXMuZW5hYmxlZDtcbiAgfVxufVxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFhbkYsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isa0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdELE1BQU0sT0FBTyxpQkFBaUI7SUEwQjVCO1FBUlEsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUUzQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixDQUFDO0lBRWhCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTO2FBQ2xCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQztRQUMzRCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sT0FBTyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxFQUFFLENBQ2QsQ0FBQTtJQUNMLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTO2FBQ2xCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLEtBQUssQ0FBQztRQUM1RCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sT0FBTyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxFQUFFLENBQ2QsQ0FBQTtJQUNMLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxjQUFjLENBQ25CLElBQXlCLEVBQ3pCLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0M7O1FBRXhDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFNO1NBQUU7UUFFckIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFBLElBQUksQ0FBQyxJQUFJLG1DQUFJLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLFFBQVEsbUNBQUksZUFBZSxDQUFDLElBQUksQ0FBQztRQUV0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUE7U0FDdkM7UUFDRCwyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV0QyxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO1FBRWhELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxlQUFlLENBQUMsTUFBTSxFQUFFO1lBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxlQUFlLENBQUMsTUFBTSxFQUFFO1lBQ25ELGlCQUFpQixDQUFDLGdCQUFnQixDQUNoQztnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzlCLENBQUM7YUFDRixDQUNGLENBQUM7WUFFRixpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkMsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7Z0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzlCLENBQUM7YUFDRixDQUNGLENBQUE7U0FDRjtJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLGVBQWUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoSCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFM0MsSUFBSSxhQUFhLElBQUksYUFBYSxZQUFZLFVBQVUsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBRTVCLGFBQWE7cUJBQ1YsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO3FCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztnQkFFTCxPQUFPO2FBQ1I7U0FDRjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxlQUFlLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUN4RixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFN0MsSUFBSSxhQUFhLElBQUksYUFBYSxZQUFZLFVBQVUsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBRTVCLGFBQWE7cUJBQ1YsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO3FCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztnQkFFTCxPQUFPO2FBQ1I7U0FDRjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLG9CQUFvQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxhQUFxQjtRQUNuRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsYUFBYSxDQUFDO1FBRTVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDOzsrR0F4T1UsaUJBQWlCO21IQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIEZzTGlzdFJlb3JkZXJDb25maWcsXG4gIEZzTGlzdFJlb3JkZXJEb25lQ2FsbGJhY2ssXG4gIEZzTGlzdFJlb3JkZXJNb3ZlZENhbGxiYWNrLFxuICBGc0xpc3RSZW9yZGVyTW92ZUluR3JvdXBDYWxsYmFja1xufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgRGF0YUNvbnRyb2xsZXIgfSBmcm9tICcuL2RhdGEtY29udHJvbGxlcic7XG5pbXBvcnQgeyBBY3Rpb25zQ29udHJvbGxlciB9IGZyb20gJy4vYWN0aW9ucy1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuL3NlbGVjdGlvbi1jb250cm9sbGVyJztcblxuZXhwb3J0IGVudW0gUmVvcmRlclBvc2l0aW9uIHtcbiAgTGVmdCA9ICdsZWZ0JyxcbiAgUmlnaHQgPSAncmlnaHQnLFxufVxuXG5leHBvcnQgZW51bSBSZW9yZGVyU3RyYXRlZ3kge1xuICBBbHdheXMgPSAnYWx3YXlzJyxcbiAgTWFudWFsID0gJ21hbnVhbCcsXG4gIEN1c3RvbSA9ICdjdXN0b20nLFxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVvcmRlckNvbnRyb2xsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBzdGFydENhbGxiYWNrOiAoKSA9PiB2b2lkIHwgT2JzZXJ2YWJsZTx2b2lkPjtcbiAgcHVibGljIG1vdmVkQ2FsbGJhY2s6IEZzTGlzdFJlb3JkZXJNb3ZlZENhbGxiYWNrO1xuICBwdWJsaWMgZG9uZUNhbGxiYWNrOiBGc0xpc3RSZW9yZGVyRG9uZUNhbGxiYWNrO1xuICBwdWJsaWMgbW92ZURyb3BDYWxsYmFjazogRnNMaXN0UmVvcmRlck1vdmVJbkdyb3VwQ2FsbGJhY2s7XG5cbiAgcHVibGljIHN0YXR1czogYm9vbGVhbjtcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBtZW51OiBib29sZWFuO1xuICBwdWJsaWMgcG9zaXRpb246IFJlb3JkZXJQb3NpdGlvbjtcbiAgcHVibGljIHN0cmF0ZWd5OiBSZW9yZGVyU3RyYXRlZ3k7XG4gIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIF9kYXRhQ29udHJvbGxlcjogRGF0YUNvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2FjdGlvbnNDb250cm9sbGVyOiBBY3Rpb25zQ29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ29udHJvbGxlcjogU2VsZWN0aW9uQ29udHJvbGxlcjtcblxuICBwcml2YXRlIF9lbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9tYW51YWxSZW9yZGVyQWN0aXZhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9yZW9yZGVyRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfbnVtYmVyT2ZBY3RpdmVGaWx0ZXJzID0gMDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZW5hYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2VuYWJsZWQkLm5leHQodmFsdWUpO1xuXG4gICAgdGhpcy5fbWFudWFsUmVvcmRlckFjdGl2YXRlZCQubmV4dCh0aGlzLmVuYWJsZWQgJiYgdGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFDb250cm9sbGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhQ29udHJvbGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uQ29udHJvbGxlcigpOiBTZWxlY3Rpb25Db250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWFudWFsUmVvcmRlckFjdGl2YXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hbnVhbFJlb3JkZXJBY3RpdmF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYW51YWxSZW9yZGVyQWN0aXZhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tYW51YWxSZW9yZGVyQWN0aXZhdGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBsZWZ0UmVvcmRlckFjdGl2YXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWQgJiYgdGhpcy5wb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLkxlZnQ7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW5hYmxlZCAmJiB0aGlzLl9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPT09IDA7XG4gICAgICAgIH0pLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgpLFxuICAgICAgKVxuICB9XG5cbiAgcHVibGljIGdldCByaWdodFJlb3JkZXJBY3RpdmF0ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkICYmIHRoaXMucG9zaXRpb24gPT09IFJlb3JkZXJQb3NpdGlvbi5SaWdodDtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbmFibGVkICYmIHRoaXMuX251bWJlck9mQWN0aXZlRmlsdGVycyA9PT0gMDtcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlb3JkZXJEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlb3JkZXJEaXNhYmxlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlb3JkZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVvcmRlckRpc2FibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRXaXRoQ29uZmlnKFxuICAgIGRhdGE6IEZzTGlzdFJlb3JkZXJDb25maWcsXG4gICAgZGF0YUNvbnRyb2xsZXI6IERhdGFDb250cm9sbGVyLFxuICAgIGFjdGlvbnNDb250cm9sbGVyOiBBY3Rpb25zQ29udHJvbGxlcixcbiAgICBzZWxlY3Rpb25Db250cm9sbGVyOiBTZWxlY3Rpb25Db250cm9sbGVyLFxuICApIHtcbiAgICBpZiAoIWRhdGEpIHsgcmV0dXJuIH1cblxuICAgIHRoaXMubWVudSA9IGRhdGEubWVudSA/PyBmYWxzZTtcbiAgICB0aGlzLnBvc2l0aW9uID0gZGF0YS5wb3NpdGlvbiA/PyBSZW9yZGVyUG9zaXRpb24uTGVmdDtcblxuICAgIGlmICghZGF0YS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneS5BbHdheXM7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEudG9nZ2xlKSB7XG4gICAgICB0aGlzLnN0cmF0ZWd5ID0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbFxuICAgIH1cbiAgICAvLyB0aGlzLnN0cmF0ZWd5ID0gZGF0YS5zdHJhdGVneSA/PyBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsO1xuICAgIHRoaXMubGFiZWwgPSBkYXRhLmxhYmVsO1xuICAgIHRoaXMubXVsdGlwbGUgPSBkYXRhLm11bHRpcGxlO1xuXG4gICAgdGhpcy5zdGFydENhbGxiYWNrID0gZGF0YS5zdGFydDtcbiAgICB0aGlzLm1vdmVkQ2FsbGJhY2sgPSBkYXRhLm1vdmVkO1xuICAgIHRoaXMuZG9uZUNhbGxiYWNrID0gZGF0YS5kb25lO1xuICAgIHRoaXMubW92ZURyb3BDYWxsYmFjayA9IGRhdGEubW92ZURyb3A7XG5cbiAgICB0aGlzLl9kYXRhQ29udHJvbGxlciA9IGRhdGFDb250cm9sbGVyO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyID0gYWN0aW9uc0NvbnRyb2xsZXI7XG4gICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlciA9IHNlbGVjdGlvbkNvbnRyb2xsZXI7XG5cbiAgICBpZiAodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5cykge1xuICAgICAgdGhpcy5lbmFibGVSZW9yZGVyKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsKSB7XG4gICAgICBhY3Rpb25zQ29udHJvbGxlci5hZGRSZW9yZGVyQWN0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHRoaXMubGFiZWwgfHwgJ1Jlb3JkZXInLFxuICAgICAgICAgIG1lbnU6IHRoaXMubWVudSxcbiAgICAgICAgICBwcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVSZW9yZGVyKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkaXNhYmxlZDogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVvcmRlckRpc2FibGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgYWN0aW9uc0NvbnRyb2xsZXIuYWRkUmVvcmRlckRvbmVBY3Rpb24oe1xuICAgICAgICAgIGxhYmVsOiAnRG9uZScsXG4gICAgICAgICAgcHJpbWFyeTogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVJlb3JkZXIoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRpc2FibGVkOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW9yZGVyRGlzYWJsZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVSZW9yZGVyKCkge1xuICAgIGlmICgodGhpcy5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCB8fCB0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuQ3VzdG9tKSAmJiB0aGlzLnN0YXJ0Q2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLnN0YXJ0Q2FsbGJhY2soKTtcblxuICAgICAgaWYgKHJldHVybmVkVmFsdWUgJiYgcmV0dXJuZWRWYWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUmVvcmRlckFjdGlvbigpO1xuXG4gICAgICAgIHJldHVybmVkVmFsdWVcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVSZW9yZGVyKCkge1xuICAgIGlmICh0aGlzLnN0cmF0ZWd5ID09PSBSZW9yZGVyU3RyYXRlZ3kuTWFudWFsIHx8IHRoaXMuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5DdXN0b20pIHtcbiAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLnJlb3JkZXJGaW5pc2hlZCgpO1xuXG4gICAgICBpZiAocmV0dXJuZWRWYWx1ZSAmJiByZXR1cm5lZFZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICB0aGlzLmRpc2FibGVSZW9yZGVyQWN0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuZWRWYWx1ZVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjIGVuZCBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHJlb3JkZXJGaW5pc2hlZCgpIHtcbiAgICBpZiAodGhpcy5kb25lQ2FsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmRvbmVDYWxsYmFjayh0aGlzLl9kYXRhQ29udHJvbGxlci5yZW9yZGVyRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSByZW9yZGVyIGFjdGlvbiBhbmQgdXBkYXRlIGZpbHRlciBhY3Rpb25zIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlUmVvcmRlckFjdGlvbigpIHtcbiAgICB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuX2FjdGlvbnNDb250cm9sbGVyLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHJlb3JkZXIgYWN0aW9uIGFuZCB1cGRhdGUgZmlsdGVyIGFjdGlvbnMgc3RhdGVcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlUmVvcmRlckFjdGlvbigpIHtcbiAgICB0aGlzLl9yZW9yZGVyRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fYWN0aW9uc0NvbnRyb2xsZXIudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldE51bmJlck9mQWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzOiBudW1iZXIpIHtcbiAgICB0aGlzLl9udW1iZXJPZkFjdGl2ZUZpbHRlcnMgPSBhY3RpdmVGaWx0ZXJzO1xuXG4gICAgdGhpcy5lbmFibGVkID0gdGhpcy5lbmFibGVkO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable, Subject } from 'rxjs';
|
|
1
|
+
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
2
2
|
import { take, takeUntil } from 'rxjs/operators';
|
|
3
3
|
import { get as _get } from 'lodash-es';
|
|
4
4
|
export var SelectionChangeType;
|
|
@@ -29,12 +29,20 @@ export class SelectionController {
|
|
|
29
29
|
this._visibleRecordsCount = 0;
|
|
30
30
|
this._totalRecordsCount = 0;
|
|
31
31
|
this._destroy$ = new Subject();
|
|
32
|
+
this._disabled$ = new BehaviorSubject(false);
|
|
32
33
|
this.actions = config.actions ? [...config.actions] : [];
|
|
33
34
|
this.actionSelectedFn = config.actionSelected;
|
|
34
35
|
this.allSelectedFn = config.allSelected;
|
|
35
36
|
this.cancelledFn = config.cancelled;
|
|
36
37
|
this.selectionChangedFn = config.selectionChanged;
|
|
37
38
|
this.selectAll = config.selectAll;
|
|
39
|
+
this._disabled$.next(!!config.disabled);
|
|
40
|
+
}
|
|
41
|
+
get disabled() {
|
|
42
|
+
return this._disabled$.getValue();
|
|
43
|
+
}
|
|
44
|
+
get disabled$() {
|
|
45
|
+
return this._disabled$.asObservable();
|
|
38
46
|
}
|
|
39
47
|
get selectedAll() {
|
|
40
48
|
return this._selectedAll;
|
|
@@ -171,6 +179,12 @@ export class SelectionController {
|
|
|
171
179
|
this._updateSelectedVisibleStatus();
|
|
172
180
|
}
|
|
173
181
|
}
|
|
182
|
+
enableSelection() {
|
|
183
|
+
this._disabled$.next(false);
|
|
184
|
+
}
|
|
185
|
+
disableSelection() {
|
|
186
|
+
this._disabled$.next(true);
|
|
187
|
+
}
|
|
174
188
|
/**
|
|
175
189
|
* Method will be called from List for remove row if it was selected
|
|
176
190
|
*
|
|
@@ -442,4 +456,4 @@ export class SelectionController {
|
|
|
442
456
|
this._visibleRowsSelectionChanged();
|
|
443
457
|
}
|
|
444
458
|
}
|
|
445
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU94QyxNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLDhFQUF1RCxDQUFBO0lBQ3ZELGdFQUF5QyxDQUFBO0lBQ3pDLGtEQUEyQixDQUFBO0FBQzdCLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBR0QsTUFBTSxPQUFPLG1CQUFtQjtJQWlDOUIsWUFDRSxTQUFnQyxFQUFFLEVBQzFCLFFBQWdCLEVBQ2hCLGdCQUFpQztRQURqQyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFsQzNDLDZCQUE2QjtRQUN0QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsY0FBUyxHQUFHLElBQUksQ0FBQztRQU14QixrQ0FBa0M7UUFDM0IsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVsQyxnQ0FBZ0M7UUFDeEIsd0JBQW1CLEdBQWlCLElBQUksQ0FBQztRQUd6QyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBK0MsQ0FBQztRQUV0RiwwRkFBMEY7UUFDbEYsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRXBDLHNFQUFzRTtRQUN0RSxrRkFBa0Y7UUFDMUUsaUJBQVksR0FBRyxLQUFLLENBQUM7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SSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFdkMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXQgYXMgX2dldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2csIFNlbGVjdGlvblJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IEZzTGlzdFNlbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vbW9kZWxzL3Jvdyc7XG5cblxuZXhwb3J0IGVudW0gU2VsZWN0aW9uQ2hhbmdlVHlwZSB7XG4gIEFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2UgPSAnQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZScsXG4gIFJvd1NlbGVjdGlvbkNoYW5nZSA9ICdSb3dTZWxlY3Rpb25DaGFuZ2UnLFxuICBTZWxlY3RlZEFsbCA9ICdTZWxlY3RlZEFsbCcsXG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIge1xuXG4gIC8vIE9wdGlvbnMgZnJvbSBwYXNzZWQgY29uZmlnXG4gIHB1YmxpYyBhY3Rpb25zID0gW107XG4gIHB1YmxpYyBzZWxlY3RBbGwgPSB0cnVlO1xuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICBwdWJsaWMgYWN0aW9uU2VsZWN0ZWRGbjtcbiAgcHVibGljIGFsbFNlbGVjdGVkRm47XG4gIHB1YmxpYyBjYW5jZWxsZWRGbjtcblxuICAvLyBTdG9yZSBmb3Igc2VsZWN0ZWQgdmlzaWJsZSByb3dzXG4gIHB1YmxpYyBzZWxlY3RlZFJvd3MgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBzZWxlY3RlZEdyb3VwcyA9IG5ldyBNYXAoKTtcblxuICAvLyBSZWZlcmVuY2UgdG8gc2VsZWN0aW9uIGRpYWxvZ1xuICBwcml2YXRlIF9zZWxlY3Rpb25EaWFsb2dSZWY6IFNlbGVjdGlvblJlZiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZ2V0Um93czogKCkgPT4gYW55W107XG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZSA9IG5ldyBTdWJqZWN0PHsgdHlwZTogU2VsZWN0aW9uQ2hhbmdlVHlwZSwgcGF5bG9hZDogYW55IH0+KCk7XG5cbiAgLy8gU2VsZWN0ZWQgb25seSB2aXNpYmxlIHJvd3MgKGV4Ljogc2VsZWN0ZWQgb25seSBsaW1pdGVkIDE1IHJvd3Mgd2hlbiB3ZSBoYXZlIHBhZ2luYXRpb24pXG4gIHByaXZhdGUgX3NlbGVjdGVkQWxsVmlzaWJsZSA9IGZhbHNlO1xuXG4gIC8vIFNlbGVjdGVkIGFsbCByb3dzIHdoZW4gd2FzIGNsaWNrZWQgXCJTZWxlY3QgQWxsXCIgaW4gc2VsZWN0aW9uIGRpYWxvZ1xuICAvLyBvciBjb3VudCBvZiB2aXNpYmxlIHJlY29yZHMgaXMgZXF1YWwgdG8gdG90YWwgYW5kIGFsbCB2aXNpYmxlIHJvd3Mgd2FzIHNlbGVjdGVkXG4gIHByaXZhdGUgX3NlbGVjdGVkQWxsID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSZWNvcmRzID0gMDtcbiAgcHJpdmF0ZSBfdmlzaWJsZVJlY29yZHNDb3VudCA9IDA7XG4gIHByaXZhdGUgX3RvdGFsUmVjb3Jkc0NvdW50ID0gMDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcgPSB7fSxcbiAgICBwcml2YXRlIF90cmFja0J5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2dcbiAgKSB7XG4gICAgdGhpcy5hY3Rpb25zID0gY29uZmlnLmFjdGlvbnMgPyBbLi4uY29uZmlnLmFjdGlvbnNdIDogW107XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gY29uZmlnLmFjdGlvblNlbGVjdGVkO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGNvbmZpZy5hbGxTZWxlY3RlZDtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY29uZmlnLmNhbmNlbGxlZDtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWRGbiA9IGNvbmZpZy5zZWxlY3Rpb25DaGFuZ2VkO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gY29uZmlnLnNlbGVjdEFsbDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRBbGw7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93c0NhbGxiYWNrKGRhdGE6ICgpID0+IGFueVtdKSB7XG4gICAgdGhpcy5fZ2V0Um93cyA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIHJvdyB3YXMgc2VsZWN0ZWRcbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcGFyYW0gY2hlY2tlZFxuICAgKi9cbiAgcHVibGljIHJvd1NlbGVjdGlvbkNoYW5nZShyb3c6IFJvdywgY2hlY2tlZDogYm9vbGVhbikge1xuICAgIGlmIChyb3cpIHtcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFJvdyhyb3cpO1xuICAgICAgICB0aGlzLm9wZW5EaWFsb2coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEFsbCkge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZXNlbGVjdFJvdyhyb3cpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkKCk7XG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRWaXNpYmxlU3RhdHVzKCk7XG4gIH1cblxuICAvKipcbiAgICogRG8gY2hlY2sgb3IgdW5jaGVjayBvZiB2aXNpYmxlIHJvd3NcbiAgICogQHBhcmFtIGNoZWNrZWRcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RBbGxWaXNpYmxlUm93cyhjaGVja2VkKSB7XG4gICAgdGhpcy5vcGVuRGlhbG9nKCk7XG5cbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSBjaGVja2VkO1xuICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcyA9IDA7XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5fZ2V0Um93cygpO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgICAgICBpZiAocm93LmlzR3JvdXApIHtcbiAgICAgICAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKGlkZW50aWZpZXIsIHJvdy5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnNldChpZGVudGlmaWVyLCByb3cuZGF0YSk7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5fcm93SWRlbnRpZmllcihyb3cuZGF0YSk7XG5cbiAgICAgICAgaWYgKHJvdy5pc0dyb3VwKSB7XG4gICAgICAgICAgdGhpcy5fc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChpZGVudGlmaWVyLCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWRlbnRpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID0gMDtcbiAgICB9XG5cbiAgICAvLyBGaXJlIGFuIGV2ZW50IHRoYXQgYWxsIHZpc2libGUgc2VsZWN0aW9uIHdhcyBjaGFuZ2VkXG4gICAgdGhpcy5fdmlzaWJsZVJvd3NTZWxlY3Rpb25DaGFuZ2VkKCk7XG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Jvd1NlbGVjdGVkKHJvd0RhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuX3Jvd0lkZW50aWZpZXIocm93RGF0YSkpXG4gICAgICB8fCB0aGlzLnNlbGVjdGVkR3JvdXBzLmhhcyh0aGlzLl9yb3dJZGVudGlmaWVyKHJvd0RhdGEpKVxuICAgICAgfHwgdGhpcy5zZWxlY3RlZEFsbDtcbiAgfVxuXG4gIHB1YmxpYyBpc0dyb3VwU2VsZWN0ZWQocm93KTogYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJyB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LmRhdGEpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5oYXMoaWRlbnRpZmllcilcbiAgICAgICYmIHJvdy5jaGlsZHJlbj8ubGVuZ3RoID4gdGhpcy5zZWxlY3RlZEdyb3Vwcy5nZXQoaWRlbnRpZmllcilcbiAgICApIHtcbiAgICAgIHJldHVybiAnaW5kZXRlcm1pbmF0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBzLmhhcyhpZGVudGlmaWVyKSB8fCB0aGlzLnNlbGVjdGVkQWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHNlbGVjdGlvbiBkaWFsb2cgYW5kIGNyZWF0ZSByZWZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBvcGVuRGlhbG9nKCkge1xuICAgIGlmICghdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYgPSB0aGlzLl9zZWxlY3Rpb25EaWFsb2cub3Blbih7XG4gICAgICAgIHNlbGVjdEFsbDogdGhpcy5zZWxlY3RBbGwsXG4gICAgICAgIGFsbENvdW50OiB0aGlzLl90b3RhbFJlY29yZHNDb3VudCxcbiAgICAgICAgYWN0aW9uczogWy4uLnRoaXMuYWN0aW9uc10sXG4gICAgICAgIC8vIHNlbGVjdEFsbDogdGhpcy5zZWxlXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fc3Vic2NyaWJlVG9TZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvdW50IG9mIHZpc2libGUgZWxlbWVudHNcbiAgICogQHBhcmFtIGNvdW50XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmlzaWJsZVJlY29yZHNDb3VudChjb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdmlzaWJsZVJlY29yZHNDb3VudCA9IGNvdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjb3VudCBvZiB0b3RhbCBhdmFpbGFibGUgZWxlbWVuZXRzXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVRvdGFsUmVjb3Jkc0NvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbFJlY29yZHNDb3VudCA9IGNvdW50O1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFsbENvdW50KHRoaXMuX3RvdGFsUmVjb3Jkc0NvdW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZWQoaW5maW5pdHlTY3JvbGxFbmFibGVkKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkQWxsKSB7XG4gICAgICBpZiAoIWluZmluaXR5U2Nyb2xsRW5hYmxlZCkge1xuICAgICAgICB0aGlzLl9yZXNldFNlbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgICAgdGhpcy5fZ2V0Um93cygpXG4gICAgICAgIC5tYXAoKHJvdykgPT4gcm93LmRhdGEpXG4gICAgICAgIC5mb3JFYWNoKChyb3dEYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWRlbnRpZmllZCA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93RGF0YSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkZW50aWZpZWQpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRWaXNpYmxlU3RhdHVzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmcm9tIExpc3QgZm9yIHJlbW92ZSByb3cgaWYgaXQgd2FzIHNlbGVjdGVkXG4gICAqXG4gICAqIEJVVCBtZXRob2RzIGZvciB1cGRhdGUgdmlzaWJsZSBhbmQgZXRjLiB3aWxsIGJlIGNhbGxlZCBhIGJpdCBsYXRlclxuICAgKiBAcGFyYW0gcm93XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUm93KHJvdykge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZSh0aGlzLl9yb3dJZGVudGlmaWVyKHJvdykpO1xuXG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyc2VjdGlvbiBvZiBzZWxlY3RlZCBhbmQgcGFzc2VkIHJvd3MgdG8gcmVtb3ZlIHJvd3MgdGhhdCB3ZSBkb250IG5lZWQgbW9yZVxuICAgKiBAcGFyYW0gcm93c1xuICAgKi9cbiAgcHVibGljIHNlbGVjdGVkUm93c0ludGVyc2VjdGlvbihyb3dzKSB7XG4gICAgY29uc3Qgcm93c0luZGVudGlmaWVycyA9IHJvd3MubWFwKChyb3cpID0+IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm93cy5mb3JFYWNoKChzZWxlY3RlZFJvdywgaWRlbnRpZmllcikgPT4ge1xuICAgICAgaWYgKHJvd3NJbmRlbnRpZmllcnMuaW5kZXhPZihpZGVudGlmaWVyKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVSb3coc2VsZWN0ZWRSb3cpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29uZmlnKHtcbiAgICBhY3Rpb25zLCBhY3Rpb25TZWxlY3RlZCwgYWxsU2VsZWN0ZWQsIGNhbmNlbGxlZCwgc2VsZWN0aW9uQ2hhbmdlZCwgc2VsZWN0QWxsXG4gIH06IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnMgPyBbLi4uYWN0aW9uc10gOiB0aGlzLmFjdGlvbnM7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gYWN0aW9uU2VsZWN0ZWQgPz8gdGhpcy5hY3Rpb25TZWxlY3RlZEZuO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGFsbFNlbGVjdGVkID8/IHRoaXMuYWxsU2VsZWN0ZWRGbjtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY2FuY2VsbGVkID8/IHRoaXMuY2FuY2VsbGVkRm47XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4gPSBzZWxlY3Rpb25DaGFuZ2VkID8/IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gc2VsZWN0QWxsID8/IHRoaXMuc2VsZWN0QWxsO1xuICB9XG5cbiAgLy8gUmVzZXQgYWN0aW9ucyB0byBkZWZhdWx0IHNldFxuICBwdWJsaWMgcmVzZXRBY3Rpb25zKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZj8ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VTZWxlY3Rpb25EaWFsb2coKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTtcblxuICAgIHRoaXMuYWN0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gbnVsbDtcbiAgICB0aGlzLmFsbFNlbGVjdGVkRm4gPSBudWxsO1xuICAgIHRoaXMuY2FuY2VsbGVkRm4gPSBudWxsO1xuXG4gICAgdGhpcy5jbG9zZVNlbGVjdGlvbkRpYWxvZygpO1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuX3NlbGVjdGlvbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb25SZWYgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuYWN0aW9uU2VsZWN0ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuX29uQWN0aW9uQWN0aW9ucyhkYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmNhbmNlbGxlZCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25DYW5jZWxBY3Rpb25zKCkpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmFsbFNlbGVjdGVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLl9vblNlbGVjdEFsbEFjdGlvbnMoZGF0YSk7XG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHNvbWUgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcml2YXRlIF9vbkFjdGlvbkFjdGlvbnMoZGF0YSkge1xuICAgIGlmICghdGhpcy5hY3Rpb25TZWxlY3RlZEZuKSB7IHJldHVybiB9XG5cbiAgICAvLyBFeGVjdXRlIGNhbGxiYWNrXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hY3Rpb25TZWxlY3RlZEZuKHtcbiAgICAgIHNlbGVjdGVkOiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKS5tYXAoKHJvdykgPT4geyByZXR1cm4gey4uLnJvd319KSxcbiAgICAgIC4uLmRhdGFcbiAgICB9KTtcblxuICAgIC8vIElmIHJlc3VsdCBpcyBvYnNlcnZhYmxlXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcblxuICAgICAgLy8gU3Vic2NyaWJlIGFuZCB3aGFpdCB3aHkgaXQgcmVzb2x2ZWRcbiAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG5cbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcbiAgICAgICAgICB0aGlzLmNsb3NlU2VsZWN0aW9uRGlhbG9nKCk7XG5cbiAgICAgICAgICAvLyBVbmNoZWNrIGFsbCB2aXNpYmxlIHJvd3NcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbFZpc2libGVSb3dzKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgY2FuY2VsIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqL1xuICBwcml2YXRlIF9vbkNhbmNlbEFjdGlvbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxWaXNpYmxlUm93cyhmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jYW5jZWxsZWRGbikge1xuICAgICAgdGhpcy5jYW5jZWxsZWRGbigpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSWYgXCJTZWxlY3QgQWxsXCIgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBmbGFnXG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdEFsbEFjdGlvbnMoZmxhZykge1xuICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmxhZztcblxuICAgIHRoaXMuc2VsZWN0QWxsVmlzaWJsZVJvd3MoZmxhZyk7XG5cbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYudXBkYXRlU2VsZWN0ZWQodGhpcy5fdG90YWxSZWNvcmRzQ291bnQpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbCwgdGhpcy5fc2VsZWN0ZWRBbGwpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG5cbiAgICBpZiAoIXRoaXMuYWxsU2VsZWN0ZWRGbikgeyByZXR1cm4gfVxuXG4gICAgdGhpcy5hbGxTZWxlY3RlZEZuKGZsYWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKSB7XG4gICAgLy8gUmVtb3ZlIGFjdGlvbnMgaWYgbm8gcm93cyBzZWxlY3RlZFxuICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIFwiYmxpbmtcIiB3aGVuIHVzZXIgc2VsZWN0IGFueSBhY3Rpb25cbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoW10pO1xuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuKFxuICAgICAgICBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCxcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoYWN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaW4gRGlhbG9nIFJlZiBob3cgbXVjaCByb3dzIHdhcyBzZWxlY3RlZFxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZVNlbGVjdGVkKHRoaXMuc2VsZWN0ZWRSb3dzLnNpemUpO1xuXG4gICAgICAvLyBTLVQxMjY4XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGluIERpYWxvZyBSZWYgc2VsZWN0ZWQgYWxsIHN0YXR1c1xuICAgKlxuICAgKiBFeC46IFdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIERpYWxvZyBhbmQgYWZ0ZXIgdGhhdCBzb21lIGNoZWNrYm94IHdhcyB1bmNoZWNrZWRcbiAgICogRGlhbG9nIFJlZiBtdXN0IGtub3cgYWJvdXQgaXRcbiAgICpcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZi51cGRhdGVTZWxlY3RlZEFsbFN0YXR1cyh0aGlzLl9zZWxlY3RlZEFsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFsbCB2aXNpYmxlIHJvd3Mgd2FzIGNoZWNrZWQgYW5kIHNlbmQgZXZlbnQgdG8gbWFpbiBoZWFkZXIgY2hlY2tib3hcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGVkVmlzaWJsZVN0YXR1cygpIHtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSB0aGlzLl9zZWxlY3RlZFJlY29yZHMgIT09IDAgJiYgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID09PSB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50O1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoXG4gICAgICBTZWxlY3Rpb25DaGFuZ2VUeXBlLlJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSWYgc2VsZWN0IGFsbCBjaGVja2JveCBpbiBoZWFkZXIgd2FzIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgX3Zpc2libGVSb3dzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VFdmVudChcbiAgICAgIFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNvbnN0cnVjdG9yIGZvciBldmVudHNcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZUV2ZW50KHR5cGU6IFNlbGVjdGlvbkNoYW5nZVR5cGUsIHBheWxvYWQpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2UubmV4dCh7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByb3cgaWRlbnRpZmllZCBieSB0cmFja0J5IHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfcm93SWRlbnRpZmllcihyb3cpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gX2dldChyb3csIHRoaXMuX3RyYWNrQnksIHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1NlbGVjdGlvbiBjYW4gbm90IHJlY29nbml6ZSB0cmFjayBieSBmaWVsZCBmb3Igcm93LiAnICtcbiAgICAgICAgJ1BsZWFzZSBjaGVjayBpZiB5b3UgaGFkIGNvbmZpZ3VyZWQgdHJhY2tCeSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIHJldHVybiBpZGVudGlmaWVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgcm93LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm93KSA9PiB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdENoaWxkUm93KHJvdylcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2V0KGlkZW50aWZpZXIsIHJvdy5kYXRhKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcysrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5kZWxldGUoaWRlbnRpZmllcik7XG5cbiAgICAgIHJvdy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdykgPT4ge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdENoaWxkUm93KHJvdyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3Jkcy0tO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdENoaWxkUm93KHJvdykge1xuICAgIGNvbnN0IHBhcmVudElkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5wYXJlbnQuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbk51bWJlciA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZ2V0KHBhcmVudElkZW50aWZpZXIpIHx8IDA7XG5cbiAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKHBhcmVudElkZW50aWZpZXIsIHNlbGVjdGVkQ2hpbGRyZW5OdW1iZXIgKyAxKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Q2hpbGRSb3cocm93KSB7XG4gICAgY29uc3QgcGFyZW50SWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LnBhcmVudC5kYXRhKTtcbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5nZXQocGFyZW50SWRlbnRpZmllcikgfHwgMDtcblxuICAgIGlmIChzZWxlY3RlZENoaWxkcmVuTnVtYmVyID4gMSkge1xuICAgICAgdGhpcy5fc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChwYXJlbnRJZGVudGlmaWVyLCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldE51bWJlck9mU2VsZWN0ZWRDaGlsZHJlbkluR3JvdXAocGFyZW50SWRlbnRpZmllciwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChpZGVudGlmaWVyOiBzdHJpbmcsIG46IG51bWJlcikge1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLmRlbGV0ZShpZGVudGlmaWVyKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMuc2V0KGlkZW50aWZpZXIsIG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDtcbiAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG5cbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG4gICAgdGhpcy5fdmlzaWJsZVJvd3NTZWxlY3Rpb25DaGFuZ2VkKCk7XG4gIH1cbn1cbiJdfQ==
|
|
459
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFPeEMsTUFBTSxDQUFOLElBQVksbUJBSVg7QUFKRCxXQUFZLG1CQUFtQjtJQUM3Qiw4RUFBdUQsQ0FBQTtJQUN2RCxnRUFBeUMsQ0FBQTtJQUN6QyxrREFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QjtBQUdELE1BQU0sT0FBTyxtQkFBbUI7SUFtQzlCLFlBQ0UsU0FBZ0MsRUFBRSxFQUMxQixRQUFnQixFQUNoQixnQkFBaUM7UUFEakMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBcEMzQyw2QkFBNkI7UUFDdEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFPeEIsa0NBQWtDO1FBQzNCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN6QixtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFFbEMsZ0NBQWdDO1FBQ3hCLHdCQUFtQixHQUFpQixJQUFJLENBQUM7UUFHekMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQStDLENBQUM7UUFFdEYsMEZBQTBGO1FBQ2xGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUVwQyxzRUFBc0U7UUFDdEUsa0ZBQWtGO1FBQzFFLGlCQUFZLEdBQUcs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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXQgYXMgX2dldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2csIFNlbGVjdGlvblJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IEZzTGlzdFNlbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vbW9kZWxzL3Jvdyc7XG5cblxuZXhwb3J0IGVudW0gU2VsZWN0aW9uQ2hhbmdlVHlwZSB7XG4gIEFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2UgPSAnQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZScsXG4gIFJvd1NlbGVjdGlvbkNoYW5nZSA9ICdSb3dTZWxlY3Rpb25DaGFuZ2UnLFxuICBTZWxlY3RlZEFsbCA9ICdTZWxlY3RlZEFsbCcsXG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIge1xuXG4gIC8vIE9wdGlvbnMgZnJvbSBwYXNzZWQgY29uZmlnXG4gIHB1YmxpYyBhY3Rpb25zID0gW107XG4gIHB1YmxpYyBzZWxlY3RBbGwgPSB0cnVlO1xuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICBwdWJsaWMgYWN0aW9uU2VsZWN0ZWRGbjtcbiAgcHVibGljIGFsbFNlbGVjdGVkRm47XG5cbiAgcHVibGljIGNhbmNlbGxlZEZuO1xuXG4gIC8vIFN0b3JlIGZvciBzZWxlY3RlZCB2aXNpYmxlIHJvd3NcbiAgcHVibGljIHNlbGVjdGVkUm93cyA9IG5ldyBNYXAoKTtcbiAgcHVibGljIHNlbGVjdGVkR3JvdXBzID0gbmV3IE1hcCgpO1xuXG4gIC8vIFJlZmVyZW5jZSB0byBzZWxlY3Rpb24gZGlhbG9nXG4gIHByaXZhdGUgX3NlbGVjdGlvbkRpYWxvZ1JlZjogU2VsZWN0aW9uUmVmID0gbnVsbDtcblxuICBwcml2YXRlIF9nZXRSb3dzOiAoKSA9PiBhbnlbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlID0gbmV3IFN1YmplY3Q8eyB0eXBlOiBTZWxlY3Rpb25DaGFuZ2VUeXBlLCBwYXlsb2FkOiBhbnkgfT4oKTtcblxuICAvLyBTZWxlY3RlZCBvbmx5IHZpc2libGUgcm93cyAoZXguOiBzZWxlY3RlZCBvbmx5IGxpbWl0ZWQgMTUgcm93cyB3aGVuIHdlIGhhdmUgcGFnaW5hdGlvbilcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRBbGxWaXNpYmxlID0gZmFsc2U7XG5cbiAgLy8gU2VsZWN0ZWQgYWxsIHJvd3Mgd2hlbiB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXG4gIC8vIG9yIGNvdW50IG9mIHZpc2libGUgcmVjb3JkcyBpcyBlcXVhbCB0byB0b3RhbCBhbmQgYWxsIHZpc2libGUgcm93cyB3YXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRBbGwgPSBmYWxzZTtcblxuICBwcml2YXRlIF9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICBwcml2YXRlIF92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDtcbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzQ291bnQgPSAwO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcgPSB7fSxcbiAgICBwcml2YXRlIF90cmFja0J5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2dcbiAgKSB7XG4gICAgdGhpcy5hY3Rpb25zID0gY29uZmlnLmFjdGlvbnMgPyBbLi4uY29uZmlnLmFjdGlvbnNdIDogW107XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gY29uZmlnLmFjdGlvblNlbGVjdGVkO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGNvbmZpZy5hbGxTZWxlY3RlZDtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY29uZmlnLmNhbmNlbGxlZDtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWRGbiA9IGNvbmZpZy5zZWxlY3Rpb25DaGFuZ2VkO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gY29uZmlnLnNlbGVjdEFsbDtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dCghIWNvbmZpZy5kaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkQWxsKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEFsbDtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25DaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dzQ2FsbGJhY2soZGF0YTogKCkgPT4gYW55W10pIHtcbiAgICB0aGlzLl9nZXRSb3dzID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gcm93IHdhcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gcm93XG4gICAqIEBwYXJhbSBjaGVja2VkXG4gICAqL1xuICBwdWJsaWMgcm93U2VsZWN0aW9uQ2hhbmdlKHJvdzogUm93LCBjaGVja2VkOiBib29sZWFuKSB7XG4gICAgaWYgKHJvdykge1xuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0Um93KHJvdyk7XG4gICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQWxsKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Rlc2VsZWN0Um93KHJvdyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3RlZFZpc2libGVTdGF0dXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEbyBjaGVjayBvciB1bmNoZWNrIG9mIHZpc2libGUgcm93c1xuICAgKiBAcGFyYW0gY2hlY2tlZFxuICAgKi9cbiAgcHVibGljIHNlbGVjdEFsbFZpc2libGVSb3dzKGNoZWNrZWQpIHtcbiAgICB0aGlzLm9wZW5EaWFsb2coKTtcblxuICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZSA9IGNoZWNrZWQ7XG4gICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID0gMDtcblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLl9nZXRSb3dzKCk7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LmRhdGEpO1xuXG4gICAgICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgICAgIHRoaXMuX3NldE51bWJlck9mU2VsZWN0ZWRDaGlsZHJlbkluR3JvdXAoaWRlbnRpZmllciwgcm93LmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2V0KGlkZW50aWZpZXIsIHJvdy5kYXRhKTtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgICAgICBpZiAocm93LmlzR3JvdXApIHtcbiAgICAgICAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKGlkZW50aWZpZXIsIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZGVudGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgIH1cblxuICAgIC8vIEZpcmUgYW4gZXZlbnQgdGhhdCBhbGwgdmlzaWJsZSBzZWxlY3Rpb24gd2FzIGNoYW5nZWRcbiAgICB0aGlzLl92aXNpYmxlUm93c1NlbGVjdGlvbkNoYW5nZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHVibGljIGlzUm93U2VsZWN0ZWQocm93RGF0YSkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5fcm93SWRlbnRpZmllcihyb3dEYXRhKSlcbiAgICAgIHx8IHRoaXMuc2VsZWN0ZWRHcm91cHMuaGFzKHRoaXMuX3Jvd0lkZW50aWZpZXIocm93RGF0YSkpXG4gICAgICB8fCB0aGlzLnNlbGVjdGVkQWxsO1xuICB9XG5cbiAgcHVibGljIGlzR3JvdXBTZWxlY3RlZChyb3cpOiBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5fcm93SWRlbnRpZmllcihyb3cuZGF0YSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLmhhcyhpZGVudGlmaWVyKVxuICAgICAgJiYgcm93LmNoaWxkcmVuPy5sZW5ndGggPiB0aGlzLnNlbGVjdGVkR3JvdXBzLmdldChpZGVudGlmaWVyKVxuICAgICkge1xuICAgICAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRHcm91cHMuaGFzKGlkZW50aWZpZXIpIHx8IHRoaXMuc2VsZWN0ZWRBbGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gc2VsZWN0aW9uIGRpYWxvZyBhbmQgY3JlYXRlIHJlZmVyZW5jZVxuICAgKi9cbiAgcHVibGljIG9wZW5EaWFsb2coKSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IHRoaXMuX3NlbGVjdGlvbkRpYWxvZy5vcGVuKHtcbiAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbCxcbiAgICAgICAgYWxsQ291bnQ6IHRoaXMuX3RvdGFsUmVjb3Jkc0NvdW50LFxuICAgICAgICBhY3Rpb25zOiBbLi4udGhpcy5hY3Rpb25zXSxcbiAgICAgICAgLy8gc2VsZWN0QWxsOiB0aGlzLnNlbGVcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9zdWJzY3JpYmVUb1NlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY291bnQgb2YgdmlzaWJsZSBlbGVtZW50c1xuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWaXNpYmxlUmVjb3Jkc0NvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvdW50IG9mIHRvdGFsIGF2YWlsYWJsZSBlbGVtZW5ldHNcbiAgICogQHBhcmFtIGNvdW50XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVG90YWxSZWNvcmRzQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3RvdGFsUmVjb3Jkc0NvdW50ID0gY291bnQ7XG5cbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYudXBkYXRlQWxsQ291bnQodGhpcy5fdG90YWxSZWNvcmRzQ291bnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwYWdlQ2hhbmdlZChpbmZpbml0eVNjcm9sbEVuYWJsZWQpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRBbGwpIHtcbiAgICAgIGlmICghaW5maW5pdHlTY3JvbGxFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcyA9IDA7XG4gICAgICB0aGlzLl9nZXRSb3dzKClcbiAgICAgICAgLm1hcCgocm93KSA9PiByb3cuZGF0YSlcbiAgICAgICAgLmZvckVhY2goKHJvd0RhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBpZGVudGlmaWVkID0gdGhpcy5fcm93SWRlbnRpZmllcihyb3dEYXRhKTtcblxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWRlbnRpZmllZCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcysrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkKCk7XG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZFZpc2libGVTdGF0dXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmcm9tIExpc3QgZm9yIHJlbW92ZSByb3cgaWYgaXQgd2FzIHNlbGVjdGVkXG4gICAqXG4gICAqIEJVVCBtZXRob2RzIGZvciB1cGRhdGUgdmlzaWJsZSBhbmQgZXRjLiB3aWxsIGJlIGNhbGxlZCBhIGJpdCBsYXRlclxuICAgKiBAcGFyYW0gcm93XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUm93KHJvdykge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZSh0aGlzLl9yb3dJZGVudGlmaWVyKHJvdykpO1xuXG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKTtcbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyc2VjdGlvbiBvZiBzZWxlY3RlZCBhbmQgcGFzc2VkIHJvd3MgdG8gcmVtb3ZlIHJvd3MgdGhhdCB3ZSBkb250IG5lZWQgbW9yZVxuICAgKiBAcGFyYW0gcm93c1xuICAgKi9cbiAgcHVibGljIHNlbGVjdGVkUm93c0ludGVyc2VjdGlvbihyb3dzKSB7XG4gICAgY29uc3Qgcm93c0luZGVudGlmaWVycyA9IHJvd3MubWFwKChyb3cpID0+IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm93cy5mb3JFYWNoKChzZWxlY3RlZFJvdywgaWRlbnRpZmllcikgPT4ge1xuICAgICAgaWYgKHJvd3NJbmRlbnRpZmllcnMuaW5kZXhPZihpZGVudGlmaWVyKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVSb3coc2VsZWN0ZWRSb3cpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29uZmlnKHtcbiAgICBhY3Rpb25zLCBhY3Rpb25TZWxlY3RlZCwgYWxsU2VsZWN0ZWQsIGNhbmNlbGxlZCwgc2VsZWN0aW9uQ2hhbmdlZCwgc2VsZWN0QWxsXG4gIH06IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnMgPyBbLi4uYWN0aW9uc10gOiB0aGlzLmFjdGlvbnM7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gYWN0aW9uU2VsZWN0ZWQgPz8gdGhpcy5hY3Rpb25TZWxlY3RlZEZuO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWRGbiA9IGFsbFNlbGVjdGVkID8/IHRoaXMuYWxsU2VsZWN0ZWRGbjtcbiAgICB0aGlzLmNhbmNlbGxlZEZuID0gY2FuY2VsbGVkID8/IHRoaXMuY2FuY2VsbGVkRm47XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4gPSBzZWxlY3Rpb25DaGFuZ2VkID8/IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuO1xuICAgIHRoaXMuc2VsZWN0QWxsID0gc2VsZWN0QWxsID8/IHRoaXMuc2VsZWN0QWxsO1xuICB9XG5cbiAgLy8gUmVzZXQgYWN0aW9ucyB0byBkZWZhdWx0IHNldFxuICBwdWJsaWMgcmVzZXRBY3Rpb25zKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZj8ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VTZWxlY3Rpb25EaWFsb2coKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTtcblxuICAgIHRoaXMuYWN0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZEZuID0gbnVsbDtcbiAgICB0aGlzLmFsbFNlbGVjdGVkRm4gPSBudWxsO1xuICAgIHRoaXMuY2FuY2VsbGVkRm4gPSBudWxsO1xuXG4gICAgdGhpcy5jbG9zZVNlbGVjdGlvbkRpYWxvZygpO1xuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuX3NlbGVjdGlvbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb25SZWYgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuYWN0aW9uU2VsZWN0ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuX29uQWN0aW9uQWN0aW9ucyhkYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmNhbmNlbGxlZCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25DYW5jZWxBY3Rpb25zKCkpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLmFsbFNlbGVjdGVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLl9vblNlbGVjdEFsbEFjdGlvbnMoZGF0YSk7XG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHNvbWUgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcml2YXRlIF9vbkFjdGlvbkFjdGlvbnMoZGF0YSkge1xuICAgIGlmICghdGhpcy5hY3Rpb25TZWxlY3RlZEZuKSB7IHJldHVybiB9XG5cbiAgICAvLyBFeGVjdXRlIGNhbGxiYWNrXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hY3Rpb25TZWxlY3RlZEZuKHtcbiAgICAgIHNlbGVjdGVkOiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKS5tYXAoKHJvdykgPT4geyByZXR1cm4gey4uLnJvd319KSxcbiAgICAgIC4uLmRhdGFcbiAgICB9KTtcblxuICAgIC8vIElmIHJlc3VsdCBpcyBvYnNlcnZhYmxlXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcblxuICAgICAgLy8gU3Vic2NyaWJlIGFuZCB3aGFpdCB3aHkgaXQgcmVzb2x2ZWRcbiAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG5cbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcbiAgICAgICAgICB0aGlzLmNsb3NlU2VsZWN0aW9uRGlhbG9nKCk7XG5cbiAgICAgICAgICAvLyBVbmNoZWNrIGFsbCB2aXNpYmxlIHJvd3NcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbFZpc2libGVSb3dzKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgY2FuY2VsIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqL1xuICBwcml2YXRlIF9vbkNhbmNlbEFjdGlvbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxWaXNpYmxlUm93cyhmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jYW5jZWxsZWRGbikge1xuICAgICAgdGhpcy5jYW5jZWxsZWRGbigpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZiA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSWYgXCJTZWxlY3QgQWxsXCIgYWN0aW9uIHdhcyBjbGlja2VkIG9uIHNlbGVjdGlvbiByZWYgZGlhbG9nXG4gICAqIEBwYXJhbSBmbGFnXG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdEFsbEFjdGlvbnMoZmxhZykge1xuICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmxhZztcblxuICAgIHRoaXMuc2VsZWN0QWxsVmlzaWJsZVJvd3MoZmxhZyk7XG5cbiAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYudXBkYXRlU2VsZWN0ZWQodGhpcy5fdG90YWxSZWNvcmRzQ291bnQpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbCwgdGhpcy5fc2VsZWN0ZWRBbGwpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG5cbiAgICBpZiAoIXRoaXMuYWxsU2VsZWN0ZWRGbikgeyByZXR1cm4gfVxuXG4gICAgdGhpcy5hbGxTZWxlY3RlZEZuKGZsYWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKSB7XG4gICAgLy8gUmVtb3ZlIGFjdGlvbnMgaWYgbm8gcm93cyBzZWxlY3RlZFxuICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIFwiYmxpbmtcIiB3aGVuIHVzZXIgc2VsZWN0IGFueSBhY3Rpb25cbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoW10pO1xuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkRm4pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VsZWN0aW9uQ2hhbmdlZEZuKFxuICAgICAgICBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzLnZhbHVlcygpKSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCxcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgIHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKGFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMoYWN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZUFjdGlvbnMocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaW4gRGlhbG9nIFJlZiBob3cgbXVjaCByb3dzIHdhcyBzZWxlY3RlZFxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlU2VsZWN0aW9uUmVmU2VsZWN0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nUmVmLnVwZGF0ZVNlbGVjdGVkKHRoaXMuc2VsZWN0ZWRSb3dzLnNpemUpO1xuXG4gICAgICAvLyBTLVQxMjY4XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZEFjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGluIERpYWxvZyBSZWYgc2VsZWN0ZWQgYWxsIHN0YXR1c1xuICAgKlxuICAgKiBFeC46IFdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIERpYWxvZyBhbmQgYWZ0ZXIgdGhhdCBzb21lIGNoZWNrYm94IHdhcyB1bmNoZWNrZWRcbiAgICogRGlhbG9nIFJlZiBtdXN0IGtub3cgYWJvdXQgaXRcbiAgICpcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25EaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZ1JlZi51cGRhdGVTZWxlY3RlZEFsbFN0YXR1cyh0aGlzLl9zZWxlY3RlZEFsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFsbCB2aXNpYmxlIHJvd3Mgd2FzIGNoZWNrZWQgYW5kIHNlbmQgZXZlbnQgdG8gbWFpbiBoZWFkZXIgY2hlY2tib3hcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGVkVmlzaWJsZVN0YXR1cygpIHtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSB0aGlzLl9zZWxlY3RlZFJlY29yZHMgIT09IDAgJiYgdGhpcy5fc2VsZWN0ZWRSZWNvcmRzID09PSB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50O1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlRXZlbnQoXG4gICAgICBTZWxlY3Rpb25DaGFuZ2VUeXBlLlJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSWYgc2VsZWN0IGFsbCBjaGVja2JveCBpbiBoZWFkZXIgd2FzIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgX3Zpc2libGVSb3dzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VFdmVudChcbiAgICAgIFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZSxcbiAgICAgIHRoaXMuX3NlbGVjdGVkQWxsVmlzaWJsZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNvbnN0cnVjdG9yIGZvciBldmVudHNcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZUV2ZW50KHR5cGU6IFNlbGVjdGlvbkNoYW5nZVR5cGUsIHBheWxvYWQpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2UubmV4dCh7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByb3cgaWRlbnRpZmllZCBieSB0cmFja0J5IHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfcm93SWRlbnRpZmllcihyb3cpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gX2dldChyb3csIHRoaXMuX3RyYWNrQnksIHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1NlbGVjdGlvbiBjYW4gbm90IHJlY29nbml6ZSB0cmFjayBieSBmaWVsZCBmb3Igcm93LiAnICtcbiAgICAgICAgJ1BsZWFzZSBjaGVjayBpZiB5b3UgaGFkIGNvbmZpZ3VyZWQgdHJhY2tCeSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIHJldHVybiBpZGVudGlmaWVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgcm93LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm93KSA9PiB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdENoaWxkUm93KHJvdylcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2V0KGlkZW50aWZpZXIsIHJvdy5kYXRhKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkcysrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Um93KHJvdykge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5kYXRhKTtcblxuICAgIGlmIChyb3cuaXNHcm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5kZWxldGUoaWRlbnRpZmllcik7XG5cbiAgICAgIHJvdy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdykgPT4ge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdFJvdyhjaGlsZFJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvdy5pc0NoaWxkICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgICB0aGlzLl9kZXNlbGVjdENoaWxkUm93KHJvdyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUmVjb3Jkcy0tO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdENoaWxkUm93KHJvdykge1xuICAgIGNvbnN0IHBhcmVudElkZW50aWZpZXIgPSB0aGlzLl9yb3dJZGVudGlmaWVyKHJvdy5wYXJlbnQuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbk51bWJlciA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZ2V0KHBhcmVudElkZW50aWZpZXIpIHx8IDA7XG5cbiAgICB0aGlzLl9zZXROdW1iZXJPZlNlbGVjdGVkQ2hpbGRyZW5Jbkdyb3VwKHBhcmVudElkZW50aWZpZXIsIHNlbGVjdGVkQ2hpbGRyZW5OdW1iZXIgKyAxKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc2VsZWN0Q2hpbGRSb3cocm93KSB7XG4gICAgY29uc3QgcGFyZW50SWRlbnRpZmllciA9IHRoaXMuX3Jvd0lkZW50aWZpZXIocm93LnBhcmVudC5kYXRhKTtcbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5nZXQocGFyZW50SWRlbnRpZmllcikgfHwgMDtcblxuICAgIGlmIChzZWxlY3RlZENoaWxkcmVuTnVtYmVyID4gMSkge1xuICAgICAgdGhpcy5fc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChwYXJlbnRJZGVudGlmaWVyLCBzZWxlY3RlZENoaWxkcmVuTnVtYmVyIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldE51bWJlck9mU2VsZWN0ZWRDaGlsZHJlbkluR3JvdXAocGFyZW50SWRlbnRpZmllciwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TnVtYmVyT2ZTZWxlY3RlZENoaWxkcmVuSW5Hcm91cChpZGVudGlmaWVyOiBzdHJpbmcsIG46IG51bWJlcikge1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLmRlbGV0ZShpZGVudGlmaWVyKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMuc2V0KGlkZW50aWZpZXIsIG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLl9zZWxlY3RlZEFsbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLl92aXNpYmxlUmVjb3Jkc0NvdW50ID0gMDtcbiAgICB0aGlzLl9zZWxlY3RlZFJlY29yZHMgPSAwO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG5cbiAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25SZWZTZWxlY3RlZCgpO1xuICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvblJlZlNlbGVjdGVkQWxsKCk7XG4gICAgdGhpcy5fdmlzaWJsZVJvd3NTZWxlY3Rpb25DaGFuZ2VkKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -9,8 +9,8 @@ import * as i2 from "./row/row.component";
|
|
|
9
9
|
import * as i3 from "@angular/common";
|
|
10
10
|
import * as i4 from "../../directives/draggable-row/draggable-row.directive";
|
|
11
11
|
export class FsBodyComponent {
|
|
12
|
-
constructor(
|
|
13
|
-
this.
|
|
12
|
+
constructor(reorderController, el, cdRef, differs) {
|
|
13
|
+
this.reorderController = reorderController;
|
|
14
14
|
this.el = el;
|
|
15
15
|
this.cdRef = cdRef;
|
|
16
16
|
this.differs = differs;
|
|
@@ -35,7 +35,7 @@ export class FsBodyComponent {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
FsBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, deps: [{ token: i1.ReorderController }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
FsBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsBodyComponent, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [ngClass]=\"{ 'drag-row':
|
|
38
|
+
FsBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsBodyComponent, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [ngClass]=\"{ 'drag-row': reorderController.enabled }\"\n [rowRemoved]=\"rowRemoved\"\n #activeRow>\n </tr>\n</ng-container>\n", components: [{ type: i2.FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{
|
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
72
72
|
type: ContentChild,
|
|
73
73
|
args: [FsRowComponent, { read: TemplateRef, static: true }]
|
|
74
74
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYm9keS9ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L2JvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxlQUFlLEVBRWYsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQVFyRCxNQUFNLE9BQU8sZUFBZTtJQXFCMUIsWUFDUyxpQkFBb0MsRUFDbkMsRUFBYyxFQUNkLEtBQXdCLEVBQ3hCLE9BQXdCO1FBSHpCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBdkJ6QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBU3JCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBUWhDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7OzZHQXZDVSxlQUFlO2lHQUFmLGVBQWUsd1lBY1osY0FBYywyQkFBVSxXQUFXLHNJQURiLGdCQUFnQiwyQ0M3Q3RELHdrQkFrQkE7NEZEY2EsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7K0xBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFZ0UsYUFBYTtzQkFBbEYsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFcEUsY0FBYztzQkFEYixZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlRGlmZmVyLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uL21vZGVscy9yb3cnO1xuXG5pbXBvcnQgeyBGc1Jvd0NvbXBvbmVudCB9IGZyb20gJy4vcm93L3Jvdy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LWJvZHldJyxcbiAgdGVtcGxhdGVVcmw6ICdib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnNCb2R5Q29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcm93czogUm93W107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IENvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIGhhc0Zvb3RlciA9IGZhbHNlO1xuICBASW5wdXQoKSByb3dBY3Rpb25zUmF3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cEFjdGlvbnNSYXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHJvd0V2ZW50cyA9IHt9O1xuICBASW5wdXQoKSByb3dDbGFzcztcbiAgQElucHV0KCkgaGFzUm93QWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIHJlc3RvcmVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd1JlbW92ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3Jvd3NDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSByb3dzQ29udGFpbmVyO1xuICBAQ29udGVudENoaWxkKEZzUm93Q29tcG9uZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBfcm93c0RpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICApIHtcbiAgICB0aGlzLl9yb3dzRGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLl9yb3dzRGlmZmVyLmRpZmYodGhpcy5yb3dzKSkge1xuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAvLyAgKiBAcGFyYW0gaW5kZXhcbiAgLy8gICogQHBhcmFtIGl0ZW1cbiAgLy8gICovXG4gIC8vIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcbiAgLy8gICAvLyBUT0RPIGltcHJvdmUgd2l0aCB0cmFjayBieSBpZFxuICAvLyAgIHJldHVybiBpbmRleDtcbiAgLy8gfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXg7XCI+XG4gIDx0ciBmcy1saXN0LXJvd1xuICAgICAgZnNMaXN0RHJhZ2dhYmxlUm93XG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbcm93SW5kZXhdPVwiaVwiXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgIFtyb3dBY3Rpb25zUmF3XT1cInJvd0FjdGlvbnNSYXdcIlxuICAgICAgW2dyb3VwQWN0aW9uc1Jhd109XCJncm91cEFjdGlvbnNSYXdcIlxuICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwiaGFzUm93QWN0aW9uc1wiXG4gICAgICBbcm93RXZlbnRzXT1cInJvd0V2ZW50c1wiXG4gICAgICBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIlxuICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxuICAgICAgW3Jlc3RvcmVNb2RlXT1cInJlc3RvcmVNb2RlXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2RyYWctcm93JzogcmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCB9XCJcbiAgICAgIFtyb3dSZW1vdmVkXT1cInJvd1JlbW92ZWRcIlxuICAgICAgI2FjdGl2ZVJvdz5cbiAgPC90cj5cbjwvbmctY29udGFpbmVyPlxuIl19
|