@fundamental-ngx/platform 0.43.8 → 0.43.10

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.
Files changed (39) hide show
  1. package/dynamic-page/dynamic-page.component.d.ts +4 -2
  2. package/esm2020/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
  3. package/esm2020/approval-flow/approval-flow.component.mjs +1 -1
  4. package/esm2020/dynamic-page/dynamic-page.component.mjs +9 -6
  5. package/esm2020/search-field/search-field.component.mjs +3 -3
  6. package/esm2020/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +27 -21
  7. package/esm2020/table/components/table-header-row/table-header-row.component.mjs +3 -3
  8. package/esm2020/table/table.component.mjs +14 -9
  9. package/esm2020/table-helpers/helpers.mjs +45 -9
  10. package/esm2020/table-helpers/models/column-freeze-event.model.mjs +1 -1
  11. package/esm2020/table-helpers/table.mjs +1 -1
  12. package/fesm2015/fundamental-ngx-platform-approval-flow.mjs +2 -2
  13. package/fesm2015/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  14. package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs +9 -6
  15. package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  16. package/fesm2015/fundamental-ngx-platform-search-field.mjs +2 -2
  17. package/fesm2015/fundamental-ngx-platform-search-field.mjs.map +1 -1
  18. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +40 -4
  19. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  20. package/fesm2015/fundamental-ngx-platform-table.mjs +43 -28
  21. package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
  22. package/fesm2020/fundamental-ngx-platform-approval-flow.mjs +2 -2
  23. package/fesm2020/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  24. package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs +9 -6
  25. package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  26. package/fesm2020/fundamental-ngx-platform-search-field.mjs +2 -2
  27. package/fesm2020/fundamental-ngx-platform-search-field.mjs.map +1 -1
  28. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +40 -4
  29. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  30. package/fesm2020/fundamental-ngx-platform-table.mjs +39 -28
  31. package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
  32. package/fundamental-ngx-platform-v0.43.10.tgz +0 -0
  33. package/package.json +4 -4
  34. package/schematics/ng-add/index.js +1 -1
  35. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +9 -13
  36. package/table-helpers/helpers.d.ts +7 -5
  37. package/table-helpers/models/column-freeze-event.model.d.ts +5 -0
  38. package/table-helpers/table.d.ts +1 -1
  39. package/fundamental-ngx-platform-v0.43.8.tgz +0 -0
@@ -1,21 +1,21 @@
1
- import { isString } from '@fundamental-ngx/cdk/utils';
2
- import { TableRowType } from './enums/row-type.enum';
3
- import { isTableRow, TableRowImpl } from './models/table-row.model';
4
- import { SelectionMode } from './enums/selection-mode.enum';
1
+ import { dfs, isString } from '@fundamental-ngx/cdk/utils';
5
2
  import { isDataSource } from '@fundamental-ngx/platform/shared';
3
+ import { isObservable } from 'rxjs';
6
4
  import { ArrayTableDataSource } from './domain/array-data-source';
7
5
  import { ObservableTableDataSource } from './domain/observable-data-source';
6
+ import { TableRowType } from './enums/row-type.enum';
7
+ import { SelectionMode } from './enums/selection-mode.enum';
8
+ import { SortDirection } from './enums/sort-direction.enum';
8
9
  import cloneDeep from 'lodash-es/cloneDeep';
9
10
  import set from 'lodash-es/set';
10
- import { SortDirection } from './enums/sort-direction.enum';
11
11
  import get from 'lodash-es/get';
12
- import { isObservable } from 'rxjs';
12
+ import { isTableRow, TableRowImpl } from './models/table-row.model';
13
13
  /** @hidden */
14
14
  export function newTableRow(row) {
15
15
  if (!row.value) {
16
16
  throw new Error('Unexpected value. TableRow.value cannot be undefined.');
17
17
  }
18
- const newRow = new TableRowImpl({
18
+ return new TableRowImpl({
19
19
  type: row.type || TableRowType.ITEM,
20
20
  checked: row.checked || false,
21
21
  index: row.index || 0,
@@ -29,7 +29,6 @@ export function newTableRow(row) {
29
29
  state: row.state || 'readonly',
30
30
  children: row.children || []
31
31
  });
32
- return newRow;
33
32
  }
34
33
  /** @hidden */
35
34
  export function getSelectableRows(rows, selectableKey) {
@@ -141,6 +140,35 @@ export function convertTreeObjectsToTableRows(source, selectionMode, tableRows,
141
140
  row.children.push(...children);
142
141
  rows.push(...children);
143
142
  }
143
+ if (row.level === 0 && row.isTree) {
144
+ dfs([row], (r) => {
145
+ const children = r.children || [];
146
+ const selectedChildren = [];
147
+ const indeterminateChildren = [];
148
+ children.forEach((child) => {
149
+ if (child.checked === true) {
150
+ selectedChildren.push(child);
151
+ }
152
+ else if (child.checked === null) {
153
+ indeterminateChildren.push(child);
154
+ }
155
+ });
156
+ const selectedAll = selectedChildren.length === children.length && children.length > 0;
157
+ const selectedSome = selectedChildren.length > 0;
158
+ if (r.checked) {
159
+ applySelectionToChildren(rows, r, [], []);
160
+ return;
161
+ }
162
+ if (selectedAll) {
163
+ r.checked = true;
164
+ return;
165
+ }
166
+ if (selectedSome || indeterminateChildren.length > 0) {
167
+ r.checked = null;
168
+ return;
169
+ }
170
+ });
171
+ }
144
172
  });
145
173
  return rows;
146
174
  }
@@ -166,6 +194,14 @@ export function getSelectionStatusByRowValue(source, selectionMode, tableRows, r
166
194
  return rowMap;
167
195
  }
168
196
  /** @hidden */
197
+ export function applySelectionToChildren(allRows, row, addedRows, removedRows) {
198
+ const allChildren = findRowChildren(row, allRows);
199
+ allChildren.forEach((r) => {
200
+ r.checked = row.checked;
201
+ r.checked ? addedRows.push(r) : removedRows.push(r);
202
+ });
203
+ }
204
+ /** @hidden */
169
205
  export function findRowChildren(row, allRows) {
170
206
  const rowsLength = allRows.length;
171
207
  /**
@@ -367,4 +403,4 @@ export function convertObjectsToTableRows(source, addedItems, selectedKey, rowNa
367
403
  export function isTreeRowFirstCell(cellIndex, row, event) {
368
404
  return (cellIndex === 0 && isTreeRow(row)) || (!!event && !row.isTree);
369
405
  }
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFZLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQXNCLE1BQU0sNkJBQTZCLENBQUM7QUFJaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUdoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsY0FBYztBQUNkLE1BQU0sVUFBVSxXQUFXLENBQVUsR0FBeUI7SUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7S0FDNUU7SUFFRCxNQUFNLE1BQU0sR0FBZ0IsSUFBSSxZQUFZLENBQUM7UUFDekMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUk7UUFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksS0FBSztRQUM3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QUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDakcsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBTyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDO1lBQ3BCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN6RCxLQUFLO1lBQ0wsS0FBSyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN6RCxHQUFHLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDaEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQWlCLEVBQUUsR0FBYSxFQUFFLEtBQWE7SUFDOUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlUm93VHlwZSB9IGZyb20gJy4vZW51bXMvcm93LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBpc1RhYmxlUm93LCBUYWJsZVJvdywgVGFibGVSb3dJbXBsIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtcm93Lm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZSwgU2VsZWN0aW9uTW9kZVZhbHVlIH0gZnJvbSAnLi9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtJztcbmltcG9ydCB7IFJvd0NvbXBhcmF0b3IgfSBmcm9tICcuL21vZGVscy9yb3ctY29tcGFyYXRvci5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBGZHBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL21vZGVscy9kYXRhLXNvdXJjZS50eXBlJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IEFycmF5VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4vYXJyYXktZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vZG9tYWluL29ic2VydmFibGUtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gtZXMvY2xvbmVEZWVwJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLWVzL3NldCc7XG5pbXBvcnQgeyBHcm91cFRhYmxlUm93VmFsdWVUeXBlLCBUcmVlTGlrZSB9IGZyb20gJy4vbW9kZWxzL3RyZWUtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3NvcnQtZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gtZXMvZ2V0JztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld1RhYmxlUm93PFQgPSBhbnk+KHJvdzogUGFydGlhbDxUYWJsZVJvdzxUPj4pOiBUYWJsZVJvdzxUPiB7XG4gICAgaWYgKCFyb3cudmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlLiBUYWJsZVJvdy52YWx1ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1JvdzogVGFibGVSb3c8VD4gPSBuZXcgVGFibGVSb3dJbXBsKHtcbiAgICAgICAgdHlwZTogcm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgIGNoZWNrZWQ6IHJvdy5jaGVja2VkIHx8IGZhbHNlLFxuICAgICAgICBpbmRleDogcm93LmluZGV4IHx8IDAsXG4gICAgICAgIHZhbHVlOiByb3cudmFsdWUsXG4gICAgICAgIHBhcmVudDogcm93LnBhcmVudCB8fCBudWxsLFxuICAgICAgICBsZXZlbDogcm93LmxldmVsIHx8IDAsXG4gICAgICAgIGV4cGFuZGFibGU6IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogcm93LmV4cGFuZGVkIHx8IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHJvdy5oaWRkZW4gfHwgZmFsc2UsXG4gICAgICAgIG5hdmlnYXRhYmxlOiByb3cubmF2aWdhdGFibGUgfHwgZmFsc2UsXG4gICAgICAgIHN0YXRlOiByb3cuc3RhdGUgfHwgJ3JlYWRvbmx5JyxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5jaGlsZHJlbiB8fCBbXVxuICAgIH0pO1xuICAgIHJldHVybiBuZXdSb3c7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0YWJsZVJvd3Mocm93czogVGFibGVSb3dbXSwgc2VsZWN0YWJsZUtleTogc3RyaW5nKTogVGFibGVSb3dbXSB7XG4gICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyb3cpID0+IGlzU2VsZWN0YWJsZVJvdyhyb3csIHNlbGVjdGFibGVLZXkpKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGFibGVSb3cocm93OiBUYWJsZVJvdywgc2VsZWN0YWJsZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChpc0l0ZW1Sb3cocm93KSB8fCBpc1RyZWVSb3cocm93KSkgJiYgcm93LnZhbHVlW3NlbGVjdGFibGVLZXldICE9PSBmYWxzZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0l0ZW1Sb3cocm93OiBUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByb3cudHlwZSA9PT0gVGFibGVSb3dUeXBlLklURU07XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVlUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5UUkVFO1xufVxuXG4vKipcbiAqIFNpbmNlIHdlIGRvbnQgd29yayB3aXRoIHRoZSB0cmVlLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaW5jb21pbmcgdHJlZSB0b1xuICogZmxhdCBmb3JtYXQgd2hpbGUgbWFpbnRhaW5pbmcgb3JpZ2luYWwgc3RhdGUuXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRyZWVUYWJsZVJvd1RvRmxhdExpc3Q8VD4ocm93czogVGFibGVSb3c8VD5bXSwgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW4pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBsZXQgZmxhdExpc3Q6IFRhYmxlUm93W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiByb3dzKSB7XG4gICAgICAgIGl0ZW0ubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0gYXMgVCwgcm93TmF2aWdhdGFibGUpO1xuICAgICAgICBmbGF0TGlzdC5wdXNoKGl0ZW0pO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGMpID0+IChjLmhpZGRlbiA9ICFpdGVtLmV4cGFuZGVkKSk7XG4gICAgICAgICAgICBmbGF0TGlzdCA9IGZsYXRMaXN0LmNvbmNhdChjb252ZXJ0VHJlZVRhYmxlUm93VG9GbGF0TGlzdChpdGVtLmNoaWxkcmVuLCByb3dOYXZpZ2F0YWJsZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmbGF0TGlzdDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Jvd05hdmlnYXRhYmxlPFQ+KHJvdzogVCwgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXJvdykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIElmIGtleSBvZiB0aGUgcm93J3MgaXRlbSBmaWVsZCBwYXNzZWQgKi9cbiAgICBpZiAoaXNTdHJpbmcocm93TmF2aWdhdGFibGUpKSB7XG4gICAgICAgIHJldHVybiAhIXJvd1tyb3dOYXZpZ2F0YWJsZSBhcyBzdHJpbmddO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJvd05hdmlnYXRhYmxlO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWV6YWJsZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSwgZnJlZXplQ29sdW1uc1RvOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICBpZiAoIWNvbHVtbnMubGVuZ3RoIHx8ICFmcmVlemVDb2x1bW5zVG8pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKCFjb2x1bW4ubmFtZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1c2luZyBjb2x1bW5OYW1lcy5zaXplIGFzIGluZGV4IG9mIGEgY29sdW1uXG4gICAgICAgIGNvbHVtbk5hbWVzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uTmFtZXMuc2l6ZSk7XG5cbiAgICAgICAgaWYgKGNvbHVtbi5uYW1lID09PSBmcmVlemVDb2x1bW5zVG8pIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgTWFwKCk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnJlZXphYmxlRW5kQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBmcmVlemVFbmRDb2x1bW5zVG86IHN0cmluZyk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIGlmICghY29sdW1ucy5sZW5ndGggfHwgIWZyZWV6ZUVuZENvbHVtbnNUbykge1xuICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IGNvbHVtbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgLy8gdXNpbmcgY29sdW1uTmFtZXMuc2l6ZSBhcyBpbmRleCBvZiBhIGNvbHVtblxuICAgICAgICBjb2x1bW5OYW1lcy5zZXQoY29sdW1uc1tpXS5uYW1lLCBjb2x1bW5OYW1lcy5zaXplKTtcblxuICAgICAgICBpZiAoY29sdW1uc1tpXS5uYW1lID09PSBmcmVlemVFbmRDb2x1bW5zVG8pIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgTWFwKCk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRyZWVPYmplY3RzVG9UYWJsZVJvd3M8VD4oXG4gICAgc291cmNlOiBUW10sXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIHRhYmxlUm93czogVGFibGVSb3c8VD5bXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yPFQ+LFxuICAgIHJlbGF0aW9uS2V5OiBzdHJpbmcsXG4gICAgaGFzQ2hpbGRyZW5LZXk6IHN0cmluZyxcbiAgICBzZWxlY3RlZEtleTogc3RyaW5nLFxuICAgIGV4cGFuZGVkU3RhdGVLZXk6IHN0cmluZyxcbiAgICByb3dOYXZpZ2F0YWJsZTogc3RyaW5nIHwgYm9vbGVhblxuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgY29uc3Qgcm93czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkUm93c01hcCA9IGdldFNlbGVjdGlvblN0YXR1c0J5Um93VmFsdWUoc291cmNlLCBzZWxlY3Rpb25Nb2RlLCB0YWJsZVJvd3MsIHJvd0NvbXBhcmF0b3IpO1xuXG4gICAgc291cmNlLmZvckVhY2goKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPVxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGl0ZW0sIHJlbGF0aW9uS2V5KSAmJlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpdGVtW3JlbGF0aW9uS2V5XSkgJiZcbiAgICAgICAgICAgIGl0ZW1bcmVsYXRpb25LZXldLmxlbmd0aDtcblxuICAgICAgICBjb25zdCByb3cgPSBpc1RhYmxlUm93KGl0ZW0gYXMgVGFibGVSb3c8VD4pXG4gICAgICAgICAgICA/IChpdGVtIGFzIFRhYmxlUm93PFQ+KVxuICAgICAgICAgICAgOiBuZXdUYWJsZVJvdyh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBoYXNDaGlsZHJlbiB8fCBpdGVtW2hhc0NoaWxkcmVuS2V5XSA9PT0gdHJ1ZSA/IFRhYmxlUm93VHlwZS5UUkVFIDogVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBpdGVtW3NlbGVjdGVkS2V5XSA/PyAhIXNlbGVjdGVkUm93c01hcC5nZXQoaXRlbSksXG4gICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJvdy5leHBhbmRlZCA9XG4gICAgICAgICAgICBleHBhbmRlZFN0YXRlS2V5ICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCBleHBhbmRlZFN0YXRlS2V5KVxuICAgICAgICAgICAgICAgID8gaXRlbVtleHBhbmRlZFN0YXRlS2V5XVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgIHJvdy5uYXZpZ2F0YWJsZSA9IGlzUm93TmF2aWdhdGFibGUoaXRlbSwgcm93TmF2aWdhdGFibGUpO1xuICAgICAgICByb3dzLnB1c2gocm93KTtcblxuICAgICAgICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY29udmVydFRyZWVPYmplY3RzVG9UYWJsZVJvd3MoXG4gICAgICAgICAgICAgICAgaXRlbVtyZWxhdGlvbktleV0sXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZSxcbiAgICAgICAgICAgICAgICB0YWJsZVJvd3MsXG4gICAgICAgICAgICAgICAgcm93Q29tcGFyYXRvcixcbiAgICAgICAgICAgICAgICByZWxhdGlvbktleSxcbiAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbktleSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleSxcbiAgICAgICAgICAgICAgICBleHBhbmRlZFN0YXRlS2V5LFxuICAgICAgICAgICAgICAgIHJvd05hdmlnYXRhYmxlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgYy5wYXJlbnQgPSBjLnBhcmVudCB8fCByb3c7XG4gICAgICAgICAgICAgICAgYy5sZXZlbCA9IGMucGFyZW50LmxldmVsICsgMTtcbiAgICAgICAgICAgICAgICBjLmhpZGRlbiA9ICFjLnBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcm93LmNoaWxkcmVuLnB1c2goLi4uY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICByb3dzLnB1c2goLi4uY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93cztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBSdW5zIGByb3dDb21wYXJhdG9yYCBmdW5jdGlvbiBhZ2FpbnN0IGNoZWNrZWQgcm93cyBhbmQgY29tcGFyZXMgdGhlbSB3aXRoIHRoZSBuZXcgYHNvdXJjZWBcbiAqIElmIG1hdGNoZWQsIGNyZWF0ZXMgYW4gYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUgc291cmNlIGl0ZW0gYW5kIGNoZWNrZWQgc3RhdHVzIG9mIGNvcnJlc3BvbmRpbmcgcm93LlxuICpcbiAqIEByZXR1cm5zIGBNYXBgIG9iamVjdCB3aXRoIHRoZSBgY2hlY2tlZGAgc3RhdHVzIGZvciBwYXJ0aWN1bGFyIHNvdXJjZSBpdGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlPFQ+KFxuICAgIHNvdXJjZTogVFtdLFxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICB0YWJsZVJvd3M6IFRhYmxlUm93W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvcjxUPlxuKTogTWFwPFQsIGJvb2xlYW4gfCBudWxsPiB7XG4gICAgY29uc3Qgcm93TWFwID0gbmV3IE1hcDxULCBib29sZWFuIHwgbnVsbD4oKTtcbiAgICBpZiAoXG4gICAgICAgIChzZWxlY3Rpb25Nb2RlID09PSBTZWxlY3Rpb25Nb2RlLlNJTkdMRSB8fCBzZWxlY3Rpb25Nb2RlID09PSBTZWxlY3Rpb25Nb2RlLk1VTFRJUExFKSAmJlxuICAgICAgICB0eXBlb2Ygcm93Q29tcGFyYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgICBjb25zdCBjaGVja2VkUm93cyA9IHRhYmxlUm93cy5maWx0ZXIoKHIpID0+IHIuY2hlY2tlZCk7XG4gICAgICAgIGNoZWNrZWRSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBzb3VyY2UuZmluZCgoZSkgPT4gcm93Q29tcGFyYXRvcihyb3cudmFsdWUsIGUpKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHJvd01hcC5zZXQoZm91bmQsIHJvdy5jaGVja2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb3dNYXA7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvd0NoaWxkcmVuPFQ+KHJvdzogVGFibGVSb3c8VD4sIGFsbFJvd3M6IFRhYmxlUm93PFQ+W10pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dzTGVuZ3RoID0gYWxsUm93cy5sZW5ndGg7XG5cbiAgICAvKipcbiAgICAgKiBTaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgZmxhdCBsaXN0XG4gICAgICogaXQgbWVhbnMgYWxsIGNoaWxkcmVuIGdvIG5leHQgcmlnaHQgYWZ0ZXIgdGhlIGV4cGFuZGFibGUgcm93XG4gICAgICogdW50aWwgdGhlIG5leHQgcm93IGhhcyBhIG11dHVhbCBwYXJlbnRcbiAgICAgKi9cblxuICAgIGxldCBpbmRleCA9IGFsbFJvd3MuaW5kZXhPZihyb3cpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBnZXRSb3dQYXJlbnRzKHJvdyk7XG4gICAgY29uc3QgY2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChpbmRleCsrIDwgcm93c0xlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0Um93ID0gYWxsUm93c1tpbmRleF07XG4gICAgICAgIGlmICghbmV4dFJvdz8ucGFyZW50IHx8IHBhcmVudHMuaW5jbHVkZXMobmV4dFJvdy5wYXJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbi5wdXNoKG5leHRSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBHZXQgcm93IHBhcmVudHMgcGF0aCB3aGVyZSB0aGUgZmlyc3QgaXMgdGhlIGRpcmVjdCBwYXJlbnRcbiAqIEBwYXJhbSByb3cgUm93IHdoaWNoIHBhcmVudHMgd2UgbmVlZCB0byBmaW5kXG4gKiBAcGFyYW0gdW50aWxQYXJlbnQgUGFyZW50IHRvIHN0b3AgYSBzZWFyY2ggb24uIERlZmF1bHQgaXMgXCJudWxsXCIgdGhhdCBtZWFucyBsb29rIHVwIHVudGlsIHRoZSByb290XG4gKiBAcmV0dXJucyBwYXJlbnRzIGxpc3QgW2RpcmVjdCBwYXJlbnQsIC4uLiwgYW5jZXN0b3JdXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dQYXJlbnRzPFQ+KHJvdzogVGFibGVSb3c8VD4sIHVudGlsUGFyZW50OiBUYWJsZVJvdzxUPiB8IG51bGwgPSBudWxsKTogVGFibGVSb3c8VD5bXSB7XG4gICAgdW50aWxQYXJlbnQgPSB1bnRpbFBhcmVudCB8fCBudWxsOyAvLyB0byBhdm9pZCBcInVuZGVmaW5lZFwiXG4gICAgY29uc3QgcGFyZW50czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgIGxldCBwYXJlbnQgPSByb3cucGFyZW50IHx8IG51bGw7IC8vIGVtcHR5IHBhcmVudCBzaG91bGQgYmUgY29lcmNlZCB0byBcIm51bGxcIiBkbyBub3QgZ2V0IGludG8gaW5maW5pdGUgbG9vcFxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50ICE9PSB1bnRpbFBhcmVudCkge1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudCB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGFTdHJlYW08VD4oc291cmNlOiBGZHBUYWJsZURhdGFTb3VyY2U8VD4pOiBUYWJsZURhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc0RhdGFTb3VyY2Uoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gc291cmNlIGFzIFRhYmxlRGF0YVNvdXJjZTxUPjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlUYWJsZURhdGFTb3VyY2Uoc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogQGhpZGRlblxuICogQ3JlYXRlcyBhbiBlbXB0eSBjb2x1bW4gc2tlbGV0b24gb2JqZWN0LlxuICogQHJldHVybnMgQ29sdW1uIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROZXdSb3dTa2VsZXRvbjxUPihlZGl0YWJsZVJvd1NrZWxldG9uOiBULCBjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogVCB7XG4gICAgaWYgKGVkaXRhYmxlUm93U2tlbGV0b24pIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRGVlcChlZGl0YWJsZVJvd1NrZWxldG9uKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Um93ID0ge307XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbmV3Um93ID0gc2V0KG5ld1JvdywgY29sdW1uLmtleSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSb3cgYXMgVDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5HUk9VUDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhcbiAgICBncm91cGVkUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10sXG4gICAgZ3JvdXBSdWxlc01hcDogTWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPlxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIGlmICghZ3JvdXBlZFJvd3NbMF0gfHwgIWlzR3JvdXBSb3coZ3JvdXBlZFJvd3NbMF0pKSB7XG4gICAgICAgIHJldHVybiBncm91cGVkUm93cztcbiAgICB9XG5cbiAgICBjb25zdCB0cmVlTGlrZVJvd3MgPSBncm91cGVkUm93cyBhcyBUcmVlTGlrZTxUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPj5bXTtcbiAgICBjb25zdCBmaXJzdFJvdyA9IHRyZWVMaWtlUm93c1swXTtcblxuICAgIHRyZWVMaWtlUm93cy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBpZiAoZ3JvdXAuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICBncm91cC5fY2hpbGRyZW4gPSBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhncm91cC5fY2hpbGRyZW4sIGdyb3VwUnVsZXNNYXApO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBncm91cFJ1bGUgPSBncm91cFJ1bGVzTWFwLmdldChmaXJzdFJvdy52YWx1ZS5maWVsZCk7XG5cbiAgICBpZiAoIWdyb3VwUnVsZSB8fCBncm91cFJ1bGUuZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLk5PTkUpIHtcbiAgICAgICAgcmV0dXJuIHRyZWVMaWtlUm93cztcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBncm91cFJ1bGUuZGlyZWN0aW9uO1xuICAgIGNvbnN0IGRpcmVjdGlvbk11bHRpcGxpZXIgPSBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uQVNDID8gMSA6IGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5ERVNDID8gLTEgOiAwO1xuXG4gICAgcmV0dXJuIHRyZWVMaWtlUm93cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYVZhbHVlID0gYS52YWx1ZS52YWx1ZSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGJWYWx1ZSA9IGIudmFsdWUudmFsdWUgYXMgYW55O1xuXG4gICAgICAgIGNvbnN0IGFOdW1iZXIgPSBOdW1iZXIucGFyc2VGbG9hdChhVmFsdWUpO1xuICAgICAgICBjb25zdCBiTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQoYlZhbHVlKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYU51bWJlcikgJiYgIU51bWJlci5pc05hTihiTnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIChhTnVtYmVyIC0gYk51bWJlcikgKiBkaXJlY3Rpb25NdWx0aXBsaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChhVmFsdWUgPiBiVmFsdWUgPyAxIDogLTEpICogZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHJlZUxpa2VUb0ZsYXRMaXN0PEs+KHRyZWVMaWtlTGlzdDogVHJlZUxpa2U8Sz5bXSk6IEtbXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBLW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlTGlrZUxpc3QpIHtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLl9jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZsYXRMaXN0ID0gZmxhdExpc3QuY29uY2F0KGNvbnZlcnRUcmVlTGlrZVRvRmxhdExpc3QoaXRlbS5fY2hpbGRyZW4pKTtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLl9jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmbGF0TGlzdDtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBHcm91cCB0YWJsZSByb3dzIGFuZCByZXR1cm4gdHJlZSBsaWtlIHJvd3MgbGlzdC5cbiAqIEl0J3MgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5LlxuICogQHBhcmFtIHJ1bGVzIGdyb3VwIHJ1bGVzIHRvIGdyb3VwIGJ5XG4gKiBAcGFyYW0gcm93cyBzb3VyY2UgdGFibGUgcm93c1xuICogQHBhcmFtIHBhcmVudCByb3cgcGFyZW50XG4gKiBAcGFyYW0gbGV2ZWwgbGV2ZWwgb2YgbmVzdGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUoXG4gICAgcnVsZXM6IENvbGxlY3Rpb25Hcm91cFtdLFxuICAgIHJvd3M6IFRhYmxlUm93W10sXG4gICAgcGFyZW50OiBUYWJsZVJvdyB8IG51bGwgPSBudWxsLFxuICAgIGxldmVsID0gMFxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIHJ1bGVzID0gWy4uLnJ1bGVzXTtcblxuICAgIGlmICghcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIG5vIHJ1bGVzIG1lYW4gdGhhdCBpdCdzIHRoZSBsZXZlbCBvZiBzb3VyY2UgaXRlbXNcbiAgICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICByb3cubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIHJvdy5oaWRkZW4gPSAhIXBhcmVudCAmJiAhcGFyZW50LmV4cGFuZGVkO1xuICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUmV0cmlldmUgZmlyc3QgZ3JvdXAgcnVsZVxuICAgIGNvbnN0IHJ1bGUgPSBydWxlcy5zaGlmdCgpITtcblxuICAgIC8vIEJ1aWxkIG1hcCBvZiB1bmlxdWUgdmFsdWVzIGZvciBhIGdpdmVuIGdyb3VwIHJ1bGVcbiAgICBjb25zdCB2YWx1ZXNIYXNoID0gcm93c1xuICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlICE9PSAnZWRpdGFibGUnKVxuICAgICAgICAucmVkdWNlKChoYXNoLCByb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSBnZXQocm93LnZhbHVlLCBydWxlLmZpZWxkKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNoLmhhcyhtb2RlbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGhhc2guc2V0KG1vZGVsVmFsdWUsIFtdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzaC5nZXQobW9kZWxWYWx1ZSk/LnB1c2gocm93KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgICAgIH0sIG5ldyBNYXA8dW5rbm93biwgVGFibGVSb3dbXT4oKSk7XG5cbiAgICAvLyBCdWlsZCB0YWJsZSByb3dzIHRyZWVcbiAgICBsZXQgZ3JvdXBlZFRhYmxlUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10gPSBbXTtcblxuICAgIGlmIChyb3dzLnNvbWUoKHIpID0+IHIuc3RhdGUgPT09ICdlZGl0YWJsZScpKSB7XG4gICAgICAgIGdyb3VwZWRUYWJsZVJvd3MgPSByb3dzXG4gICAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlID09PSAnZWRpdGFibGUnKVxuICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgcm93LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICByb3cubGV2ZWwgPSAtMTtcbiAgICAgICAgICAgICAgICByb3cuaGlkZGVuID0gISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbdmFsdWUsIHZhbHVlc10gb2YgQXJyYXkuZnJvbSh2YWx1ZXNIYXNoKSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFJvd3MgPSByb3dzLmZpbHRlcigoX2l0ZW0pID0+IHZhbHVlcy5pbmNsdWRlcyhfaXRlbSkpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwVGFibGVSb3c6IFRyZWVMaWtlPFRhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+PiA9IG5ld1RhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+KHtcbiAgICAgICAgICAgIHR5cGU6IFRhYmxlUm93VHlwZS5HUk9VUCxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICB2YWx1ZTogeyBmaWVsZDogcnVsZS5maWVsZCwgdmFsdWUsIGNvdW50OiAwIH0sXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGhpZGRlbjogISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZHMgZ3JvdXAncyBjaGlsZHJlbiByb3dzXG4gICAgICAgIGdyb3VwVGFibGVSb3cuX2NoaWxkcmVuID0gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUocnVsZXMsIGZpbHRlcmVkUm93cywgZ3JvdXBUYWJsZVJvdywgbGV2ZWwgKyAxKTtcblxuICAgICAgICBncm91cFRhYmxlUm93LnZhbHVlLmNvdW50ID0gZ3JvdXBUYWJsZVJvdy5fY2hpbGRyZW4/Lmxlbmd0aDtcblxuICAgICAgICBncm91cGVkVGFibGVSb3dzLnB1c2goZ3JvdXBUYWJsZVJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwZWRUYWJsZVJvd3M7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE9iamVjdHNUb1RhYmxlUm93czxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBhZGRlZEl0ZW1zOiBUW10sXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICByb3dOYXZpZ2F0YWJsZTogYm9vbGVhbiB8IHN0cmluZyxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgcm93czogVGFibGVSb3dbXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yXG4pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dJdGVtID0gc291cmNlWzBdIGFzIGFueTtcblxuICAgIGlmIChpc1RhYmxlUm93KHJvd0l0ZW0pKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgVGFibGVSb3dbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgcm93cywgcm93Q29tcGFyYXRvcik7XG4gICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNOZXdJdGVtID0gYWRkZWRJdGVtcy5pbmNsdWRlcyhpdGVtKTtcbiAgICAgICAgY29uc3Qgcm93ID0gbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgdHlwZTogVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgICAgICBjaGVja2VkOiBpdGVtW3NlbGVjdGVkS2V5XSA/PyAhIXNlbGVjdGVkUm93c01hcC5nZXQoaXRlbSksXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgIH0pO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93LnN0YXRlID0gaXNOZXdJdGVtID8gJ2VkaXRhYmxlJyA6ICdyZWFkb25seSc7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVlUm93Rmlyc3RDZWxsKGNlbGxJbmRleDogbnVtYmVyLCByb3c6IFRhYmxlUm93LCBldmVudD86IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChjZWxsSW5kZXggPT09IDAgJiYgaXNUcmVlUm93KHJvdykpIHx8ICghIWV2ZW50ICYmICFyb3cuaXNUcmVlKTtcbn1cbiJdfQ==
406
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJNUQsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBRWhDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFZLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzlFLGNBQWM7QUFDZCxNQUFNLFVBQVUsV0FBVyxDQUFVLEdBQXlCO0lBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxJQUFJLFlBQVksQ0FBQztRQUNwQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSTtRQUNuQyxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxLQUFLO1FBQzdC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QUMsVUFBVSxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLEdBQWEsRUFBRSxLQUFhO0lBQzlFLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGZzLCBpc1N0cmluZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXJyYXlUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi9hcnJheS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuL2VudW1zL3Jvdy10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZSwgU2VsZWN0aW9uTW9kZVZhbHVlIH0gZnJvbSAnLi9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3NvcnQtZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZkcFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vbW9kZWxzL2RhdGEtc291cmNlLnR5cGUnO1xuaW1wb3J0IHsgUm93Q29tcGFyYXRvciB9IGZyb20gJy4vbW9kZWxzL3Jvdy1jb21wYXJhdG9yLm1vZGVsJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLWVzL2Nsb25lRGVlcCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC1lcy9zZXQnO1xuaW1wb3J0IHsgR3JvdXBUYWJsZVJvd1ZhbHVlVHlwZSwgVHJlZUxpa2UgfSBmcm9tICcuL21vZGVscy90cmVlLXRhYmxlLm1vZGVsJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLWVzL2dldCc7XG5pbXBvcnQgeyBpc1RhYmxlUm93LCBUYWJsZVJvdywgVGFibGVSb3dJbXBsIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtcm93Lm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld1RhYmxlUm93PFQgPSBhbnk+KHJvdzogUGFydGlhbDxUYWJsZVJvdzxUPj4pOiBUYWJsZVJvdzxUPiB7XG4gICAgaWYgKCFyb3cudmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlLiBUYWJsZVJvdy52YWx1ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVGFibGVSb3dJbXBsKHtcbiAgICAgICAgdHlwZTogcm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgIGNoZWNrZWQ6IHJvdy5jaGVja2VkIHx8IGZhbHNlLFxuICAgICAgICBpbmRleDogcm93LmluZGV4IHx8IDAsXG4gICAgICAgIHZhbHVlOiByb3cudmFsdWUsXG4gICAgICAgIHBhcmVudDogcm93LnBhcmVudCB8fCBudWxsLFxuICAgICAgICBsZXZlbDogcm93LmxldmVsIHx8IDAsXG4gICAgICAgIGV4cGFuZGFibGU6IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogcm93LmV4cGFuZGVkIHx8IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHJvdy5oaWRkZW4gfHwgZmFsc2UsXG4gICAgICAgIG5hdmlnYXRhYmxlOiByb3cubmF2aWdhdGFibGUgfHwgZmFsc2UsXG4gICAgICAgIHN0YXRlOiByb3cuc3RhdGUgfHwgJ3JlYWRvbmx5JyxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5jaGlsZHJlbiB8fCBbXVxuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGFibGVSb3dzKHJvd3M6IFRhYmxlUm93W10sIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IFRhYmxlUm93W10ge1xuICAgIHJldHVybiByb3dzLmZpbHRlcigocm93KSA9PiBpc1NlbGVjdGFibGVSb3cocm93LCBzZWxlY3RhYmxlS2V5KSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RhYmxlUm93KHJvdzogVGFibGVSb3csIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaXNJdGVtUm93KHJvdykgfHwgaXNUcmVlUm93KHJvdykpICYmIHJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2U7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJdGVtUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5JVEVNO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZVJvdyhyb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuVFJFRTtcbn1cblxuLyoqXG4gKiBTaW5jZSB3ZSBkb250IHdvcmsgd2l0aCB0aGUgdHJlZSwgd2UgbmVlZCB0byBjb252ZXJ0IGluY29taW5nIHRyZWUgdG9cbiAqIGZsYXQgZm9ybWF0IHdoaWxlIG1haW50YWluaW5nIG9yaWdpbmFsIHN0YXRlLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlVGFibGVSb3dUb0ZsYXRMaXN0PFQ+KHJvd3M6IFRhYmxlUm93PFQ+W10sIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBUYWJsZVJvd1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygcm93cykge1xuICAgICAgICBpdGVtLm5hdmlnYXRhYmxlID0gaXNSb3dOYXZpZ2F0YWJsZShpdGVtIGFzIFQsIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjKSA9PiAoYy5oaWRkZW4gPSAhaXRlbS5leHBhbmRlZCkpO1xuICAgICAgICAgICAgZmxhdExpc3QgPSBmbGF0TGlzdC5jb25jYXQoY29udmVydFRyZWVUYWJsZVJvd1RvRmxhdExpc3QoaXRlbS5jaGlsZHJlbiwgcm93TmF2aWdhdGFibGUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdExpc3Q7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSb3dOYXZpZ2F0YWJsZTxUPihyb3c6IFQsIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBJZiBrZXkgb2YgdGhlIHJvdydzIGl0ZW0gZmllbGQgcGFzc2VkICovXG4gICAgaWYgKGlzU3RyaW5nKHJvd05hdmlnYXRhYmxlKSkge1xuICAgICAgICByZXR1cm4gISFyb3dbcm93TmF2aWdhdGFibGUgYXMgc3RyaW5nXTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFyb3dOYXZpZ2F0YWJsZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmVlemFibGVDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10sIGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgaWYgKCFjb2x1bW5zLmxlbmd0aCB8fCAhZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmICghY29sdW1uLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXNpbmcgY29sdW1uTmFtZXMuc2l6ZSBhcyBpbmRleCBvZiBhIGNvbHVtblxuICAgICAgICBjb2x1bW5OYW1lcy5zZXQoY29sdW1uLm5hbWUsIGNvbHVtbk5hbWVzLnNpemUpO1xuXG4gICAgICAgIGlmIChjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWV6YWJsZUVuZENvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSwgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICBpZiAoIWNvbHVtbnMubGVuZ3RoIHx8ICFmcmVlemVFbmRDb2x1bW5zVG8pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBjb2x1bW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIC8vIHVzaW5nIGNvbHVtbk5hbWVzLnNpemUgYXMgaW5kZXggb2YgYSBjb2x1bW5cbiAgICAgICAgY29sdW1uTmFtZXMuc2V0KGNvbHVtbnNbaV0ubmFtZSwgY29sdW1uTmFtZXMuc2l6ZSk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNbaV0ubmFtZSA9PT0gZnJlZXplRW5kQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzPFQ+KFxuICAgIHNvdXJjZTogVFtdLFxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICB0YWJsZVJvd3M6IFRhYmxlUm93PFQ+W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvcjxUPixcbiAgICByZWxhdGlvbktleTogc3RyaW5nLFxuICAgIGhhc0NoaWxkcmVuS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICBleHBhbmRlZFN0YXRlS2V5OiBzdHJpbmcsXG4gICAgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW5cbik6IFRhYmxlUm93PFQ+W10ge1xuICAgIGNvbnN0IHJvd3M6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgdGFibGVSb3dzLCByb3dDb21wYXJhdG9yKTtcblxuICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0NoaWxkcmVuID1cbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCByZWxhdGlvbktleSkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaXRlbVtyZWxhdGlvbktleV0pICYmXG4gICAgICAgICAgICBpdGVtW3JlbGF0aW9uS2V5XS5sZW5ndGg7XG5cbiAgICAgICAgY29uc3Qgcm93ID0gaXNUYWJsZVJvdyhpdGVtIGFzIFRhYmxlUm93PFQ+KVxuICAgICAgICAgICAgPyAoaXRlbSBhcyBUYWJsZVJvdzxUPilcbiAgICAgICAgICAgIDogbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgICAgICAgdHlwZTogaGFzQ2hpbGRyZW4gfHwgaXRlbVtoYXNDaGlsZHJlbktleV0gPT09IHRydWUgPyBUYWJsZVJvd1R5cGUuVFJFRSA6IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogaXRlbVtzZWxlY3RlZEtleV0gPz8gISFzZWxlY3RlZFJvd3NNYXAuZ2V0KGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICByb3cuZXhwYW5kZWQgPVxuICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgZXhwYW5kZWRTdGF0ZUtleSlcbiAgICAgICAgICAgICAgICA/IGl0ZW1bZXhwYW5kZWRTdGF0ZUtleV1cbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG5cbiAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzKFxuICAgICAgICAgICAgICAgIGl0ZW1bcmVsYXRpb25LZXldLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICAgICAgdGFibGVSb3dzLFxuICAgICAgICAgICAgICAgIHJvd0NvbXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25LZXksXG4gICAgICAgICAgICAgICAgaGFzQ2hpbGRyZW5LZXksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXksXG4gICAgICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSxcbiAgICAgICAgICAgICAgICByb3dOYXZpZ2F0YWJsZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIGMucGFyZW50ID0gYy5wYXJlbnQgfHwgcm93O1xuICAgICAgICAgICAgICAgIGMubGV2ZWwgPSBjLnBhcmVudC5sZXZlbCArIDE7XG4gICAgICAgICAgICAgICAgYy5oaWRkZW4gPSAhYy5wYXJlbnQuZXhwYW5kZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJvdy5jaGlsZHJlbi5wdXNoKC4uLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgcm93cy5wdXNoKC4uLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm93LmxldmVsID09PSAwICYmIHJvdy5pc1RyZWUpIHtcbiAgICAgICAgICAgIGRmcyhbcm93XSwgKHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHIuY2hpbGRyZW4gfHwgW107XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbjogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV0ZXJtaW5hdGVDaGlsZHJlbjogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5jaGVja2VkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLmNoZWNrZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGVDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRBbGwgPSBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA9PT0gY2hpbGRyZW4ubGVuZ3RoICYmIGNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTb21lID0gc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGlmIChyLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTZWxlY3Rpb25Ub0NoaWxkcmVuKHJvd3MsIHIsIFtdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHIuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkU29tZSB8fCBpbmRldGVybWluYXRlQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByLmNoZWNrZWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByb3dzO1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIFJ1bnMgYHJvd0NvbXBhcmF0b3JgIGZ1bmN0aW9uIGFnYWluc3QgY2hlY2tlZCByb3dzIGFuZCBjb21wYXJlcyB0aGVtIHdpdGggdGhlIG5ldyBgc291cmNlYFxuICogSWYgbWF0Y2hlZCwgY3JlYXRlcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIHRoZSBzb3VyY2UgaXRlbSBhbmQgY2hlY2tlZCBzdGF0dXMgb2YgY29ycmVzcG9uZGluZyByb3cuXG4gKlxuICogQHJldHVybnMgYE1hcGAgb2JqZWN0IHdpdGggdGhlIGBjaGVja2VkYCBzdGF0dXMgZm9yIHBhcnRpY3VsYXIgc291cmNlIGl0ZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGlvblN0YXR1c0J5Um93VmFsdWU8VD4oXG4gICAgc291cmNlOiBUW10sXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIHRhYmxlUm93czogVGFibGVSb3dbXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yPFQ+XG4pOiBNYXA8VCwgYm9vbGVhbiB8IG51bGw+IHtcbiAgICBjb25zdCByb3dNYXAgPSBuZXcgTWFwPFQsIGJvb2xlYW4gfCBudWxsPigpO1xuICAgIGlmIChcbiAgICAgICAgKHNlbGVjdGlvbk1vZGUgPT09IFNlbGVjdGlvbk1vZGUuU0lOR0xFIHx8IHNlbGVjdGlvbk1vZGUgPT09IFNlbGVjdGlvbk1vZGUuTVVMVElQTEUpICYmXG4gICAgICAgIHR5cGVvZiByb3dDb21wYXJhdG9yID09PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGNoZWNrZWRSb3dzID0gdGFibGVSb3dzLmZpbHRlcigocikgPT4gci5jaGVja2VkKTtcbiAgICAgICAgY2hlY2tlZFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHNvdXJjZS5maW5kKChlKSA9PiByb3dDb21wYXJhdG9yKHJvdy52YWx1ZSwgZSkpO1xuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgcm93TWFwLnNldChmb3VuZCwgcm93LmNoZWNrZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd01hcDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVNlbGVjdGlvblRvQ2hpbGRyZW48VD4oXG4gICAgYWxsUm93czogQXJyYXk8VGFibGVSb3c8VD4+LFxuICAgIHJvdzogVGFibGVSb3csXG4gICAgYWRkZWRSb3dzOiBUYWJsZVJvdzxUPltdLFxuICAgIHJlbW92ZWRSb3dzOiBUYWJsZVJvdzxUPltdXG4pOiB2b2lkIHtcbiAgICBjb25zdCBhbGxDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihyb3csIGFsbFJvd3MpO1xuXG4gICAgYWxsQ2hpbGRyZW4uZm9yRWFjaCgocikgPT4ge1xuICAgICAgICByLmNoZWNrZWQgPSByb3cuY2hlY2tlZDtcbiAgICAgICAgci5jaGVja2VkID8gYWRkZWRSb3dzLnB1c2gocikgOiByZW1vdmVkUm93cy5wdXNoKHIpO1xuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSb3dDaGlsZHJlbjxUPihyb3c6IFRhYmxlUm93PFQ+LCBhbGxSb3dzOiBUYWJsZVJvdzxUPltdKTogVGFibGVSb3c8VD5bXSB7XG4gICAgY29uc3Qgcm93c0xlbmd0aCA9IGFsbFJvd3MubGVuZ3RoO1xuXG4gICAgLyoqXG4gICAgICogU2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGZsYXQgbGlzdFxuICAgICAqIGl0IG1lYW5zIGFsbCBjaGlsZHJlbiBnbyBuZXh0IHJpZ2h0IGFmdGVyIHRoZSBleHBhbmRhYmxlIHJvd1xuICAgICAqIHVudGlsIHRoZSBuZXh0IHJvdyBoYXMgYSBtdXR1YWwgcGFyZW50XG4gICAgICovXG5cbiAgICBsZXQgaW5kZXggPSBhbGxSb3dzLmluZGV4T2Yocm93KTtcbiAgICBjb25zdCBwYXJlbnRzID0gZ2V0Um93UGFyZW50cyhyb3cpO1xuICAgIGNvbnN0IGNoaWxkcmVuOiBUYWJsZVJvdzxUPltdID0gW107XG5cbiAgICB3aGlsZSAoaW5kZXgrKyA8IHJvd3NMZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dFJvdyA9IGFsbFJvd3NbaW5kZXhdO1xuICAgICAgICBpZiAoIW5leHRSb3c/LnBhcmVudCB8fCBwYXJlbnRzLmluY2x1ZGVzKG5leHRSb3cucGFyZW50KSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRyZW4ucHVzaChuZXh0Um93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW47XG59XG5cbi8qKlxuICogR2V0IHJvdyBwYXJlbnRzIHBhdGggd2hlcmUgdGhlIGZpcnN0IGlzIHRoZSBkaXJlY3QgcGFyZW50XG4gKiBAcGFyYW0gcm93IFJvdyB3aGljaCBwYXJlbnRzIHdlIG5lZWQgdG8gZmluZFxuICogQHBhcmFtIHVudGlsUGFyZW50IFBhcmVudCB0byBzdG9wIGEgc2VhcmNoIG9uLiBEZWZhdWx0IGlzIFwibnVsbFwiIHRoYXQgbWVhbnMgbG9vayB1cCB1bnRpbCB0aGUgcm9vdFxuICogQHJldHVybnMgcGFyZW50cyBsaXN0IFtkaXJlY3QgcGFyZW50LCAuLi4sIGFuY2VzdG9yXVxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um93UGFyZW50czxUPihyb3c6IFRhYmxlUm93PFQ+LCB1bnRpbFBhcmVudDogVGFibGVSb3c8VD4gfCBudWxsID0gbnVsbCk6IFRhYmxlUm93PFQ+W10ge1xuICAgIHVudGlsUGFyZW50ID0gdW50aWxQYXJlbnQgfHwgbnVsbDsgLy8gdG8gYXZvaWQgXCJ1bmRlZmluZWRcIlxuICAgIGNvbnN0IHBhcmVudHM6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICBsZXQgcGFyZW50ID0gcm93LnBhcmVudCB8fCBudWxsOyAvLyBlbXB0eSBwYXJlbnQgc2hvdWxkIGJlIGNvZXJjZWQgdG8gXCJudWxsXCIgZG8gbm90IGdldCBpbnRvIGluZmluaXRlIGxvb3BcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudCAhPT0gdW50aWxQYXJlbnQpIHtcbiAgICAgICAgcGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhU3RyZWFtPFQ+KHNvdXJjZTogRmRwVGFibGVEYXRhU291cmNlPFQ+KTogVGFibGVEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNEYXRhU291cmNlKHNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZSBhcyBUYWJsZURhdGFTb3VyY2U8VD47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5VGFibGVEYXRhU291cmNlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZShzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vKipcbiAqIEBoaWRkZW5cbiAqIENyZWF0ZXMgYW4gZW1wdHkgY29sdW1uIHNrZWxldG9uIG9iamVjdC5cbiAqIEByZXR1cm5zIENvbHVtbiBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTmV3Um93U2tlbGV0b248VD4oZWRpdGFibGVSb3dTa2VsZXRvbjogVCwgY29sdW1uczogVGFibGVDb2x1bW5bXSk6IFQge1xuICAgIGlmIChlZGl0YWJsZVJvd1NrZWxldG9uKSB7XG4gICAgICAgIHJldHVybiBjbG9uZURlZXAoZWRpdGFibGVSb3dTa2VsZXRvbik7XG4gICAgfVxuXG4gICAgbGV0IG5ld1JvdyA9IHt9O1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIG5ld1JvdyA9IHNldChuZXdSb3csIGNvbHVtbi5rZXksIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3Um93IGFzIFQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHcm91cFJvdyhyb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuR1JPVVA7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRyZWVMaWtlR3JvdXBlZFJvd3MoXG4gICAgZ3JvdXBlZFJvd3M6IFRyZWVMaWtlPFRhYmxlUm93PltdLFxuICAgIGdyb3VwUnVsZXNNYXA6IE1hcDxzdHJpbmcsIENvbGxlY3Rpb25Hcm91cD5cbik6IFRyZWVMaWtlPFRhYmxlUm93PltdIHtcbiAgICBpZiAoIWdyb3VwZWRSb3dzWzBdIHx8ICFpc0dyb3VwUm93KGdyb3VwZWRSb3dzWzBdKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBlZFJvd3M7XG4gICAgfVxuXG4gICAgY29uc3QgdHJlZUxpa2VSb3dzID0gZ3JvdXBlZFJvd3MgYXMgVHJlZUxpa2U8VGFibGVSb3c8R3JvdXBUYWJsZVJvd1ZhbHVlVHlwZT4+W107XG4gICAgY29uc3QgZmlyc3RSb3cgPSB0cmVlTGlrZVJvd3NbMF07XG5cbiAgICB0cmVlTGlrZVJvd3MuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgaWYgKGdyb3VwLl9jaGlsZHJlbikge1xuICAgICAgICAgICAgZ3JvdXAuX2NoaWxkcmVuID0gc29ydFRyZWVMaWtlR3JvdXBlZFJvd3MoZ3JvdXAuX2NoaWxkcmVuLCBncm91cFJ1bGVzTWFwKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZ3JvdXBSdWxlID0gZ3JvdXBSdWxlc01hcC5nZXQoZmlyc3RSb3cudmFsdWUuZmllbGQpO1xuXG4gICAgaWYgKCFncm91cFJ1bGUgfHwgZ3JvdXBSdWxlLmRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5OT05FKSB7XG4gICAgICAgIHJldHVybiB0cmVlTGlrZVJvd3M7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gZ3JvdXBSdWxlLmRpcmVjdGlvbjtcbiAgICBjb25zdCBkaXJlY3Rpb25NdWx0aXBsaWVyID0gZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLkFTQyA/IDEgOiBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uREVTQyA/IC0xIDogMDtcblxuICAgIHJldHVybiB0cmVlTGlrZVJvd3Muc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGFWYWx1ZSA9IGEudmFsdWUudmFsdWUgYXMgYW55O1xuICAgICAgICBjb25zdCBiVmFsdWUgPSBiLnZhbHVlLnZhbHVlIGFzIGFueTtcblxuICAgICAgICBjb25zdCBhTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQoYVZhbHVlKTtcbiAgICAgICAgY29uc3QgYk51bWJlciA9IE51bWJlci5wYXJzZUZsb2F0KGJWYWx1ZSk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKGFOdW1iZXIpICYmICFOdW1iZXIuaXNOYU4oYk51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYU51bWJlciAtIGJOdW1iZXIpICogZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoYVZhbHVlID4gYlZhbHVlID8gMSA6IC0xKSAqIGRpcmVjdGlvbk11bHRpcGxpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRyZWVMaWtlVG9GbGF0TGlzdDxLPih0cmVlTGlrZUxpc3Q6IFRyZWVMaWtlPEs+W10pOiBLW10ge1xuICAgIGxldCBmbGF0TGlzdDogS1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJlZUxpa2VMaXN0KSB7XG4gICAgICAgIGZsYXRMaXN0LnB1c2goaXRlbSk7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5fY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBmbGF0TGlzdCA9IGZsYXRMaXN0LmNvbmNhdChjb252ZXJ0VHJlZUxpa2VUb0ZsYXRMaXN0KGl0ZW0uX2NoaWxkcmVuKSk7XG4gICAgICAgICAgICBkZWxldGUgaXRlbS5fY2hpbGRyZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdExpc3Q7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogR3JvdXAgdGFibGUgcm93cyBhbmQgcmV0dXJuIHRyZWUgbGlrZSByb3dzIGxpc3QuXG4gKiBJdCdzIGludGVuZGVkIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseS5cbiAqIEBwYXJhbSBydWxlcyBncm91cCBydWxlcyB0byBncm91cCBieVxuICogQHBhcmFtIHJvd3Mgc291cmNlIHRhYmxlIHJvd3NcbiAqIEBwYXJhbSBwYXJlbnQgcm93IHBhcmVudFxuICogQHBhcmFtIGxldmVsIGxldmVsIG9mIG5lc3RpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyb3VwZWRUYWJsZVJvd3NUcmVlKFxuICAgIHJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSxcbiAgICByb3dzOiBUYWJsZVJvd1tdLFxuICAgIHBhcmVudDogVGFibGVSb3cgfCBudWxsID0gbnVsbCxcbiAgICBsZXZlbCA9IDBcbik6IFRyZWVMaWtlPFRhYmxlUm93PltdIHtcbiAgICBydWxlcyA9IFsuLi5ydWxlc107XG5cbiAgICBpZiAoIXJ1bGVzLmxlbmd0aCkge1xuICAgICAgICAvLyBubyBydWxlcyBtZWFuIHRoYXQgaXQncyB0aGUgbGV2ZWwgb2Ygc291cmNlIGl0ZW1zXG4gICAgICAgIHJldHVybiByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgcm93LmxldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICByb3cuaGlkZGVuID0gISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJldHJpZXZlIGZpcnN0IGdyb3VwIHJ1bGVcbiAgICBjb25zdCBydWxlID0gcnVsZXMuc2hpZnQoKSE7XG5cbiAgICAvLyBCdWlsZCBtYXAgb2YgdW5pcXVlIHZhbHVlcyBmb3IgYSBnaXZlbiBncm91cCBydWxlXG4gICAgY29uc3QgdmFsdWVzSGFzaCA9IHJvd3NcbiAgICAgICAgLmZpbHRlcigocikgPT4gci5zdGF0ZSAhPT0gJ2VkaXRhYmxlJylcbiAgICAgICAgLnJlZHVjZSgoaGFzaCwgcm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gZ2V0KHJvdy52YWx1ZSwgcnVsZS5maWVsZCk7XG5cbiAgICAgICAgICAgIGlmICghaGFzaC5oYXMobW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBoYXNoLnNldChtb2RlbFZhbHVlLCBbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhc2guZ2V0KG1vZGVsVmFsdWUpPy5wdXNoKHJvdyk7XG5cbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICB9LCBuZXcgTWFwPHVua25vd24sIFRhYmxlUm93W10+KCkpO1xuXG4gICAgLy8gQnVpbGQgdGFibGUgcm93cyB0cmVlXG4gICAgbGV0IGdyb3VwZWRUYWJsZVJvd3M6IFRyZWVMaWtlPFRhYmxlUm93PltdID0gW107XG5cbiAgICBpZiAocm93cy5zb21lKChyKSA9PiByLnN0YXRlID09PSAnZWRpdGFibGUnKSkge1xuICAgICAgICBncm91cGVkVGFibGVSb3dzID0gcm93c1xuICAgICAgICAgICAgLmZpbHRlcigocikgPT4gci5zdGF0ZSA9PT0gJ2VkaXRhYmxlJylcbiAgICAgICAgICAgIC5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgcm93LmxldmVsID0gLTE7XG4gICAgICAgICAgICAgICAgcm93LmhpZGRlbiA9ICEhcGFyZW50ICYmICFwYXJlbnQuZXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3ZhbHVlLCB2YWx1ZXNdIG9mIEFycmF5LmZyb20odmFsdWVzSGFzaCkpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRSb3dzID0gcm93cy5maWx0ZXIoKF9pdGVtKSA9PiB2YWx1ZXMuaW5jbHVkZXMoX2l0ZW0pKTtcblxuICAgICAgICBpZiAoZmlsdGVyZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cFRhYmxlUm93OiBUcmVlTGlrZTxUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPj4gPSBuZXdUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPih7XG4gICAgICAgICAgICB0eXBlOiBUYWJsZVJvd1R5cGUuR1JPVVAsXG4gICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAgdmFsdWU6IHsgZmllbGQ6IHJ1bGUuZmllbGQsIHZhbHVlLCBjb3VudDogMCB9LFxuICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBoaWRkZW46ICEhcGFyZW50ICYmICFwYXJlbnQuZXhwYW5kZWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRzIGdyb3VwJ3MgY2hpbGRyZW4gcm93c1xuICAgICAgICBncm91cFRhYmxlUm93Ll9jaGlsZHJlbiA9IGNyZWF0ZUdyb3VwZWRUYWJsZVJvd3NUcmVlKHJ1bGVzLCBmaWx0ZXJlZFJvd3MsIGdyb3VwVGFibGVSb3csIGxldmVsICsgMSk7XG5cbiAgICAgICAgZ3JvdXBUYWJsZVJvdy52YWx1ZS5jb3VudCA9IGdyb3VwVGFibGVSb3cuX2NoaWxkcmVuPy5sZW5ndGg7XG5cbiAgICAgICAgZ3JvdXBlZFRhYmxlUm93cy5wdXNoKGdyb3VwVGFibGVSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cGVkVGFibGVSb3dzO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRPYmplY3RzVG9UYWJsZVJvd3M8VD4oXG4gICAgc291cmNlOiBUW10sXG4gICAgYWRkZWRJdGVtczogVFtdLFxuICAgIHNlbGVjdGVkS2V5OiBzdHJpbmcsXG4gICAgcm93TmF2aWdhdGFibGU6IGJvb2xlYW4gfCBzdHJpbmcsXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIHJvd3M6IFRhYmxlUm93W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvclxuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgY29uc3Qgcm93SXRlbSA9IHNvdXJjZVswXSBhcyBhbnk7XG5cbiAgICBpZiAoaXNUYWJsZVJvdyhyb3dJdGVtKSkge1xuICAgICAgICByZXR1cm4gc291cmNlIGFzIFRhYmxlUm93W107XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzTWFwID0gZ2V0U2VsZWN0aW9uU3RhdHVzQnlSb3dWYWx1ZShzb3VyY2UsIHNlbGVjdGlvbk1vZGUsIHJvd3MsIHJvd0NvbXBhcmF0b3IpO1xuICAgIHJldHVybiBzb3VyY2UubWFwKChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTmV3SXRlbSA9IGFkZGVkSXRlbXMuaW5jbHVkZXMoaXRlbSk7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ld1RhYmxlUm93KHtcbiAgICAgICAgICAgIHR5cGU6IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICAgICAgY2hlY2tlZDogaXRlbVtzZWxlY3RlZEtleV0gPz8gISFzZWxlY3RlZFJvd3NNYXAuZ2V0KGl0ZW0pLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICB9KTtcbiAgICAgICAgcm93Lm5hdmlnYXRhYmxlID0gaXNSb3dOYXZpZ2F0YWJsZShpdGVtLCByb3dOYXZpZ2F0YWJsZSk7XG4gICAgICAgIHJvdy5zdGF0ZSA9IGlzTmV3SXRlbSA/ICdlZGl0YWJsZScgOiAncmVhZG9ubHknO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZVJvd0ZpcnN0Q2VsbChjZWxsSW5kZXg6IG51bWJlciwgcm93OiBUYWJsZVJvdywgZXZlbnQ/OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoY2VsbEluZGV4ID09PSAwICYmIGlzVHJlZVJvdyhyb3cpKSB8fCAoISFldmVudCAmJiAhcm93LmlzVHJlZSk7XG59XG4iXX0=
@@ -11,4 +11,4 @@ export class TableColumnFreezeEvent {
11
11
  this.previous = previous;
12
12
  }
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWZyZWV6ZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL21vZGVscy9jb2x1bW4tZnJlZXplLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0I7Ozs7O09BS0c7SUFDSCxZQUFtQixNQUFhLEVBQVMsT0FBc0IsRUFBUyxRQUF1QjtRQUE1RSxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQWU7SUFBRyxDQUFDO0NBQ3RHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQ2hhbmdlIHtcbiAgICBjdXJyZW50OiBzdHJpbmcgfCBudWxsO1xuICAgIHByZXZpb3VzOiBzdHJpbmcgfCBudWxsO1xuICAgIGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkZyZWV6ZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBjb2x1bW4gZnJlZXplIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBUYWJsZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBDdXJyZW50IGZyZWV6ZVRvIGNvbHVtblxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBmcmVlemVUbyBjb2x1bW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgc291cmNlOiBUYWJsZSwgcHVibGljIGN1cnJlbnQ6IHN0cmluZyB8IG51bGwsIHB1YmxpYyBwcmV2aW91czogc3RyaW5nIHwgbnVsbCkge31cbn1cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWZyZWV6ZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL21vZGVscy9jb2x1bW4tZnJlZXplLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0I7Ozs7O09BS0c7SUFDSCxZQUFtQixNQUFhLEVBQVMsT0FBc0IsRUFBUyxRQUF1QjtRQUE1RSxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQWU7SUFBRyxDQUFDO0NBQ3RHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW5GcmVlemVJbnRlcm5hbEV2ZW50IHtcbiAgICBuYW1lOiBUYWJsZUNvbHVtblsnbmFtZSddO1xuICAgIGVuZEZyZWV6YWJsZTogVGFibGVDb2x1bW5bJ2VuZEZyZWV6YWJsZSddO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUNoYW5nZSB7XG4gICAgY3VycmVudDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcmV2aW91czogc3RyaW5nIHwgbnVsbDtcbiAgICBlbmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5GcmVlemVFdmVudCB7XG4gICAgLyoqXG4gICAgICogVGFibGUgY29sdW1uIGZyZWV6ZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGFibGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGN1cnJlbnQgQ3VycmVudCBmcmVlemVUbyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgZnJlZXplVG8gY29sdW1uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHNvdXJjZTogVGFibGUsIHB1YmxpYyBjdXJyZW50OiBzdHJpbmcgfCBudWxsLCBwdWJsaWMgcHJldmlvdXM6IHN0cmluZyB8IG51bGwpIHt9XG59XG4iXX0=
@@ -12,4 +12,4 @@ export class Table {
12
12
  this.openTableColumnSettings = new EventEmitter();
13
13
  }
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdGFibGUtaGVscGVycy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQWVuRSxNQUFNLE9BQWdCLEtBQUs7SUFBM0I7UUEwSkksK0NBQStDO1FBQ3RDLDBCQUFxQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlFLGlEQUFpRDtRQUN4Qyw0QkFBdUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRixnREFBZ0Q7UUFDdkMsMkJBQXNCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0UsaURBQWlEO1FBQ3hDLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBVXBGLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgUHJlc2V0TWFuYWdlZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYmxlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCwgU2F2ZVJvd3NFdmVudCwgVGFibGVJbml0aWFsU3RhdGUsIFRhYmxlUm93IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVTY3JvbGxhYmxlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGU8VCA9IGFueT4gaW1wbGVtZW50cyBQcmVzZXRNYW5hZ2VkQ29tcG9uZW50PFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0PiB7XG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAgIGFic3RyYWN0IF9sb2FkUHJldmlvdXNQYWdlczogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IHBhZ2VTY3JvbGxpbmc6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBsb2FkUGFnZXNCZWZvcmU6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBwYWdlU2l6ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIGFic3RyYWN0IGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGN1cnJlbnQgcHJlc2V0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBhYnN0cmFjdCBwcmVzZXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQ+O1xuXG4gICAgLyoqIFN1bSBvZiB3aWR0aHMgb2YgZml4ZWQgY29sdW1ucyAoc2VtYW50aWMgaGlnaGxpZ2h0aW5nLCBzZWxlY3Rpb24pICovXG4gICAgYWJzdHJhY3QgZ2V0IF9maXhlZENvbHVtbnNQYWRkaW5nKCk6IG51bWJlcjtcblxuICAgIC8qKiBGcmVlemFibGUgY29sdW1uIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGluZGV4ZXMgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2ZyZWV6YWJsZUNvbHVtbnMoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSB0YWJsZSBlbGVtZW50IGluIHB4ICovXG4gICAgYWJzdHJhY3QgZ2V0IF90YWJsZVdpZHRoUHgoKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgaW5pdGlhbFN0YXRlOiBUYWJsZUluaXRpYWxTdGF0ZSB8IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbHVtbnNTdHJlYW06IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlU2Nyb2xsYWJsZTogVGFibGVTY3JvbGxhYmxlO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c1Zpc2libGU6IFRhYmxlUm93PFQ+W107XG5cbiAgICBhYnN0cmFjdCBfdGFibGVSb3dzOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c0luVmlld1BvcnRQbGFjZWhvbGRlcjogbnVtYmVyW107XG5cbiAgICAvKiogR2V0IHRhYmxlIHN0YXRlICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlO1xuXG4gICAgLyoqIFNldCB0YWJsZSBzdGF0ZSAqL1xuICAgIGFic3RyYWN0IHNldFRhYmxlU3RhdGUodGFibGVTdGF0ZTogVGFibGVTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKiogR2V0IHRhYmxlIGNvbHVtbnMgZGVmaW5pdGlvbiBsaXN0ICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW107XG5cbiAgICAvKiogR2V0IGEgbGlzdCBvZiB2aXNpYmxlIHRhYmxlIGNvbHVtbnMuICovXG4gICAgYWJzdHJhY3QgZ2V0VmlzaWJsZVRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbltdO1xuXG4gICAgLyoqIFNldCBTb3J0aW5nIHJ1bGVzICovXG4gICAgYWJzdHJhY3Qgc29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIEFkZCBTb3J0aW5nIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkU29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCBGaWx0ZXJpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBmaWx0ZXIoZmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFic3RyYWN0IGFkZEZpbHRlcihmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZDtcblxuICAgIC8qKiBTZXQgZ3JvdXBpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBncm91cChncm91cFJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkR3JvdXAoZ3JvdXBSdWxlczogQ29sbGVjdGlvbkdyb3VwW10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgYWJzdHJhY3Qgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgICAvKiogVG9nZ2xlIHJvdyBjaGVja2VkIHN0YXRlLiAqL1xuICAgIGFic3RyYWN0IHRvZ2dsZVNlbGVjdGFibGVSb3cocm93SW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIGNvbHVtbnMgdG8gaW5jbHVkaW5nICovXG4gICAgYWJzdHJhY3QgZnJlZXplVG9Db2x1bW4oY29sdW1uS2V5OiBzdHJpbmcsIGVuZD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFVuZnJlZXplIGNvbHVtbiAqL1xuICAgIGFic3RyYWN0IHVuZnJlZXplKGNvbHVtbktleTogc3RyaW5nKTogdm9pZDtcblxuICAgIC8qKiBTZWFyY2ggaW4gYWxsIHRhYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBzZWFyY2goc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0KTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIFNvcnQgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93U29ydFNldHRpbmdzSW5Ub29sYmFyKHNob3dTb3J0U2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiB2aXNpYmlsaXR5ICovXG4gICAgYWJzdHJhY3Qgc2hvd0ZpbHRlclNldHRpbmdzSW5Ub29sYmFyKHNob3dGaWx0ZXJTZXR0aW5nczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dHcm91cFNldHRpbmdzSW5Ub29sYmFyKHNob3dHcm91cFNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIENvbHVtbnMgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93Q29sdW1uU2V0dGluZ3NJblRvb2xiYXIoc2hvd0NvbHVtblNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBEaXNhYmxlIGZpbHRlcmluZyBieSBoZWFkZXIgY29sdW1uIG1lbnUgKi9cbiAgICBhYnN0cmFjdCBzZXRIZWFkZXJDb2x1bW5GaWx0ZXJpbmdEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgcGFnZSAqL1xuICAgIGFic3RyYWN0IHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgLyoqIEdldHMgdGhlIG1heCBhbGxvd2VkIHdpZHRoIGZvciBhbGwgZnJlZXphYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBnZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk6IG51bWJlcjtcblxuICAgIC8qKiBHZXQgdGFibGUgZGF0YSBzb3VyY2UgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRhU291cmNlKCk6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBNYW51YWxseSB0cmlnZ2VycyBjb2x1bW5zIHdpZHRoIHJlY2FsY3VsYXRpb24gKi9cbiAgICBhYnN0cmFjdCByZWNhbGN1bGF0ZVRhYmxlQ29sdW1uV2lkdGgoKTogdm9pZDtcblxuICAgIC8qKiBGZXRjaCBkYXRhIHNvdXJjZSBkYXRhLiAqL1xuICAgIGFic3RyYWN0IGZldGNoKCk6IHZvaWQ7XG5cbiAgICAvKiogQWRkcyBlbXB0eSByb3cgZm9yIGVkaXRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBhZGRSb3coKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyBzYXZlIGV2ZW50IGFuZCByZXNldHMgZWRpdGFibGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBzYXZlUm93cygpOiB2b2lkO1xuXG4gICAgLyoqIENhbmNlbHMgZWRpdGluZyBhbmQgZGlzY2FyZHMgbmV3bHkgYWRkZWQgcm93cyAqL1xuICAgIGFic3RyYWN0IGNhbmNlbEVkaXRpbmcoKTogdm9pZDtcblxuICAgIC8qKiBFeHBhbmQgYWxsIHRoZSByb3dzIG9mIHRoZSB0YWJsZSAqL1xuICAgIGFic3RyYWN0IGV4cGFuZEFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIENvbGxhcHNlIGFsbCB0aGUgcm93cyBvZiB0aGUgdGFibGUgKi9cbiAgICBhYnN0cmFjdCBjb2xsYXBzZUFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIFNldHMgc2VsZWN0ZWQgcHJlc2V0LiAqL1xuICAgIGFic3RyYWN0IHNldFByZXNldChkYXRhOiBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCk6IHZvaWQ7XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IHByZXNldC4gKi9cbiAgICBhYnN0cmFjdCBnZXRDdXJyZW50UHJlc2V0KCk6IFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0O1xuXG4gICAgYWJzdHJhY3QgZ2V0Um93c0luVmlld3BvcnQoKTogbnVtYmVyW107XG5cbiAgICBhYnN0cmFjdCBzZXRSb3dzSW5WaWV3cG9ydChzdGFydEluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHRvZ2dsZUV4cGFuZGFibGVUYWJsZVJvdyhyb3c6IFRhYmxlUm93PFQ+LCBmb3JjZUZldGNoPzogYm9vbGVhbik7XG5cbiAgICBhYnN0cmFjdCBvblRhYmxlUm93c0NoYW5nZWQoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHJlZnJlc2hEbmRMaXN0KCk6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBTb3J0IFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZVNvcnRTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZUZpbHRlclNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVHcm91cFNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBDb2x1bW4gU2V0dGluZ3MgYnV0dG9uIGNsaWNrIGV2ZW50ICovXG4gICAgcmVhZG9ubHkgb3BlblRhYmxlQ29sdW1uU2V0dGluZ3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGVtcHR5IHJvdyBhZGRlZC4gKi9cbiAgICByZWFkb25seSBlbXB0eVJvd0FkZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgICAvKiogRXZlbnQgZmlyZWQgd2hlbiBzYXZlIGJ1dHRvbiBwcmVzc2VkLiAqL1xuICAgIHJlYWRvbmx5IHNhdmU6IEV2ZW50RW1pdHRlcjxTYXZlUm93c0V2ZW50PFQ+PjtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGNhbmNlbCBidXR0b24gcHJlc3NlZC4gKi9cbiAgICByZWFkb25seSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdGFibGUtaGVscGVycy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQWVuRSxNQUFNLE9BQWdCLEtBQUs7SUFBM0I7UUEwSkksK0NBQStDO1FBQ3RDLDBCQUFxQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlFLGlEQUFpRDtRQUN4Qyw0QkFBdUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRixnREFBZ0Q7UUFDdkMsMkJBQXNCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0UsaURBQWlEO1FBQ3hDLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBVXBGLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgUHJlc2V0TWFuYWdlZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYmxlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCwgU2F2ZVJvd3NFdmVudCwgVGFibGVJbml0aWFsU3RhdGUsIFRhYmxlUm93IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVTY3JvbGxhYmxlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGU8VCA9IGFueT4gaW1wbGVtZW50cyBQcmVzZXRNYW5hZ2VkQ29tcG9uZW50PFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0PiB7XG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAgIGFic3RyYWN0IF9sb2FkUHJldmlvdXNQYWdlczogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IHBhZ2VTY3JvbGxpbmc6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBsb2FkUGFnZXNCZWZvcmU6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBwYWdlU2l6ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIGFic3RyYWN0IGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGN1cnJlbnQgcHJlc2V0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBhYnN0cmFjdCBwcmVzZXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQ+O1xuXG4gICAgLyoqIFN1bSBvZiB3aWR0aHMgb2YgZml4ZWQgY29sdW1ucyAoc2VtYW50aWMgaGlnaGxpZ2h0aW5nLCBzZWxlY3Rpb24pICovXG4gICAgYWJzdHJhY3QgZ2V0IF9maXhlZENvbHVtbnNQYWRkaW5nKCk6IG51bWJlcjtcblxuICAgIC8qKiBGcmVlemFibGUgY29sdW1uIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGluZGV4ZXMgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2ZyZWV6YWJsZUNvbHVtbnMoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSB0YWJsZSBlbGVtZW50IGluIHB4ICovXG4gICAgYWJzdHJhY3QgZ2V0IF90YWJsZVdpZHRoUHgoKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgaW5pdGlhbFN0YXRlOiBUYWJsZUluaXRpYWxTdGF0ZSB8IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbHVtbnNTdHJlYW06IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlU2Nyb2xsYWJsZTogVGFibGVTY3JvbGxhYmxlO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c1Zpc2libGU6IFRhYmxlUm93PFQ+W107XG5cbiAgICBhYnN0cmFjdCBfdGFibGVSb3dzOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c0luVmlld1BvcnRQbGFjZWhvbGRlcjogbnVtYmVyW107XG5cbiAgICAvKiogR2V0IHRhYmxlIHN0YXRlICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlO1xuXG4gICAgLyoqIFNldCB0YWJsZSBzdGF0ZSAqL1xuICAgIGFic3RyYWN0IHNldFRhYmxlU3RhdGUodGFibGVTdGF0ZTogVGFibGVTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKiogR2V0IHRhYmxlIGNvbHVtbnMgZGVmaW5pdGlvbiBsaXN0ICovXG4gICAgYWJzdHJhY3QgZ2V0VGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW107XG5cbiAgICAvKiogR2V0IGEgbGlzdCBvZiB2aXNpYmxlIHRhYmxlIGNvbHVtbnMuICovXG4gICAgYWJzdHJhY3QgZ2V0VmlzaWJsZVRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbltdO1xuXG4gICAgLyoqIFNldCBTb3J0aW5nIHJ1bGVzICovXG4gICAgYWJzdHJhY3Qgc29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIEFkZCBTb3J0aW5nIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkU29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCBGaWx0ZXJpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBmaWx0ZXIoZmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFic3RyYWN0IGFkZEZpbHRlcihmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZDtcblxuICAgIC8qKiBTZXQgZ3JvdXBpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBncm91cChncm91cFJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIEdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkR3JvdXAoZ3JvdXBSdWxlczogQ29sbGVjdGlvbkdyb3VwW10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgYWJzdHJhY3Qgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgICAvKiogVG9nZ2xlIHJvdyBjaGVja2VkIHN0YXRlLiAqL1xuICAgIGFic3RyYWN0IHRvZ2dsZVNlbGVjdGFibGVSb3cocm93SW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIGNvbHVtbnMgdG8gaW5jbHVkaW5nICovXG4gICAgYWJzdHJhY3QgZnJlZXplVG9Db2x1bW4oY29sdW1uS2V5OiBzdHJpbmcsIGVuZD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFVuZnJlZXplIGNvbHVtbiAqL1xuICAgIGFic3RyYWN0IHVuZnJlZXplKGNvbHVtbktleTogc3RyaW5nLCBlbmQ/OiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBTZWFyY2ggaW4gYWxsIHRhYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBzZWFyY2goc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0KTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIFNvcnQgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93U29ydFNldHRpbmdzSW5Ub29sYmFyKHNob3dTb3J0U2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiB2aXNpYmlsaXR5ICovXG4gICAgYWJzdHJhY3Qgc2hvd0ZpbHRlclNldHRpbmdzSW5Ub29sYmFyKHNob3dGaWx0ZXJTZXR0aW5nczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dHcm91cFNldHRpbmdzSW5Ub29sYmFyKHNob3dHcm91cFNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIENvbHVtbnMgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93Q29sdW1uU2V0dGluZ3NJblRvb2xiYXIoc2hvd0NvbHVtblNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBEaXNhYmxlIGZpbHRlcmluZyBieSBoZWFkZXIgY29sdW1uIG1lbnUgKi9cbiAgICBhYnN0cmFjdCBzZXRIZWFkZXJDb2x1bW5GaWx0ZXJpbmdEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgcGFnZSAqL1xuICAgIGFic3RyYWN0IHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgLyoqIEdldHMgdGhlIG1heCBhbGxvd2VkIHdpZHRoIGZvciBhbGwgZnJlZXphYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBnZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk6IG51bWJlcjtcblxuICAgIC8qKiBHZXQgdGFibGUgZGF0YSBzb3VyY2UgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRhU291cmNlKCk6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBNYW51YWxseSB0cmlnZ2VycyBjb2x1bW5zIHdpZHRoIHJlY2FsY3VsYXRpb24gKi9cbiAgICBhYnN0cmFjdCByZWNhbGN1bGF0ZVRhYmxlQ29sdW1uV2lkdGgoKTogdm9pZDtcblxuICAgIC8qKiBGZXRjaCBkYXRhIHNvdXJjZSBkYXRhLiAqL1xuICAgIGFic3RyYWN0IGZldGNoKCk6IHZvaWQ7XG5cbiAgICAvKiogQWRkcyBlbXB0eSByb3cgZm9yIGVkaXRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBhZGRSb3coKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyBzYXZlIGV2ZW50IGFuZCByZXNldHMgZWRpdGFibGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBzYXZlUm93cygpOiB2b2lkO1xuXG4gICAgLyoqIENhbmNlbHMgZWRpdGluZyBhbmQgZGlzY2FyZHMgbmV3bHkgYWRkZWQgcm93cyAqL1xuICAgIGFic3RyYWN0IGNhbmNlbEVkaXRpbmcoKTogdm9pZDtcblxuICAgIC8qKiBFeHBhbmQgYWxsIHRoZSByb3dzIG9mIHRoZSB0YWJsZSAqL1xuICAgIGFic3RyYWN0IGV4cGFuZEFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIENvbGxhcHNlIGFsbCB0aGUgcm93cyBvZiB0aGUgdGFibGUgKi9cbiAgICBhYnN0cmFjdCBjb2xsYXBzZUFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIFNldHMgc2VsZWN0ZWQgcHJlc2V0LiAqL1xuICAgIGFic3RyYWN0IHNldFByZXNldChkYXRhOiBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCk6IHZvaWQ7XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IHByZXNldC4gKi9cbiAgICBhYnN0cmFjdCBnZXRDdXJyZW50UHJlc2V0KCk6IFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0O1xuXG4gICAgYWJzdHJhY3QgZ2V0Um93c0luVmlld3BvcnQoKTogbnVtYmVyW107XG5cbiAgICBhYnN0cmFjdCBzZXRSb3dzSW5WaWV3cG9ydChzdGFydEluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHRvZ2dsZUV4cGFuZGFibGVUYWJsZVJvdyhyb3c6IFRhYmxlUm93PFQ+LCBmb3JjZUZldGNoPzogYm9vbGVhbik7XG5cbiAgICBhYnN0cmFjdCBvblRhYmxlUm93c0NoYW5nZWQoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHJlZnJlc2hEbmRMaXN0KCk6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBTb3J0IFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZVNvcnRTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZUZpbHRlclNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVHcm91cFNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBDb2x1bW4gU2V0dGluZ3MgYnV0dG9uIGNsaWNrIGV2ZW50ICovXG4gICAgcmVhZG9ubHkgb3BlblRhYmxlQ29sdW1uU2V0dGluZ3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGVtcHR5IHJvdyBhZGRlZC4gKi9cbiAgICByZWFkb25seSBlbXB0eVJvd0FkZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgICAvKiogRXZlbnQgZmlyZWQgd2hlbiBzYXZlIGJ1dHRvbiBwcmVzc2VkLiAqL1xuICAgIHJlYWRvbmx5IHNhdmU6IEV2ZW50RW1pdHRlcjxTYXZlUm93c0V2ZW50PFQ+PjtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGNhbmNlbCBidXR0b24gcHJlc3NlZC4gKi9cbiAgICByZWFkb25seSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbn1cbiJdfQ==