@eui/components 16.0.0-next.11 → 16.0.0-next.13

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 (37) hide show
  1. package/docs/components/EuiMenuItemComponent.html +1 -1
  2. package/docs/components/EuiPaginatorComponent.html +5 -0
  3. package/docs/components/EuiTableComponent.html +5 -0
  4. package/docs/components/EuiTreeComponent.html +21 -1
  5. package/docs/dependencies.html +2 -2
  6. package/docs/js/menu-wc.js +6 -6
  7. package/docs/js/menu-wc_es5.js +1 -1
  8. package/docs/js/search/search_index.js +2 -2
  9. package/esm2022/eui-button-group/eui-button-group.component.mjs +2 -2
  10. package/esm2022/eui-dropdown/eui-dropdown.component.mjs +4 -4
  11. package/esm2022/eui-menu/eui-menu-item.component.mjs +4 -4
  12. package/esm2022/eui-paginator/eui-paginator.component.mjs +2 -1
  13. package/esm2022/eui-select/eui-select.component.mjs +2 -2
  14. package/esm2022/eui-table/eui-table.component.mjs +6 -2
  15. package/esm2022/eui-tree/eui-tree.component.mjs +11 -4
  16. package/esm2022/eui-tree/eui-tree.model.mjs +1 -1
  17. package/eui-paginator/eui-paginator.component.d.ts.map +1 -1
  18. package/eui-table/eui-table.component.d.ts.map +1 -1
  19. package/eui-tree/eui-tree.component.d.ts +6 -3
  20. package/eui-tree/eui-tree.component.d.ts.map +1 -1
  21. package/eui-tree/eui-tree.model.d.ts +1 -1
  22. package/eui-tree/eui-tree.model.d.ts.map +1 -1
  23. package/fesm2022/eui-components-eui-button-group.mjs +1 -1
  24. package/fesm2022/eui-components-eui-button-group.mjs.map +1 -1
  25. package/fesm2022/eui-components-eui-dropdown.mjs +3 -3
  26. package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
  27. package/fesm2022/eui-components-eui-menu.mjs +3 -3
  28. package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
  29. package/fesm2022/eui-components-eui-paginator.mjs +1 -0
  30. package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
  31. package/fesm2022/eui-components-eui-select.mjs +2 -2
  32. package/fesm2022/eui-components-eui-select.mjs.map +1 -1
  33. package/fesm2022/eui-components-eui-table.mjs +5 -1
  34. package/fesm2022/eui-components-eui-table.mjs.map +1 -1
  35. package/fesm2022/eui-components-eui-tree.mjs +10 -3
  36. package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
  37. package/package.json +7 -7
@@ -35,6 +35,7 @@ export class EuiPaginatorComponent {
35
35
  this.pageSizeOptions = [5, 10, 25, 50, 100];
36
36
  this.pageSize = 10;
37
37
  this.page = 0;
38
+ this.length = 0;
38
39
  this.nbPageNumberNavigation = 5;
39
40
  this._isHidden = false;
40
41
  this.pageChange = new EventEmitter();
@@ -202,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
202
203
  }], hasDynamicLength: [{
203
204
  type: Input
204
205
  }] } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktcGFnaW5hdG9yL2V1aS1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXBhZ2luYXRvci9ldWktcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsS0FBSyxFQUVMLFlBQVksRUFDWixNQUFNLEVBR04sV0FBVyxFQUNYLGlCQUFpQixFQUNqQix1QkFBdUIsR0FDMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUc1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7QUFTckUsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQVdELElBQ0ksdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLHVCQUF1QixDQUFDLEtBQW1CO1FBQzNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFDSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksZ0JBQWdCLENBQUMsS0FBbUI7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFNRCxZQUFtQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTNDakMsV0FBTSxHQUFHLGVBQWUsQ0FBQztRQUN0QyxvQkFBZSxHQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsMkJBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBUXBDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFUixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFdkQsVUFBSyxHQUF3QyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RSxZQUFPLEdBQTRCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBWXpELDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQVFqQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsYUFBUSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRUYsQ0FBQztJQUUzRCxXQUFXLENBQUMsQ0FBZ0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckgsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JILElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbkI7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBRW5ELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3JGLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNqQjtZQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVoQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7YUFDdEQ7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0csQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN2QixLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDN0I7YUFBTTtZQUNILEtBQUssR0FBRyxDQUFDLENBQUM7U0FDYjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDL0QsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUM5QztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNYLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDYjtRQUVELE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDdEM7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1NBQ3REO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUks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bnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBVeEFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5cbmltcG9ydCB7IEV1aVBhZ2luYXRpb25FdmVudCB9IGZyb20gJy4vbW9kZWxzL3BhZ2luYXRpb24tZXZlbnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1wYWdpbmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgRXVpUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHN0cmluZyA9ICdldWktcGFnaW5hdG9yJztcbiAgICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XG4gICAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcbiAgICBASW5wdXQoKSBwYWdlID0gMDtcbiAgICBASW5wdXQoKSBsZW5ndGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBuYlBhZ2VOdW1iZXJOYXZpZ2F0aW9uID0gNTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGlkZGVuO1xuICAgIH1cbiAgICBzZXQgaXNIaWRkZW4odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGRlbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIF9pc0hpZGRlbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aVBhZ2luYXRpb25FdmVudD4oKTtcblxuICAgIHB1YmxpYyBwYWdlJDogQmVoYXZpb3JTdWJqZWN0PEV1aVBhZ2luYXRpb25FdmVudD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICAgIHB1YmxpYyBsZW5ndGgkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG4gICAgcHVibGljIHJhbmdlOiBzdHJpbmc7XG4gICAgcHVibGljIHJhbmdlTGVuZ3RoOiBzdHJpbmc7XG4gICAgcHVibGljIG5iUGFnZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzUGFnZU51bWJlck5hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNQYWdlTnVtYmVyTmF2aWdhdGlvbjtcbiAgICB9XG4gICAgc2V0IGhhc1BhZ2VOdW1iZXJOYXZpZ2F0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzUGFnZU51bWJlck5hdmlnYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNQYWdlTnVtYmVyTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc0R5bmFtaWNMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNEeW5hbWljTGVuZ3RoO1xuICAgIH1cbiAgICBzZXQgaGFzRHluYW1pY0xlbmd0aCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc0R5bmFtaWNMZW5ndGggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNEeW5hbWljTGVuZ3RoID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG5iUGFnZU51bWJlck5hdjogbnVtYmVyO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHV4QXBwU2hlbGxTZXJ2aWNlOiBVeEFwcFNoZWxsU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMgJiYgYy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoJC5uZXh0KGMubGVuZ3RoLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmdldFJhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgJiYgYy5wYWdlKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IGMucGFnZS5jdXJyZW50VmFsdWUsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYyAmJiBjLnBhZ2VTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IGMucGFnZVNpemUuY3VycmVudFZhbHVlLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZVNpemUoYy5wYWdlU2l6ZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5sZW5ndGgkLm5leHQodGhpcy5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYlBhZ2VOdW1iZXJOYXYgPSB0aGlzLm5iUGFnZU51bWJlck5hdmlnYXRpb247XG5cbiAgICAgICAgdGhpcy5sZW5ndGgkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKGxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgICAgICB0aGlzLm5iUGFnZSA9IE1hdGguY2VpbCh0aGlzLmxlbmd0aCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0R5bmFtaWNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5uYlBhZ2UgPCB0aGlzLm5iUGFnZU51bWJlck5hdmlnYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5iUGFnZU51bWJlck5hdiA9IHRoaXMubmJQYWdlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5iUGFnZU51bWJlck5hdiA9IHRoaXMubmJQYWdlTnVtYmVyTmF2aWdhdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ldyBFdWlQYWdpbmF0aW9uRXZlbnQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXcgRXVpUGFnaW5hdGlvbkV2ZW50KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGdldCBwYWdlTnVtYmVyTmF2aWdhdGlvbigpOiBudW1iZXJbXSB7XG4gICAgICAgIGNvbnN0IHBhZ2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uYlBhZ2U7IGkrKykge1xuICAgICAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5mbG9vcih0aGlzLm5iUGFnZU51bWJlck5hdiAvIDIpO1xuICAgICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgICBpZiAodGhpcy5wYWdlIC0gZGVsdGEgPiAwKSB7XG4gICAgICAgICAgICBzdGFydCA9IHRoaXMucGFnZSAtIGRlbHRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmJQYWdlIC0gdGhpcy5wYWdlIDw9IHRoaXMubmJQYWdlTnVtYmVyTmF2IC0gKGRlbHRhICsgMSkpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5uYlBhZ2UgLSB0aGlzLm5iUGFnZU51bWJlck5hdjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5uYlBhZ2VOdW1iZXJOYXY7XG4gICAgICAgIHJldHVybiBwYWdlcy5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlUGFnZVNpemUoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLm5iUGFnZSA9IE1hdGguY2VpbCh0aGlzLmxlbmd0aCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSkpO1xuICAgICAgICB0aGlzLmdldFJhbmdlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmJQYWdlIDwgdGhpcy5uYlBhZ2VOdW1iZXJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm5iUGFnZU51bWJlck5hdiA9IHRoaXMubmJQYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYlBhZ2VOdW1iZXJOYXYgPSB0aGlzLm5iUGFnZU51bWJlck5hdmlnYXRpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvVG9QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSkpO1xuICAgICAgICB0aGlzLmdldFJhbmdlKCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ29GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSA9IDA7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXcgRXVpUGFnaW5hdGlvbkV2ZW50KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KSk7XG4gICAgICAgIHRoaXMuZ2V0UmFuZ2UoKTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlLS07XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXcgRXVpUGFnaW5hdGlvbkV2ZW50KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KSk7XG4gICAgICAgIHRoaXMuZ2V0UmFuZ2UoKTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb05leHRQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UrKztcbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ldyBFdWlQYWdpbmF0aW9uRXZlbnQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvTGFzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmJQYWdlIC0gMTtcbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ldyBFdWlQYWdpbmF0aW9uRXZlbnQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhZ2UocGFnZTogRXVpUGFnaW5hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChwYWdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TGVuZ3RoKGxlbmd0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGVuZ3RoJC5uZXh0KGxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmcm9tID0gdGhpcy5sZW5ndGggPiAwID8gdGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSArIDEgOiAwO1xuICAgICAgICBjb25zdCBsaW1pdCA9IHRoaXMucGFnZSAqIHRoaXMucGFnZVNpemUgKyB0aGlzLnBhZ2VTaXplO1xuICAgICAgICBjb25zdCB0byA9IGxpbWl0IDw9IHRoaXMubGVuZ3RoID8gbGltaXQgOiB0aGlzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yYW5nZSA9IGZyb20gJiYgdG8gJiYgdGhpcy5sZW5ndGggPyBmcm9tICsgJ+KAkycgKyB0byA6ICcnO1xuICAgICAgICB0aGlzLnJhbmdlTGVuZ3RoID0gdGhpcy5sZW5ndGggPyB0aGlzLmxlbmd0aC50b1N0cmluZygpIDogJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBwYWdpbmF0aW9uIHRvIHRoZSBnaXZlbiBwYWdlIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2UgMC1iYXNlZCBwYWdlIG51bWJlciB0byBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKHBhZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWlzSGlkZGVuICYmICEodXhBcHBTaGVsbFNlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlXCIgY2xhc3M9XCJldWktcGFnaW5hdG9yX19wYWdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1wYWdpbmF0b3JfX3BhZ2Utc2VsZWN0b3JcIj5cbiAgICAgICAge3sgJ2V1aS5ldWl0YWJsZS5JVEVNUy1QRVItUEFHRScgfCB0cmFuc2xhdGUgfX06XG4gICAgICAgIDxldWktZHJvcGRvd24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBldWlCdXR0b24gZXVpQmFzaWNCdXR0b24gZXVpU2l6ZVM+XG4gICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPjxzdHJvbmc+e3sgcGFnZVNpemUgfX08L3N0cm9uZz48L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWNhcmV0LWRvd25cIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IEl0ZW1zIHBlciBwYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdS1tbC0yeHNcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGV1aS1kcm9wZG93bi1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZXVpRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBhZ2VTaXplT3B0aW9uIG9mIHBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZVNpemUocGFnZVNpemVPcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlU2l6ZU9wdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZXVpLWRyb3Bkb3duLWNvbnRlbnQ+XG4gICAgICAgIDwvZXVpLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIobGVuZ3RoJCB8IGFzeW5jKSA+IDBcIiBjbGFzcz1cImV1aS1wYWdpbmF0b3JfX3BhZ2UtcmFuZ2VcIj5cbiAgICAgICAge3sgJ2V1aS5ldWl0YWJsZS5TSE9XSU5HLVJBTkdFJyB8IHRyYW5zbGF0ZSA6IHsgcmFuZ2U6IHJhbmdlIH0gfX0ge3sgJ2V1aS5ldWl0YWJsZS5SQU5HRS1MQUJFTCcgfCB0cmFuc2xhdGUgfX0ge3sgcmFuZ2VMZW5ndGggfX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWlzSGlkZGVuXCIgY2xhc3M9XCJldWktcGFnaW5hdG9yX19wYWdlLW5hdmlnYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZXVpU2l6ZVNdPVwiaGFzUGFnZU51bWJlck5hdmlnYXRpb24gJiYgISh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicGFnZSA9PT0gMCB8fCBsZW5ndGggPT09IDAgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29GaXJzdFBhZ2UoKVwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNhcmV0LWZpcnN0XCIgYXJpYS1sYWJlbD1cIkdvIHRvIGZpcnN0IHBhZ2VcIiBmaWxsQ29sb3I9XCJwcmltYXJ5XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJldWktcGFnaW5hdG9yX19wYWdlLW5hdmlnYXRpb24taXRlbVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtldWlTaXplU109XCJoYXNQYWdlTnVtYmVyTmF2aWdhdGlvbiAmJiAhKHV4QXBwU2hlbGxTZXJ2aWNlLmJyZWFrcG9pbnRzJCB8IGFzeW5jKS5pc01vYmlsZVwiXG4gICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJwYWdlID09PSAwIHx8IGxlbmd0aCA9PT0gMCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1ByZXZpb3VzUGFnZSgpXCI+XG4gICAgICAgICAgICA8IS0tIHRvIGJlIGNvbXBsaWFudCB3aXRoIERTIGFzIHBsYXktYmFjayBpcyBub3QgZXhpc3RpbmcgaW4gaW9uaWNvbnMgLS0+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2FyZXQtbGVmdFwiIGFyaWEtbGFiZWw9XCJHbyB0byBwcmV2aW91cyBwYWdlXCIgZmlsbENvbG9yPVwicHJpbWFyeVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLW51bWJlcnNcIlxuICAgICAgICAqbmdJZj1cImhhc1BhZ2VOdW1iZXJOYXZpZ2F0aW9uICYmICEodXhBcHBTaGVsbFNlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYWdlTnVtYmVyIG9mIHBhZ2VOdW1iZXJOYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cInBhZ2VOdW1iZXIgPT09IHBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2VOdW1iZXIpXCI+XG4gICAgICAgICAgICB7eyBwYWdlTnVtYmVyICsgMSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiKGxlbmd0aCQgfCBhc3luYykgPiAwICYmICh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIiBjbGFzcz1cImV1aS1wYWdpbmF0b3JfX3BhZ2UtcmFuZ2VcIj5cbiAgICAgICAge3sgcmFuZ2UgfX0ge3sgJ2V1aS5ldWl0YWJsZS5SQU5HRS1MQUJFTCcgfCB0cmFuc2xhdGUgfX0ge3sgcmFuZ2VMZW5ndGggfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZXVpU2l6ZVNdPVwiaGFzUGFnZU51bWJlck5hdmlnYXRpb24gJiYgISh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicGFnZSArIDEgPT09IG5iUGFnZSB8fCBsZW5ndGggPT09IDAgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0UGFnZSgpXCI+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2FyZXQtcmlnaHRcIiBhcmlhLWxhYmVsPVwiR28gdG8gbmV4dCBwYWdlXCIgZmlsbENvbG9yPVwicHJpbWFyeVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZXVpU2l6ZVNdPVwiaGFzUGFnZU51bWJlck5hdmlnYXRpb24gJiYgISh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicGFnZSArIDEgPT09IG5iUGFnZSB8fCBsZW5ndGggPT09IDAgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29MYXN0UGFnZSgpXCI+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2FyZXQtbGFzdFwiIGFyaWEtbGFiZWw9XCJHbyB0byBsYXN0IHBhZ2VcIiBmaWxsQ29sb3I9XCJwcmltYXJ5XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktcGFnaW5hdG9yL2V1aS1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXBhZ2luYXRvci9ldWktcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsS0FBSyxFQUVMLFlBQVksRUFDWixNQUFNLEVBR04sV0FBVyxFQUNYLGlCQUFpQixFQUNqQix1QkFBdUIsR0FDMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUc1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7QUFTckUsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQVdELElBQ0ksdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLHVCQUF1QixDQUFDLEtBQW1CO1FBQzNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFDSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FB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QyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFTSxjQUFjO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUs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bmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuXG5pbXBvcnQgeyBFdWlQYWdpbmF0aW9uRXZlbnQgfSBmcm9tICcuL21vZGVscy9wYWdpbmF0aW9uLWV2ZW50Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktcGFnaW5hdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXBhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIEV1aVBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBzdHJpbmcgPSAnZXVpLXBhZ2luYXRvcic7XG4gICAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDUwLCAxMDBdO1xuICAgIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gICAgQElucHV0KCkgcGFnZSA9IDA7XG4gICAgQElucHV0KCkgbGVuZ3RoID0gMDtcbiAgICBASW5wdXQoKSBuYlBhZ2VOdW1iZXJOYXZpZ2F0aW9uID0gNTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGlkZGVuO1xuICAgIH1cbiAgICBzZXQgaXNIaWRkZW4odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGRlbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIF9pc0hpZGRlbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aVBhZ2luYXRpb25FdmVudD4oKTtcblxuICAgIHB1YmxpYyBwYWdlJDogQmVoYXZpb3JTdWJqZWN0PEV1aVBhZ2luYXRpb25FdmVudD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICAgIHB1YmxpYyBsZW5ndGgkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG4gICAgcHVibGljIHJhbmdlOiBzdHJpbmc7XG4gICAgcHVibGljIHJhbmdlTGVuZ3RoOiBzdHJpbmc7XG4gICAgcHVibGljIG5iUGFnZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzUGFnZU51bWJlck5hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNQYWdlTnVtYmVyTmF2aWdhdGlvbjtcbiAgICB9XG4gICAgc2V0IGhhc1BhZ2VOdW1iZXJOYXZpZ2F0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzUGFnZU51bWJlck5hdmlnYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNQYWdlTnVtYmVyTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc0R5bmFtaWNMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNEeW5hbWljTGVuZ3RoO1xuICAgIH1cbiAgICBzZXQgaGFzRHluYW1pY0xlbmd0aCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc0R5bmFtaWNMZW5ndGggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNEeW5hbWljTGVuZ3RoID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG5iUGFnZU51bWJlck5hdjogbnVtYmVyO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHV4QXBwU2hlbGxTZXJ2aWNlOiBVeEFwcFNoZWxsU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMgJiYgYy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoJC5uZXh0KGMubGVuZ3RoLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmdldFJhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgJiYgYy5wYWdlKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IGMucGFnZS5jdXJyZW50VmFsdWUsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYyAmJiBjLnBhZ2VTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IGMucGFnZVNpemUuY3VycmVudFZhbHVlLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZVNpemUoYy5wYWdlU2l6ZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5sZW5ndGgkLm5leHQodGhpcy5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYlBhZ2VOdW1iZXJOYXYgPSB0aGlzLm5iUGFnZU51bWJlck5hdmlnYXRpb247XG5cbiAgICAgICAgdGhpcy5sZW5ndGgkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKGxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgICAgICB0aGlzLm5iUGFnZSA9IE1hdGguY2VpbCh0aGlzLmxlbmd0aCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0R5bmFtaWNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5uYlBhZ2UgPCB0aGlzLm5iUGFnZU51bWJlck5hdmlnYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5iUGFnZU51bWJlck5hdiA9IHRoaXMubmJQYWdlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5iUGFnZU51bWJlck5hdiA9IHRoaXMubmJQYWdlTnVtYmVyTmF2aWdhdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ldyBFdWlQYWdpbmF0aW9uRXZlbnQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXcgRXVpUGFnaW5hdGlvbkV2ZW50KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGdldCBwYWdlTnVtYmVyTmF2aWdhdGlvbigpOiBudW1iZXJbXSB7XG4gICAgICAgIGNvbnN0IHBhZ2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uYlBhZ2U7IGkrKykge1xuICAgICAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5mbG9vcih0aGlzLm5iUGFnZU51bWJlck5hdiAvIDIpO1xuICAgICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgICBpZiAodGhpcy5wYWdlIC0gZGVsdGEgPiAwKSB7XG4gICAgICAgICAgICBzdGFydCA9IHRoaXMucGFnZSAtIGRlbHRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmJQYWdlIC0gdGhpcy5wYWdlIDw9IHRoaXMubmJQYWdlTnVtYmVyTmF2IC0gKGRlbHRhICsgMSkpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5uYlBhZ2UgLSB0aGlzLm5iUGFnZU51bWJlck5hdjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5uYlBhZ2VOdW1iZXJOYXY7XG4gICAgICAgIHJldHVybiBwYWdlcy5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlUGFnZVNpemUoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLm5iUGFnZSA9IE1hdGguY2VpbCh0aGlzLmxlbmd0aCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSkpO1xuICAgICAgICB0aGlzLmdldFJhbmdlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmJQYWdlIDwgdGhpcy5uYlBhZ2VOdW1iZXJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm5iUGFnZU51bWJlck5hdiA9IHRoaXMubmJQYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYlBhZ2VOdW1iZXJOYXYgPSB0aGlzLm5iUGFnZU51bWJlck5hdmlnYXRpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvVG9QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3IEV1aVBhZ2luYXRpb25FdmVudCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSkpO1xuICAgICAgICB0aGlzLmdldFJhbmdlKCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ29GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSA9IDA7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXcgRXVpUGFnaW5hdGlvbkV2ZW50KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KSk7XG4gICAgICAgIHRoaXMuZ2V0UmFuZ2UoKTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlLS07XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXcgRXVpUGFnaW5hdGlvbkV2ZW50KHsgcGFnZTogdGhpcy5wYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgbmJQYWdlOiB0aGlzLm5iUGFnZSB9KSk7XG4gICAgICAgIHRoaXMuZ2V0UmFuZ2UoKTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb05leHRQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UrKztcbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ldyBFdWlQYWdpbmF0aW9uRXZlbnQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvTGFzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmJQYWdlIC0gMTtcbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ldyBFdWlQYWdpbmF0aW9uRXZlbnQoeyBwYWdlOiB0aGlzLnBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBuYlBhZ2U6IHRoaXMubmJQYWdlIH0pKTtcbiAgICAgICAgdGhpcy5nZXRSYW5nZSgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIG5iUGFnZTogdGhpcy5uYlBhZ2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhZ2UocGFnZTogRXVpUGFnaW5hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChwYWdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TGVuZ3RoKGxlbmd0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGVuZ3RoJC5uZXh0KGxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmcm9tID0gdGhpcy5sZW5ndGggPiAwID8gdGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSArIDEgOiAwO1xuICAgICAgICBjb25zdCBsaW1pdCA9IHRoaXMucGFnZSAqIHRoaXMucGFnZVNpemUgKyB0aGlzLnBhZ2VTaXplO1xuICAgICAgICBjb25zdCB0byA9IGxpbWl0IDw9IHRoaXMubGVuZ3RoID8gbGltaXQgOiB0aGlzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yYW5nZSA9IGZyb20gJiYgdG8gJiYgdGhpcy5sZW5ndGggPyBmcm9tICsgJ+KAkycgKyB0byA6ICcnO1xuICAgICAgICB0aGlzLnJhbmdlTGVuZ3RoID0gdGhpcy5sZW5ndGggPyB0aGlzLmxlbmd0aC50b1N0cmluZygpIDogJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBwYWdpbmF0aW9uIHRvIHRoZSBnaXZlbiBwYWdlIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2UgMC1iYXNlZCBwYWdlIG51bWJlciB0byBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKHBhZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWlzSGlkZGVuICYmICEodXhBcHBTaGVsbFNlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlXCIgY2xhc3M9XCJldWktcGFnaW5hdG9yX19wYWdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1wYWdpbmF0b3JfX3BhZ2Utc2VsZWN0b3JcIj5cbiAgICAgICAge3sgJ2V1aS5ldWl0YWJsZS5JVEVNUy1QRVItUEFHRScgfCB0cmFuc2xhdGUgfX06XG4gICAgICAgIDxldWktZHJvcGRvd24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBldWlCdXR0b24gZXVpQmFzaWNCdXR0b24gZXVpU2l6ZVM+XG4gICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPjxzdHJvbmc+e3sgcGFnZVNpemUgfX08L3N0cm9uZz48L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWNhcmV0LWRvd25cIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IEl0ZW1zIHBlciBwYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdS1tbC0yeHNcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGV1aS1kcm9wZG93bi1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZXVpRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBhZ2VTaXplT3B0aW9uIG9mIHBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZVNpemUocGFnZVNpemVPcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlU2l6ZU9wdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZXVpLWRyb3Bkb3duLWNvbnRlbnQ+XG4gICAgICAgIDwvZXVpLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIobGVuZ3RoJCB8IGFzeW5jKSA+IDBcIiBjbGFzcz1cImV1aS1wYWdpbmF0b3JfX3BhZ2UtcmFuZ2VcIj5cbiAgICAgICAge3sgJ2V1aS5ldWl0YWJsZS5TSE9XSU5HLVJBTkdFJyB8IHRyYW5zbGF0ZSA6IHsgcmFuZ2U6IHJhbmdlIH0gfX0ge3sgJ2V1aS5ldWl0YWJsZS5SQU5HRS1MQUJFTCcgfCB0cmFuc2xhdGUgfX0ge3sgcmFuZ2VMZW5ndGggfX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWlzSGlkZGVuXCIgY2xhc3M9XCJldWktcGFnaW5hdG9yX19wYWdlLW5hdmlnYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZXVpU2l6ZVNdPVwiaGFzUGFnZU51bWJlck5hdmlnYXRpb24gJiYgISh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicGFnZSA9PT0gMCB8fCBsZW5ndGggPT09IDAgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29GaXJzdFBhZ2UoKVwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNhcmV0LWZpcnN0XCIgYXJpYS1sYWJlbD1cIkdvIHRvIGZpcnN0IHBhZ2VcIiBmaWxsQ29sb3I9XCJwcmltYXJ5XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJldWktcGFnaW5hdG9yX19wYWdlLW5hdmlnYXRpb24taXRlbVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtldWlTaXplU109XCJoYXNQYWdlTnVtYmVyTmF2aWdhdGlvbiAmJiAhKHV4QXBwU2hlbGxTZXJ2aWNlLmJyZWFrcG9pbnRzJCB8IGFzeW5jKS5pc01vYmlsZVwiXG4gICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJwYWdlID09PSAwIHx8IGxlbmd0aCA9PT0gMCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1ByZXZpb3VzUGFnZSgpXCI+XG4gICAgICAgICAgICA8IS0tIHRvIGJlIGNvbXBsaWFudCB3aXRoIERTIGFzIHBsYXktYmFjayBpcyBub3QgZXhpc3RpbmcgaW4gaW9uaWNvbnMgLS0+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2FyZXQtbGVmdFwiIGFyaWEtbGFiZWw9XCJHbyB0byBwcmV2aW91cyBwYWdlXCIgZmlsbENvbG9yPVwicHJpbWFyeVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLW51bWJlcnNcIlxuICAgICAgICAqbmdJZj1cImhhc1BhZ2VOdW1iZXJOYXZpZ2F0aW9uICYmICEodXhBcHBTaGVsbFNlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYWdlTnVtYmVyIG9mIHBhZ2VOdW1iZXJOYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cInBhZ2VOdW1iZXIgPT09IHBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2VOdW1iZXIpXCI+XG4gICAgICAgICAgICB7eyBwYWdlTnVtYmVyICsgMSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiKGxlbmd0aCQgfCBhc3luYykgPiAwICYmICh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIiBjbGFzcz1cImV1aS1wYWdpbmF0b3JfX3BhZ2UtcmFuZ2VcIj5cbiAgICAgICAge3sgcmFuZ2UgfX0ge3sgJ2V1aS5ldWl0YWJsZS5SQU5HRS1MQUJFTCcgfCB0cmFuc2xhdGUgfX0ge3sgcmFuZ2VMZW5ndGggfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZXVpU2l6ZVNdPVwiaGFzUGFnZU51bWJlck5hdmlnYXRpb24gJiYgISh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicGFnZSArIDEgPT09IG5iUGFnZSB8fCBsZW5ndGggPT09IDAgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0UGFnZSgpXCI+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2FyZXQtcmlnaHRcIiBhcmlhLWxhYmVsPVwiR28gdG8gbmV4dCBwYWdlXCIgZmlsbENvbG9yPVwicHJpbWFyeVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXBhZ2luYXRvcl9fcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZXVpU2l6ZVNdPVwiaGFzUGFnZU51bWJlck5hdmlnYXRpb24gJiYgISh1eEFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGVcIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicGFnZSArIDEgPT09IG5iUGFnZSB8fCBsZW5ndGggPT09IDAgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29MYXN0UGFnZSgpXCI+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2FyZXQtbGFzdFwiIGFyaWEtbGFiZWw9XCJHbyB0byBsYXN0IHBhZ2VcIiBmaWxsQ29sb3I9XCJwcmltYXJ5XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -139,11 +139,11 @@ export class EuiSelectComponent {
139
139
  }
140
140
  }
141
141
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EuiSelectComponent, deps: [{ token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
142
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: EuiSelectComponent, selector: "select[euiSelect]", inputs: { placeholder: "placeholder", readonly: "readonly", isInvalid: "isInvalid" }, host: { listeners: { "change": "onChange($event.target.value)" } }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".eui-select{font: 400 1rem/1.25rem arial,sans-serif;-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);color:var(--eui-base-color-grey-100);display:block;min-height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));padding:calc(var(--eui-base-spacing-s) - 1px);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--eui-base-color)}.eui-select:active:not([readonly]),.eui-select:focus:not([readonly]){z-index:auto;border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.eui-select::placeholder{color:var(--eui-base-color-grey-50)!important;opacity:1}.eui-select[readonly]{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-select[readonly]+.eui-feedback-message,.eui-select[readonly]+.eui-input-maxlength{-webkit-appearance:none;appearance:none;display:none}.eui-select[disabled]:not([readonly]),.eui-select--disabled:not([readonly]){background-color:var(--eui-base-color-grey-5)!important;border:1px solid var(--eui-base-color-grey-25)!important;color:var(--eui-base-color-grey-75);pointer-events:none}.eui-select--invalid,.eui-select--danger{border:1px solid var(--eui-base-color-danger-100)}.eui-select--clearable{padding-right:var(--eui-base-spacing-2xl)}.eui-select--clearable-icon{visibility:visible;position:absolute;right:var(--eui-base-spacing-s);cursor:pointer;-webkit-user-select:none;user-select:none}.eui-select--clearable-icon:focus{border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select--clearable-icon>svg{fill:var(--eui-base-color-grey-35)}.eui-select--clearable-icon>svg:hover{fill:var(--eui-base-color-grey-100)}.eui-select--loading{padding-right:var(--eui-base-spacing-2xl)}.eui-select--loading-icon{align-items:center;display:flex}.eui-select--loading-icon:after,.eui-select--loading-icon:before{content:\"\";height:var(--eui-base-spacing-l);position:absolute;right:var(--eui-base-spacing-s);width:var(--eui-base-spacing-l)}.eui-select--loading-icon:before{border:var(--eui-base-spacing-2xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-select--loading-icon:after{animation:eui-loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-base-color-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eui-base-spacing-2xs);box-shadow:0 0 0 1px transparent}.eui-select--loading-icon--sm:after,.eui-select--loading-icon--sm:before{height:var(--eui-base-spacing-m);width:var(--eui-base-spacing-m)}@keyframes eui-loading{to{transform:rotate(360deg)}}.eui-select::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-10)}.eui-select::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-select::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.eui-select::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.eui-select[readonly][multiple=true] option:checked{background:none}.eui-select[readonly][multiple=true] :not(option:checked){display:none}.eui-select[multiple=true],.eui-select[size]:not([size=\"1\"]):not([size=\"0\"]){background-image:none;height:auto;overflow:auto;padding:var(--eui-base-spacing-2xs) 0}.eui-select__readonly:active,.eui-select__readonly:focus{border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select__placeholder{color:var(--eui-base-color-grey-50)!important}.eui-select__item{color:var(--eui-base-color-grey-100)}.eui-select optgroup{font: 400 1rem/1.25rem arial,sans-serif;font-style:normal;font-weight:700}.eui-select optgroup,.eui-select option{-webkit-appearance:none;appearance:none;color:var(--eui-base-color);display:block;padding:var(--eui-base-spacing-2xs);white-space:pre}.eui-select optgroup:disabled,.eui-select option:disabled{color:var(--eui-base-color-grey-25)}.eui-select:not([readonly]):not([multiple]),.eui-select[size=\"1\"],.eui-select[size=\"0\"]{-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);background-image:url('data:image/svg+xml;utf8, <svg focusable=\"false\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" name=\"chevron-down\" aria-label=\"Close menu\" role=\"img\"><path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"/></svg>');background-position:calc(100% - var(--eui-base-spacing-s)) center;background-repeat:no-repeat;background-size:var(--eui-base-spacing-m);padding-right:var(--eui-base-spacing-xl)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
142
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: EuiSelectComponent, selector: "select[euiSelect]", inputs: { placeholder: "placeholder", readonly: "readonly", isInvalid: "isInvalid" }, host: { listeners: { "change": "onChange($event.target.value)" } }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".eui-select{font: 400 1rem/1.25rem arial,sans-serif;-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);color:var(--eui-base-color-grey-100);display:block;min-height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));padding:calc(var(--eui-base-spacing-s) - 1px);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--eui-base-color);overflow-y:auto}.eui-select:active:not([readonly]),.eui-select:focus:not([readonly]){z-index:auto;border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.eui-select::placeholder{color:var(--eui-base-color-grey-50)!important;opacity:1}.eui-select[readonly]{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-select[readonly]+.eui-feedback-message,.eui-select[readonly]+.eui-input-maxlength{-webkit-appearance:none;appearance:none;display:none}.eui-select[disabled]:not([readonly]),.eui-select--disabled:not([readonly]){background-color:var(--eui-base-color-grey-5)!important;border:1px solid var(--eui-base-color-grey-25)!important;color:var(--eui-base-color-grey-75);pointer-events:none}.eui-select--invalid,.eui-select--danger{border:1px solid var(--eui-base-color-danger-100)}.eui-select--clearable{padding-right:var(--eui-base-spacing-2xl)}.eui-select--clearable-icon{visibility:visible;position:absolute;right:var(--eui-base-spacing-s);cursor:pointer;-webkit-user-select:none;user-select:none}.eui-select--clearable-icon:focus{border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select--clearable-icon>svg{fill:var(--eui-base-color-grey-35)}.eui-select--clearable-icon>svg:hover{fill:var(--eui-base-color-grey-100)}.eui-select--loading{padding-right:var(--eui-base-spacing-2xl)}.eui-select--loading-icon{align-items:center;display:flex}.eui-select--loading-icon:after,.eui-select--loading-icon:before{content:\"\";height:var(--eui-base-spacing-l);position:absolute;right:var(--eui-base-spacing-s);width:var(--eui-base-spacing-l)}.eui-select--loading-icon:before{border:var(--eui-base-spacing-2xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-select--loading-icon:after{animation:eui-loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-base-color-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eui-base-spacing-2xs);box-shadow:0 0 0 1px transparent}.eui-select--loading-icon--sm:after,.eui-select--loading-icon--sm:before{height:var(--eui-base-spacing-m);width:var(--eui-base-spacing-m)}@keyframes eui-loading{to{transform:rotate(360deg)}}.eui-select::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-10)}.eui-select::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-select::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.eui-select::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.eui-select[readonly][multiple=true] option:checked{background:none}.eui-select[readonly][multiple=true] :not(option:checked){display:none}.eui-select[multiple=true],.eui-select[size]:not([size=\"1\"]):not([size=\"0\"]){background-image:none;height:auto;overflow:auto;padding:var(--eui-base-spacing-2xs) 0}.eui-select__readonly:active,.eui-select__readonly:focus{border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select__placeholder{color:var(--eui-base-color-grey-50)!important}.eui-select__item{color:var(--eui-base-color-grey-100)}.eui-select optgroup{font: 400 1rem/1.25rem arial,sans-serif;font-style:normal;font-weight:700}.eui-select optgroup,.eui-select option{-webkit-appearance:none;appearance:none;color:var(--eui-base-color);display:block;padding:var(--eui-base-spacing-2xs);white-space:pre}.eui-select optgroup:disabled,.eui-select option:disabled{color:var(--eui-base-color-grey-25)}.eui-select:not([readonly]):not([multiple]),.eui-select[size=\"1\"],.eui-select[size=\"0\"]{-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);background-image:url('data:image/svg+xml;utf8, <svg focusable=\"false\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" name=\"chevron-down\" aria-label=\"Close menu\" role=\"img\"><path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"/></svg>');background-position:calc(100% - var(--eui-base-spacing-s)) center;background-repeat:no-repeat;background-size:var(--eui-base-spacing-m);padding-right:var(--eui-base-spacing-xl)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EuiSelectComponent, decorators: [{
145
145
  type: Component,
146
- args: [{ selector: 'select[euiSelect]', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, styles: [".eui-select{font: 400 1rem/1.25rem arial,sans-serif;-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);color:var(--eui-base-color-grey-100);display:block;min-height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));padding:calc(var(--eui-base-spacing-s) - 1px);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--eui-base-color)}.eui-select:active:not([readonly]),.eui-select:focus:not([readonly]){z-index:auto;border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.eui-select::placeholder{color:var(--eui-base-color-grey-50)!important;opacity:1}.eui-select[readonly]{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-select[readonly]+.eui-feedback-message,.eui-select[readonly]+.eui-input-maxlength{-webkit-appearance:none;appearance:none;display:none}.eui-select[disabled]:not([readonly]),.eui-select--disabled:not([readonly]){background-color:var(--eui-base-color-grey-5)!important;border:1px solid var(--eui-base-color-grey-25)!important;color:var(--eui-base-color-grey-75);pointer-events:none}.eui-select--invalid,.eui-select--danger{border:1px solid var(--eui-base-color-danger-100)}.eui-select--clearable{padding-right:var(--eui-base-spacing-2xl)}.eui-select--clearable-icon{visibility:visible;position:absolute;right:var(--eui-base-spacing-s);cursor:pointer;-webkit-user-select:none;user-select:none}.eui-select--clearable-icon:focus{border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select--clearable-icon>svg{fill:var(--eui-base-color-grey-35)}.eui-select--clearable-icon>svg:hover{fill:var(--eui-base-color-grey-100)}.eui-select--loading{padding-right:var(--eui-base-spacing-2xl)}.eui-select--loading-icon{align-items:center;display:flex}.eui-select--loading-icon:after,.eui-select--loading-icon:before{content:\"\";height:var(--eui-base-spacing-l);position:absolute;right:var(--eui-base-spacing-s);width:var(--eui-base-spacing-l)}.eui-select--loading-icon:before{border:var(--eui-base-spacing-2xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-select--loading-icon:after{animation:eui-loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-base-color-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eui-base-spacing-2xs);box-shadow:0 0 0 1px transparent}.eui-select--loading-icon--sm:after,.eui-select--loading-icon--sm:before{height:var(--eui-base-spacing-m);width:var(--eui-base-spacing-m)}@keyframes eui-loading{to{transform:rotate(360deg)}}.eui-select::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-10)}.eui-select::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-select::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.eui-select::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.eui-select[readonly][multiple=true] option:checked{background:none}.eui-select[readonly][multiple=true] :not(option:checked){display:none}.eui-select[multiple=true],.eui-select[size]:not([size=\"1\"]):not([size=\"0\"]){background-image:none;height:auto;overflow:auto;padding:var(--eui-base-spacing-2xs) 0}.eui-select__readonly:active,.eui-select__readonly:focus{border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select__placeholder{color:var(--eui-base-color-grey-50)!important}.eui-select__item{color:var(--eui-base-color-grey-100)}.eui-select optgroup{font: 400 1rem/1.25rem arial,sans-serif;font-style:normal;font-weight:700}.eui-select optgroup,.eui-select option{-webkit-appearance:none;appearance:none;color:var(--eui-base-color);display:block;padding:var(--eui-base-spacing-2xs);white-space:pre}.eui-select optgroup:disabled,.eui-select option:disabled{color:var(--eui-base-color-grey-25)}.eui-select:not([readonly]):not([multiple]),.eui-select[size=\"1\"],.eui-select[size=\"0\"]{-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);background-image:url('data:image/svg+xml;utf8, <svg focusable=\"false\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" name=\"chevron-down\" aria-label=\"Close menu\" role=\"img\"><path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"/></svg>');background-position:calc(100% - var(--eui-base-spacing-s)) center;background-repeat:no-repeat;background-size:var(--eui-base-spacing-m);padding-right:var(--eui-base-spacing-xl)}\n"] }]
146
+ args: [{ selector: 'select[euiSelect]', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, styles: [".eui-select{font: 400 1rem/1.25rem arial,sans-serif;-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);color:var(--eui-base-color-grey-100);display:block;min-height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));padding:calc(var(--eui-base-spacing-s) - 1px);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--eui-base-color);overflow-y:auto}.eui-select:active:not([readonly]),.eui-select:focus:not([readonly]){z-index:auto;border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.eui-select::placeholder{color:var(--eui-base-color-grey-50)!important;opacity:1}.eui-select[readonly]{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-select[readonly]+.eui-feedback-message,.eui-select[readonly]+.eui-input-maxlength{-webkit-appearance:none;appearance:none;display:none}.eui-select[disabled]:not([readonly]),.eui-select--disabled:not([readonly]){background-color:var(--eui-base-color-grey-5)!important;border:1px solid var(--eui-base-color-grey-25)!important;color:var(--eui-base-color-grey-75);pointer-events:none}.eui-select--invalid,.eui-select--danger{border:1px solid var(--eui-base-color-danger-100)}.eui-select--clearable{padding-right:var(--eui-base-spacing-2xl)}.eui-select--clearable-icon{visibility:visible;position:absolute;right:var(--eui-base-spacing-s);cursor:pointer;-webkit-user-select:none;user-select:none}.eui-select--clearable-icon:focus{border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select--clearable-icon>svg{fill:var(--eui-base-color-grey-35)}.eui-select--clearable-icon>svg:hover{fill:var(--eui-base-color-grey-100)}.eui-select--loading{padding-right:var(--eui-base-spacing-2xl)}.eui-select--loading-icon{align-items:center;display:flex}.eui-select--loading-icon:after,.eui-select--loading-icon:before{content:\"\";height:var(--eui-base-spacing-l);position:absolute;right:var(--eui-base-spacing-s);width:var(--eui-base-spacing-l)}.eui-select--loading-icon:before{border:var(--eui-base-spacing-2xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-select--loading-icon:after{animation:eui-loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-base-color-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eui-base-spacing-2xs);box-shadow:0 0 0 1px transparent}.eui-select--loading-icon--sm:after,.eui-select--loading-icon--sm:before{height:var(--eui-base-spacing-m);width:var(--eui-base-spacing-m)}@keyframes eui-loading{to{transform:rotate(360deg)}}.eui-select::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-10)}.eui-select::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-select::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.eui-select::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.eui-select[readonly][multiple=true] option:checked{background:none}.eui-select[readonly][multiple=true] :not(option:checked){display:none}.eui-select[multiple=true],.eui-select[size]:not([size=\"1\"]):not([size=\"0\"]){background-image:none;height:auto;overflow:auto;padding:var(--eui-base-spacing-2xs) 0}.eui-select__readonly:active,.eui-select__readonly:focus{border-color:var(--eui-base-color-accessible-focus)!important;box-shadow:inset 0 0 0 1px var(--eui-base-color-accessible-focus),inset 0 0 0 2px var(--eui-base-color-grey-5);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border:2px solid var(--eui-base-color-accessible-focus);outline:none;transition:border .15s ease-in-out}.eui-select__placeholder{color:var(--eui-base-color-grey-50)!important}.eui-select__item{color:var(--eui-base-color-grey-100)}.eui-select optgroup{font: 400 1rem/1.25rem arial,sans-serif;font-style:normal;font-weight:700}.eui-select optgroup,.eui-select option{-webkit-appearance:none;appearance:none;color:var(--eui-base-color);display:block;padding:var(--eui-base-spacing-2xs);white-space:pre}.eui-select optgroup:disabled,.eui-select option:disabled{color:var(--eui-base-color-grey-25)}.eui-select:not([readonly]):not([multiple]),.eui-select[size=\"1\"],.eui-select[size=\"0\"]{-webkit-appearance:none;appearance:none;background-color:var(--eui-base-color-white);background-image:url('data:image/svg+xml;utf8, <svg focusable=\"false\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" name=\"chevron-down\" aria-label=\"Close menu\" role=\"img\"><path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"/></svg>');background-position:calc(100% - var(--eui-base-spacing-s)) center;background-repeat:no-repeat;background-size:var(--eui-base-spacing-m);padding-right:var(--eui-base-spacing-xl)}\n"] }]
147
147
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { placeholder: [{
148
148
  type: Input
149
149
  }], readonly: [{
@@ -58,6 +58,7 @@ export class EuiTableComponent extends BaseDirective {
58
58
  this.cd = cd;
59
59
  this.euiTableSelectableRowService = euiTableSelectableRowService;
60
60
  this.elementRef = elementRef;
61
+ this.rows = [];
61
62
  this.propId = 'id';
62
63
  this.preselectedRows = [];
63
64
  this.string = 'eui-table';
@@ -87,6 +88,9 @@ export class EuiTableComponent extends BaseDirective {
87
88
  this.stickyFeatureHandlerIndex = 0;
88
89
  }
89
90
  ngOnChanges(c) {
91
+ if (!this.rows) {
92
+ this.rows = [];
93
+ }
90
94
  this.euiTableSelectableRowService.setPropId(this.propId);
91
95
  if (c && c.rows && c.rows.firstChange === false) {
92
96
  this.tableFeaturesHandlerSubscription.unsubscribe();
@@ -283,7 +287,7 @@ export class EuiTableComponent extends BaseDirective {
283
287
  const props = [];
284
288
  const paths = (pathObj = {}, head = '') => Object.entries(pathObj).reduce((product, [key, value]) => {
285
289
  const fullPath = addDelimiter(head, key);
286
- const match = (v) => typeof v !== 'object' && v?.toString().toLowerCase().indexOf(filter?.trim().toLowerCase()) !== -1;
290
+ const match = (v) => v && typeof v !== 'object' && v?.toString().toLowerCase().indexOf(filter?.trim().toLowerCase()) !== -1;
287
291
  if (key !== '0' && typeof value !== 'object') {
288
292
  props.push({ key: addDelimiter(head, key), match: match(value), value });
289
293
  }
@@ -416,4 +420,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
416
420
  type: HostBinding,
417
421
  args: ['class']
418
422
  }] } });
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS9ldWktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFXM0YsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFZaEQsSUFBNkMsVUFBVTtRQUNuRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQXFCRCxzQ0FBc0M7SUFDdEMsSUFBYSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLE9BQU8sQ0FBQyxLQUFtQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxD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QUs7Z0JBS0YsYUFBYTtzQkFEaEIsS0FBSztnQkFLRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBS0YsZUFBZTtzQkFEbEIsS0FBSztnQkFLRixlQUFlO3NCQURsQixLQUFLO2dCQUtGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFhRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBFdWlUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcbmltcG9ydCB7IEV1aVBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktcGFnaW5hdG9yJztcblxuaW1wb3J0IHsgRXVpVGFibGVTb3J0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXNvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRXZlbnQgfSBmcm9tICcuL21vZGVscy9wYWdpbmF0aW9uLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEV1aVRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZXVpLXRhYmxlLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXNlbGVjdGFibGUtcm93LnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc29ydC1ldmVudC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXRhYmxlLCB0YWJsZVtldWlUYWJsZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbRXVpVGFibGVTb3J0U2VydmljZSwgRXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIHJvd3M6IGFueVtdO1xuICAgIEBJbnB1dCgpIHByb3BJZCA9ICdpZCc7XG4gICAgQElucHV0KCkgcGFnaW5hdG9yOiBFdWlQYWdpbmF0b3JDb21wb25lbnQ7XG4gICAgQElucHV0KCkgZmlsdGVyOiBFdWlUYWJsZUZpbHRlckNvbXBvbmVudDtcbiAgICBASW5wdXQoKSBwcmVzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XG4gICAgLyoqIEBkZXByZWNhdGVkIFNpbmNlIGV1aS10YWJsZSB1c2VzIG5hdGl2ZSBDU1MgcG9zaXRpb24gc3RpY2t5LCBwYXNzaW5nIHRoZSByZWZlcmVuY2Ugb2YgY29udGFpbmVyIGlzIG5vIGxvbmdlciBuZWVkZWQuXG4gICAgICogSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUgdmVyc2lvbiBvZiBlVUlcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpIHNjcm9sbGFibGVDb250YWluZXJSZWY6IEVsZW1lbnQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgc3RyaW5nID0gJ2V1aS10YWJsZSc7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ldWktdGFibGVfX2xvYWRpbmcnKSBnZXQgaGFzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEV2ZW50PigpO1xuXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBlbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwdWJsaWMgcm93c1JlbmRlcmVkOiBhbnlbXSA9IFtdO1xuXG4gICAgcHVibGljIHBhZ2UgPSAwO1xuICAgIHB1YmxpYyBwYWdlU2l6ZSA9IDA7XG4gICAgcHVibGljIHNob3dTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgZmlsdGVyZWRSb3dzID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEV1aVRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxFdWlUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicpIHRoZWFkUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Ym9keVJlZicpIHRib2R5UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIHByZXR0aWVyL3ByZXR0aWVyICovXG4gICAgQElucHV0KCkgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9sb2FkaW5nOyB9XG4gICAgc2V0IGxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9sb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBhc3luY1RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fYXN5bmNUYWJsZTsgfVxuICAgIHNldCBhc3luY1RhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fYXN5bmNUYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9hc3luY1RhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcGFnaW5hYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcGFnaW5hYmxlOyB9XG4gICAgc2V0IHBhZ2luYWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX3BhZ2luYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9wYWdpbmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZVJlc3BvbnNpdmUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9ldWlUYWJsZVJlc3BvbnNpdmU7IH1cbiAgICBzZXQgZXVpVGFibGVSZXNwb25zaXZlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZXVpVGFibGVSZXNwb25zaXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlUmVzcG9uc2l2ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV1aVRhYmxlRml4ZWRMYXlvdXQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9ldWlUYWJsZUZpeGVkTGF5b3V0OyB9XG4gICAgc2V0IGV1aVRhYmxlRml4ZWRMYXlvdXQodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9ldWlUYWJsZUZpeGVkTGF5b3V0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlRml4ZWRMYXlvdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZURyYWdnYWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V1aVRhYmxlRHJhZ2dhYmxlOyB9XG4gICAgc2V0IGV1aVRhYmxlRHJhZ2dhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZXVpVGFibGVEcmFnZ2FibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVEcmFnZ2FibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZUNhcmRzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZXVpVGFibGVDYXJkczsgfVxuICAgIHNldCBldWlUYWJsZUNhcmRzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZXVpVGFibGVDYXJkcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9ldWlUYWJsZUNhcmRzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVCb3JkZXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQm9yZGVyZWQ7IH1cbiAgICBzZXQgZXVpVGFibGVCb3JkZXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2V1aVRhYmxlQm9yZGVyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVCb3JkZXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV1aVRhYmxlQ29tcGFjdCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQ29tcGFjdDsgfVxuICAgIHNldCBldWlUYWJsZUNvbXBhY3QodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9ldWlUYWJsZUNvbXBhY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVDb21wYWN0ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzU3RpY2t5SGVhZGVyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGFzU3RpY2t5SGVhZGVyOyB9XG4gICAgc2V0IGhhc1N0aWNreUhlYWRlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2hhc1N0aWNreUhlYWRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9oYXNTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNTdGlja3lDb2x1bW5zKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGFzU3RpY2t5Q29sdW1uczsgfVxuICAgIHNldCBoYXNTdGlja3lDb2x1bW5zKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5faGFzU3RpY2t5Q29sdW1ucyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9oYXNTdGlja3lDb2x1bW5zID0gZmFsc2U7XG4gICAgLyogZXNsaW50LWVuYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuXG4gICAgcHJpdmF0ZSByb3dzU3JjOiBhbnkgPSBudWxsO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgdGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBzZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBzdGlja3lGZWF0dXJlSGFuZGxlckluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlUmVzcG9uc2l2ZSA/IGBldWktdGFibGUtLXJlc3BvbnNpdmVgIDogYGAsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlRml4ZWRMYXlvdXQgPyBgZXVpLXRhYmxlLS1maXhlZC1sYXlvdXRgIDogYGAsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQm9yZGVyZWQgPyBgZXVpLXRhYmxlLS1ib3JkZXJlZGAgOiBgYCxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVDb21wYWN0ID8gYGV1aS10YWJsZS0tY29tcGFjdGAgOiBgYCxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVEcmFnZ2FibGUgPyBgZXVpLXRhYmxlLS1kcmFnZ2FibGVgIDogYGAsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQ2FyZHMgPyBgZXVpLXRhYmxlLWNhcmRzYCA6IGBgLFxuICAgICAgICAgICAgdGhpcy5oYXNTdGlja3lIZWFkZXIgPyBgZXVpLXRhYmxlLS1zdGlja3ktaGVhZGVyYCA6IGBgLFxuICAgICAgICAgICAgdGhpcy5oYXNTdGlja3lDb2x1bW5zID8gYGV1aS10YWJsZS0tc3RpY2t5LWNvbHVtbnNgIDogYGAsXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktdGFibGUnKSxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBldWlUYWJsZVNvcnRTZXJ2aWNlOiBFdWlUYWJsZVNvcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlOiBFdWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZXRQcm9wSWQodGhpcy5wcm9wSWQpO1xuICAgICAgICBpZiAoYyAmJiBjLnJvd3MgJiYgYy5yb3dzLmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAvLyBHbyB0byBmaXJzdCBwYWdlIG9ubHkgaWYgbGVuZ3RoIG9mIGRhdGEgaGFzIGNoYW5nZWQuIFRvIGF2b2lkIHVzZXIgdG8gYmUgb24gYSBwYWdlIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGluIGNhc2Ugb2YgZmlsdGVyaW5nLlxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoQ2hhbmdlZCA9IHRoaXMucm93c1NyYy5sZW5ndGggIT09IGMucm93cy5jdXJyZW50VmFsdWUubGVuZ3RoO1xuXG4gICAgICAgICAgICB0aGlzLnJvd3NTcmMgPSBbLi4uYy5yb3dzLmN1cnJlbnRWYWx1ZV07XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgbGVuZ3RoQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmdvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXN5bmNUYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhjLnJvd3MuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5hZGRSb3dzKGMucm93cy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgJiYgYy5wcmVzZWxlY3RlZFJvd3MgJiYgYy5wcmVzZWxlY3RlZFJvd3MuZmlyc3RDaGFuZ2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnBhZ2luYXRvcj8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5zZXRMZW5ndGgodGhpcy5yb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoIWMucGFnaW5hdG9yPy5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5nb0ZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcy5yb3dzIGNhbiBiZSBjaGFuZ2VkIGFueXRpbWUsIHRoZW4gdGhpcyBlbHNlIGNhbiBiZSBleGVjdXRlZCBhdCB0aGF0IHRpbWUsIHRlc3RpbmcgdGhpcy5wYWdpbmF0b3IgYWxsb3dzIHRvIG1ha2Ugc3VyZVxuICAgICAgICAgICAgLy8gdGhlIHVzZXIgd2hhbnRzIHRvIGRpc2FibGUgcGFnaW5hdGlvbiBvciBjaGFuZ2UgdGhlIGRhdGFzb3VyY2VcbiAgICAgICAgICAgIGlmICghdGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NSZW5kZXJlZCA9IHRoaXMucm93c1NyYyA/IHRoaXMucm93c1NyYyA6IFsuLi50aGlzLnJvd3NdO1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dzU3JjID0gWy4uLnRoaXMucm93c107XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZTJlQXR0cikge1xuICAgICAgICAgICAgdGhpcy5lMmVBdHRyID0gJ2V1aS10YWJsZSc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnaGVhZGVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvZHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdmb290ZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdlbXB0eU1lc3NhZ2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbXB0eU1lc3NhZ2VUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFzeW5jVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zb3J0aW5nUGFyYW1zJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc29ydGluZ1BhcmFtczogeyBzb3J0OiBzdHJpbmcgfCBudWxsOyBvcmRlcjogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoeyBzb3J0OiBzb3J0aW5nUGFyYW1zLnNvcnQsIG9yZGVyOiBzb3J0aW5nUGFyYW1zLm9yZGVyIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXIoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHRoaXMucHJlc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RBbGxSb3dzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0QWxsUm93cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1bnNlbGVjdEFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdEFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0Um93cyhyb3dzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyhyb3dzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyUm93cyhmaWx0ZXI6IHN0cmluZywgcjogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBmaWx0ZXJcbiAgICAgICAgICAgID8gci5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB0aGlzLmdldFByb3BzKHJvdywgZmlsdGVyKS5maWx0ZXIoKHApID0+IHAubWF0Y2ggPT09IHRydWUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoaW5nPy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiByO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3Mocm93cyk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJlZFJvd3MgPSByb3dzO1xuXG4gICAgICAgIHJldHVybiByb3dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTb3J0KHNvcnQ6IHN0cmluZyB8IG51bGwsIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNvcnRTZXJ2aWNlLnNldFNvcnQoc29ydCwgb3JkZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXggPT09IDAgPyAyNTAgOiAwO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJJdGVtcyA9IEFycmF5LmZyb20odGhpcy50Ym9keVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8uY2xpZW50V2lkdGggfHwgMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlYWRSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0aGlzLnRoZWFkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBsZWZ0ICYgcmlnaHQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICB0aEl0ZW1zLmZvckVhY2goKHRoOiBIVE1MVGFibGVDZWxsRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHMgJiBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0aEl0ZW1zLmZpbHRlcigodGgpID0+IHRoLm9mZnNldExlZnQgKyB0aC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRoSXRlbXMuZmlsdGVyKCh0aCkgPT4gdGgub2Zmc2V0TGVmdCArIHRoLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGhJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRoLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoLnN0eWxlLmxlZnQgPSAoaSA9PT0gMCA/IDAgOiB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdLmNsaWVudFdpZHRoKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0aCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHRoSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXS5jbGllbnRXaWR0aCkgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGhJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0ckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG4gICAgICAgICAgICAgICAgdGRJdGVtcy5mb3JFYWNoKCh0ZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRySXRlbXMuZm9yRWFjaCgodHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0ci5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlX19jb2wtLXN0aWNreScpKTtcblxuICAgICAgICAgICAgICAgIC8vIFN0aWNreSBGaXJzdCBDb2xzXG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtc1N0aWNreUZpcnN0Q29sID0gdGRJdGVtcy5maWx0ZXIoKHRkKSA9PiB0ZC5vZmZzZXRMZWZ0ICsgdGQuY2xpZW50V2lkdGggPCBjb250YWluZXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLmxlZnQgPSAoaSA9PT0gMCA/IDAgOiB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdLmNsaWVudFdpZHRoKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIFN0aWNreSBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIHRkSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0ZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHRkSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXS5jbGllbnRXaWR0aCkgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGRJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGVGZWF0dXJlc0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zb3J0aW5nUGFyYW1zJCxcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yID8gdGhpcy5wYWdpbmF0b3IucGFnZSQgOiBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpLFxuICAgICAgICAgICAgdGhpcy5maWx0ZXIgPyB0aGlzLmZpbHRlci5maWx0ZXIkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtzb3J0aW5nUGFyYW1zLCBwYWdpbmF0aW9uLCBmaWx0ZXJdKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHIgPSBbLi4udGhpcy5yb3dzU3JjXTtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5vcmRlclJvd3Moc29ydGluZ1BhcmFtcy5zb3J0LCBzb3J0aW5nUGFyYW1zLm9yZGVyLCByKTtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5maWx0ZXJSb3dzKGZpbHRlciwgcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aChyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhZ2luYXRlUm93cyhwYWdpbmF0aW9uLCByKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NSZW5kZXJlZCA9IHI7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXJTdWJzY3JpcHRpb24gPSB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0ZWRSb3dzJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWQ6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZW1pdChzZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb3BzKG9iajogYW55W10sIGZpbHRlcjogc3RyaW5nKTogeyBrZXk6IHN0cmluZzsgbWF0Y2g6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfVtdIHtcbiAgICAgICAgY29uc3QgaXNPYmplY3QgPSAodmFsOiBhbnkpOiBib29sZWFuID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcbiAgICAgICAgY29uc3QgYWRkRGVsaW1pdGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogc3RyaW5nID0+IChhICYmIGEgIT09ICcwJyA/IGAke2F9LiR7Yn1gIDogYik7XG4gICAgICAgIGNvbnN0IHByb3BzID0gW107XG4gICAgICAgIGNvbnN0IHBhdGhzID0gKHBhdGhPYmogPSB7fSwgaGVhZCA9ICcnKTogYW55W10gPT5cbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHBhdGhPYmopLnJlZHVjZSgocHJvZHVjdCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBhZGREZWxpbWl0ZXIoaGVhZCwga2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9ICh2OiBhbnkpOiBib29sZWFuID0+XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2ICE9PSAnb2JqZWN0JyAmJiB2Py50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXI/LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnMCcgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5wdXNoKHsga2V5OiBhZGREZWxpbWl0ZXIoaGVhZCwga2V5KSwgbWF0Y2g6IG1hdGNoKHZhbHVlKSwgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKSA/IHByb2R1Y3QuY29uY2F0KHBhdGhzKHZhbHVlLCBmdWxsUGF0aCkpIDogcHJvZHVjdC5jb25jYXQoZnVsbFBhdGgpO1xuICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIHBhdGhzKG9iaik7XG5cbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnaW5hdGVSb3dzKHBhZ2luYXRpb246IFBhZ2luYXRpb25FdmVudCwgcjogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2luYXRpb24ucGFnZTtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2luYXRpb24ucGFnZVNpemU7XG5cbiAgICAgICAgcmV0dXJuIHIuc2xpY2UodGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSArIHRoaXMucGFnZVNpemUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3JkZXJSb3dzKHByb3A6IHN0cmluZywgb3JkZXI6IHN0cmluZywgcjogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIGxldCByb3dzOiBhbnlbXSA9IG51bGw7XG4gICAgICAgIGlmICghb3JkZXIpIHtcbiAgICAgICAgICAgIHJvd3MgPSByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9yZGVyID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgICAgICByb3dzID0gci5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhU29ydE9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLmdldE9ialByb3AoYSwgcHJvcCkgPT09ICdzdHJpbmcnID8gdGhpcy5nZXRPYmpQcm9wKGEsIHByb3ApLnRvTG93ZXJDYXNlKCkgOiB0aGlzLmdldE9ialByb3AoYSwgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJTb3J0T24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuZ2V0T2JqUHJvcChiLCBwcm9wKSA9PT0gJ3N0cmluZycgPyB0aGlzLmdldE9ialByb3AoYiwgcHJvcCkudG9Mb3dlckNhc2UoKSA6IHRoaXMuZ2V0T2JqUHJvcChiLCBwcm9wKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFTb3J0T24gJiYgYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFTb3J0T24gJiYgIWJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFTb3J0T24gJiYgIWJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhU29ydE9uIDwgYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFTb3J0T24gPiBiU29ydE9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvd3MgPSByLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFTb3J0T24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuZ2V0T2JqUHJvcChhLCBwcm9wKSA9PT0gJ3N0cmluZycgPyB0aGlzLmdldE9ialByb3AoYSwgcHJvcCkudG9Mb3dlckNhc2UoKSA6IHRoaXMuZ2V0T2JqUHJvcChhLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYlNvcnRPbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGIsIHByb3ApID09PSAnc3RyaW5nJyA/IHRoaXMuZ2V0T2JqUHJvcChiLCBwcm9wKS50b0xvd2VyQ2FzZSgpIDogdGhpcy5nZXRPYmpQcm9wKGIsIHByb3ApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYVNvcnRPbiAmJiBiU29ydE9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFTb3J0T24gJiYgIWJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghYVNvcnRPbiAmJiAhYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFTb3J0T24gPiBiU29ydE9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYVNvcnRPbiA8IGJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb3dzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2JqUHJvcChvYmo6IGFueSwgcHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb3AgPyBwcm9wLnNwbGl0KCcuJykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAocHJldiA/IHByZXZbY3Vycl0gOiBudWxsKSwgb2JqIHx8IHNlbGYpIDogbnVsbDtcbiAgICB9XG59XG4iLCI8dGhlYWQgI3RoZWFkUmVmICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuPC90aGVhZD5cbjx0Ym9keSAjdGJvZHlSZWYgKm5nSWY9XCJib2R5VGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1JlbmRlcmVkOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJib2R5VGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpICsgcGFnZSAqIHBhZ2VTaXplIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbXB0eU1lc3NhZ2VUZW1wbGF0ZSAmJiByb3dzUmVuZGVyZWQubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eU1lc3NhZ2VUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3Rib2R5PlxuPHRmb290ICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuPC90Zm9vdD5cbiJdfQ==
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS9ldWktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFXM0YsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFZaEQsSUFBNkMsVUFBVTtRQUNuRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQXFCRCxzQ0FBc0M7SUFDdEMsSUFBYSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLE9BQU8sQ0FBQyxLQUFtQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxD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RixVQUFVO3NCQURiLEtBQUs7Z0JBS0YsU0FBUztzQkFEWixLQUFLO2dCQUtGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFLRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBS0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQUtGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBS0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQUtGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBS0YsZUFBZTtzQkFEbEIsS0FBSztnQkFLRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBYUYsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgRXVpVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBFdWlQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLXBhZ2luYXRvcic7XG5cbmltcG9ydCB7IEV1aVRhYmxlU29ydFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V1aS10YWJsZS1zb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvcGFnaW5hdGlvbi1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBFdWlUYWJsZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyL2V1aS10YWJsZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V1aS10YWJsZS1zZWxlY3RhYmxlLXJvdy5zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4vbW9kZWxzL3NvcnQtZXZlbnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJsZSwgdGFibGVbZXVpVGFibGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0V1aVRhYmxlU29ydFNlcnZpY2UsIEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUYWJsZUNvbXBvbmVudCBleHRlbmRzIEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSByb3dzOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHByb3BJZCA9ICdpZCc7XG4gICAgQElucHV0KCkgcGFnaW5hdG9yOiBFdWlQYWdpbmF0b3JDb21wb25lbnQ7XG4gICAgQElucHV0KCkgZmlsdGVyOiBFdWlUYWJsZUZpbHRlckNvbXBvbmVudDtcbiAgICBASW5wdXQoKSBwcmVzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XG4gICAgLyoqIEBkZXByZWNhdGVkIFNpbmNlIGV1aS10YWJsZSB1c2VzIG5hdGl2ZSBDU1MgcG9zaXRpb24gc3RpY2t5LCBwYXNzaW5nIHRoZSByZWZlcmVuY2Ugb2YgY29udGFpbmVyIGlzIG5vIGxvbmdlciBuZWVkZWQuXG4gICAgICogSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUgdmVyc2lvbiBvZiBlVUlcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpIHNjcm9sbGFibGVDb250YWluZXJSZWY6IEVsZW1lbnQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgc3RyaW5nID0gJ2V1aS10YWJsZSc7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ldWktdGFibGVfX2xvYWRpbmcnKSBnZXQgaGFzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEV2ZW50PigpO1xuXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBlbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwdWJsaWMgcm93c1JlbmRlcmVkOiBhbnlbXSA9IFtdO1xuXG4gICAgcHVibGljIHBhZ2UgPSAwO1xuICAgIHB1YmxpYyBwYWdlU2l6ZSA9IDA7XG4gICAgcHVibGljIHNob3dTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgZmlsdGVyZWRSb3dzID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEV1aVRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxFdWlUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicpIHRoZWFkUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Ym9keVJlZicpIHRib2R5UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIHByZXR0aWVyL3ByZXR0aWVyICovXG4gICAgQElucHV0KCkgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9sb2FkaW5nOyB9XG4gICAgc2V0IGxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9sb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBhc3luY1RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fYXN5bmNUYWJsZTsgfVxuICAgIHNldCBhc3luY1RhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fYXN5bmNUYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9hc3luY1RhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcGFnaW5hYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcGFnaW5hYmxlOyB9XG4gICAgc2V0IHBhZ2luYWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX3BhZ2luYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9wYWdpbmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZVJlc3BvbnNpdmUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9ldWlUYWJsZVJlc3BvbnNpdmU7IH1cbiAgICBzZXQgZXVpVGFibGVSZXNwb25zaXZlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZXVpVGFibGVSZXNwb25zaXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlUmVzcG9uc2l2ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV1aVRhYmxlRml4ZWRMYXlvdXQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9ldWlUYWJsZUZpeGVkTGF5b3V0OyB9XG4gICAgc2V0IGV1aVRhYmxlRml4ZWRMYXlvdXQodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9ldWlUYWJsZUZpeGVkTGF5b3V0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlRml4ZWRMYXlvdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZURyYWdnYWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V1aVRhYmxlRHJhZ2dhYmxlOyB9XG4gICAgc2V0IGV1aVRhYmxlRHJhZ2dhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZXVpVGFibGVEcmFnZ2FibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVEcmFnZ2FibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZUNhcmRzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZXVpVGFibGVDYXJkczsgfVxuICAgIHNldCBldWlUYWJsZUNhcmRzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZXVpVGFibGVDYXJkcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9ldWlUYWJsZUNhcmRzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVCb3JkZXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQm9yZGVyZWQ7IH1cbiAgICBzZXQgZXVpVGFibGVCb3JkZXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2V1aVRhYmxlQm9yZGVyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVCb3JkZXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV1aVRhYmxlQ29tcGFjdCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQ29tcGFjdDsgfVxuICAgIHNldCBldWlUYWJsZUNvbXBhY3QodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9ldWlUYWJsZUNvbXBhY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVDb21wYWN0ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzU3RpY2t5SGVhZGVyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGFzU3RpY2t5SGVhZGVyOyB9XG4gICAgc2V0IGhhc1N0aWNreUhlYWRlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2hhc1N0aWNreUhlYWRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9oYXNTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNTdGlja3lDb2x1bW5zKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGFzU3RpY2t5Q29sdW1uczsgfVxuICAgIHNldCBoYXNTdGlja3lDb2x1bW5zKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5faGFzU3RpY2t5Q29sdW1ucyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9oYXNTdGlja3lDb2x1bW5zID0gZmFsc2U7XG4gICAgLyogZXNsaW50LWVuYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuXG4gICAgcHJpdmF0ZSByb3dzU3JjOiBhbnkgPSBudWxsO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgdGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBzZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBzdGlja3lGZWF0dXJlSGFuZGxlckluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlUmVzcG9uc2l2ZSA/IGBldWktdGFibGUtLXJlc3BvbnNpdmVgIDogYGAsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlRml4ZWRMYXlvdXQgPyBgZXVpLXRhYmxlLS1maXhlZC1sYXlvdXRgIDogYGAsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQm9yZGVyZWQgPyBgZXVpLXRhYmxlLS1ib3JkZXJlZGAgOiBgYCxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVDb21wYWN0ID8gYGV1aS10YWJsZS0tY29tcGFjdGAgOiBgYCxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVEcmFnZ2FibGUgPyBgZXVpLXRhYmxlLS1kcmFnZ2FibGVgIDogYGAsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQ2FyZHMgPyBgZXVpLXRhYmxlLWNhcmRzYCA6IGBgLFxuICAgICAgICAgICAgdGhpcy5oYXNTdGlja3lIZWFkZXIgPyBgZXVpLXRhYmxlLS1zdGlja3ktaGVhZGVyYCA6IGBgLFxuICAgICAgICAgICAgdGhpcy5oYXNTdGlja3lDb2x1bW5zID8gYGV1aS10YWJsZS0tc3RpY2t5LWNvbHVtbnNgIDogYGAsXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktdGFibGUnKSxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBldWlUYWJsZVNvcnRTZXJ2aWNlOiBFdWlUYWJsZVNvcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlOiBFdWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZXRQcm9wSWQodGhpcy5wcm9wSWQpO1xuICAgICAgICBpZiAoYyAmJiBjLnJvd3MgJiYgYy5yb3dzLmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAvLyBHbyB0byBmaXJzdCBwYWdlIG9ubHkgaWYgbGVuZ3RoIG9mIGRhdGEgaGFzIGNoYW5nZWQuIFRvIGF2b2lkIHVzZXIgdG8gYmUgb24gYSBwYWdlIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGluIGNhc2Ugb2YgZmlsdGVyaW5nLlxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoQ2hhbmdlZCA9IHRoaXMucm93c1NyYy5sZW5ndGggIT09IGMucm93cy5jdXJyZW50VmFsdWUubGVuZ3RoO1xuXG4gICAgICAgICAgICB0aGlzLnJvd3NTcmMgPSBbLi4uYy5yb3dzLmN1cnJlbnRWYWx1ZV07XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgbGVuZ3RoQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmdvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXN5bmNUYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhjLnJvd3MuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5hZGRSb3dzKGMucm93cy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgJiYgYy5wcmVzZWxlY3RlZFJvd3MgJiYgYy5wcmVzZWxlY3RlZFJvd3MuZmlyc3RDaGFuZ2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnBhZ2luYXRvcj8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5zZXRMZW5ndGgodGhpcy5yb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoIWMucGFnaW5hdG9yPy5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5nb0ZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcy5yb3dzIGNhbiBiZSBjaGFuZ2VkIGFueXRpbWUsIHRoZW4gdGhpcyBlbHNlIGNhbiBiZSBleGVjdXRlZCBhdCB0aGF0IHRpbWUsIHRlc3RpbmcgdGhpcy5wYWdpbmF0b3IgYWxsb3dzIHRvIG1ha2Ugc3VyZVxuICAgICAgICAgICAgLy8gdGhlIHVzZXIgd2hhbnRzIHRvIGRpc2FibGUgcGFnaW5hdGlvbiBvciBjaGFuZ2UgdGhlIGRhdGFzb3VyY2VcbiAgICAgICAgICAgIGlmICghdGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NSZW5kZXJlZCA9IHRoaXMucm93c1NyYyA/IHRoaXMucm93c1NyYyA6IFsuLi50aGlzLnJvd3NdO1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dzU3JjID0gWy4uLnRoaXMucm93c107XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZTJlQXR0cikge1xuICAgICAgICAgICAgdGhpcy5lMmVBdHRyID0gJ2V1aS10YWJsZSc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnaGVhZGVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvZHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdmb290ZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdlbXB0eU1lc3NhZ2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbXB0eU1lc3NhZ2VUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFzeW5jVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zb3J0aW5nUGFyYW1zJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc29ydGluZ1BhcmFtczogeyBzb3J0OiBzdHJpbmcgfCBudWxsOyBvcmRlcjogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoeyBzb3J0OiBzb3J0aW5nUGFyYW1zLnNvcnQsIG9yZGVyOiBzb3J0aW5nUGFyYW1zLm9yZGVyIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXIoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHRoaXMucHJlc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RBbGxSb3dzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0QWxsUm93cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1bnNlbGVjdEFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdEFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0Um93cyhyb3dzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyhyb3dzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyUm93cyhmaWx0ZXI6IHN0cmluZywgcjogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBmaWx0ZXJcbiAgICAgICAgICAgID8gci5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB0aGlzLmdldFByb3BzKHJvdywgZmlsdGVyKS5maWx0ZXIoKHApID0+IHAubWF0Y2ggPT09IHRydWUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoaW5nPy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiByO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3Mocm93cyk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJlZFJvd3MgPSByb3dzO1xuXG4gICAgICAgIHJldHVybiByb3dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTb3J0KHNvcnQ6IHN0cmluZyB8IG51bGwsIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNvcnRTZXJ2aWNlLnNldFNvcnQoc29ydCwgb3JkZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXggPT09IDAgPyAyNTAgOiAwO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJJdGVtcyA9IEFycmF5LmZyb20odGhpcy50Ym9keVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8uY2xpZW50V2lkdGggfHwgMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlYWRSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0aGlzLnRoZWFkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBsZWZ0ICYgcmlnaHQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICB0aEl0ZW1zLmZvckVhY2goKHRoOiBIVE1MVGFibGVDZWxsRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHMgJiBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0aEl0ZW1zLmZpbHRlcigodGgpID0+IHRoLm9mZnNldExlZnQgKyB0aC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRoSXRlbXMuZmlsdGVyKCh0aCkgPT4gdGgub2Zmc2V0TGVmdCArIHRoLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGhJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRoLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoLnN0eWxlLmxlZnQgPSAoaSA9PT0gMCA/IDAgOiB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdLmNsaWVudFdpZHRoKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0aCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHRoSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXS5jbGllbnRXaWR0aCkgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGhJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0ckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG4gICAgICAgICAgICAgICAgdGRJdGVtcy5mb3JFYWNoKCh0ZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRySXRlbXMuZm9yRWFjaCgodHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0ci5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlX19jb2wtLXN0aWNreScpKTtcblxuICAgICAgICAgICAgICAgIC8vIFN0aWNreSBGaXJzdCBDb2xzXG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtc1N0aWNreUZpcnN0Q29sID0gdGRJdGVtcy5maWx0ZXIoKHRkKSA9PiB0ZC5vZmZzZXRMZWZ0ICsgdGQuY2xpZW50V2lkdGggPCBjb250YWluZXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLmxlZnQgPSAoaSA9PT0gMCA/IDAgOiB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdLmNsaWVudFdpZHRoKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIFN0aWNreSBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIHRkSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0ZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHRkSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXS5jbGllbnRXaWR0aCkgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGRJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGVGZWF0dXJlc0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zb3J0aW5nUGFyYW1zJCxcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yID8gdGhpcy5wYWdpbmF0b3IucGFnZSQgOiBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpLFxuICAgICAgICAgICAgdGhpcy5maWx0ZXIgPyB0aGlzLmZpbHRlci5maWx0ZXIkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtzb3J0aW5nUGFyYW1zLCBwYWdpbmF0aW9uLCBmaWx0ZXJdKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHIgPSBbLi4udGhpcy5yb3dzU3JjXTtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5vcmRlclJvd3Moc29ydGluZ1BhcmFtcy5zb3J0LCBzb3J0aW5nUGFyYW1zLm9yZGVyLCByKTtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5maWx0ZXJSb3dzKGZpbHRlciwgcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aChyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhZ2luYXRlUm93cyhwYWdpbmF0aW9uLCByKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NSZW5kZXJlZCA9IHI7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXJTdWJzY3JpcHRpb24gPSB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0ZWRSb3dzJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWQ6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZW1pdChzZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb3BzKG9iajogYW55W10sIGZpbHRlcjogc3RyaW5nKTogeyBrZXk6IHN0cmluZzsgbWF0Y2g6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfVtdIHtcbiAgICAgICAgY29uc3QgaXNPYmplY3QgPSAodmFsOiBhbnkpOiBib29sZWFuID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcbiAgICAgICAgY29uc3QgYWRkRGVsaW1pdGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogc3RyaW5nID0+IChhICYmIGEgIT09ICcwJyA/IGAke2F9LiR7Yn1gIDogYik7XG4gICAgICAgIGNvbnN0IHByb3BzID0gW107XG4gICAgICAgIGNvbnN0IHBhdGhzID0gKHBhdGhPYmogPSB7fSwgaGVhZCA9ICcnKTogYW55W10gPT5cbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHBhdGhPYmopLnJlZHVjZSgocHJvZHVjdCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBhZGREZWxpbWl0ZXIoaGVhZCwga2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9ICh2OiBhbnkpOiBib29sZWFuID0+XG4gICAgICAgICAgICAgICAgICAgIHYgJiYgdHlwZW9mIHYgIT09ICdvYmplY3QnICYmIHY/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlcj8udHJpbSgpLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICcwJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnB1c2goeyBrZXk6IGFkZERlbGltaXRlcihoZWFkLCBrZXkpLCBtYXRjaDogbWF0Y2godmFsdWUpLCB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNPYmplY3QodmFsdWUpID8gcHJvZHVjdC5jb25jYXQocGF0aHModmFsdWUsIGZ1bGxQYXRoKSkgOiBwcm9kdWN0LmNvbmNhdChmdWxsUGF0aCk7XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgcGF0aHMob2JqKTtcblxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYWdpbmF0ZVJvd3MocGFnaW5hdGlvbjogUGFnaW5hdGlvbkV2ZW50LCByOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnaW5hdGlvbi5wYWdlO1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gcGFnaW5hdGlvbi5wYWdlU2l6ZTtcblxuICAgICAgICByZXR1cm4gci5zbGljZSh0aGlzLnBhZ2UgKiB0aGlzLnBhZ2VTaXplLCB0aGlzLnBhZ2UgKiB0aGlzLnBhZ2VTaXplICsgdGhpcy5wYWdlU2l6ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmRlclJvd3MocHJvcDogc3RyaW5nLCBvcmRlcjogc3RyaW5nLCByOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgbGV0IHJvd3M6IGFueVtdID0gbnVsbDtcbiAgICAgICAgaWYgKCFvcmRlcikge1xuICAgICAgICAgICAgcm93cyA9IHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3JkZXIgPT09ICdkZXNjJykge1xuICAgICAgICAgICAgICAgIHJvd3MgPSByLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFTb3J0T24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuZ2V0T2JqUHJvcChhLCBwcm9wKSA9PT0gJ3N0cmluZycgPyB0aGlzLmdldE9ialByb3AoYSwgcHJvcCkudG9Mb3dlckNhc2UoKSA6IHRoaXMuZ2V0T2JqUHJvcChhLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYlNvcnRPbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGIsIHByb3ApID09PSAnc3RyaW5nJyA/IHRoaXMuZ2V0T2JqUHJvcChiLCBwcm9wKS50b0xvd2VyQ2FzZSgpIDogdGhpcy5nZXRPYmpQcm9wKGIsIHByb3ApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYVNvcnRPbiAmJiBiU29ydE9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYVNvcnRPbiAmJiAhYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghYVNvcnRPbiAmJiAhYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFTb3J0T24gPCBiU29ydE9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYVNvcnRPbiA+IGJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcm93cyA9IHIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYVNvcnRPbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGEsIHByb3ApID09PSAnc3RyaW5nJyA/IHRoaXMuZ2V0T2JqUHJvcChhLCBwcm9wKS50b0xvd2VyQ2FzZSgpIDogdGhpcy5nZXRPYmpQcm9wKGEsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiU29ydE9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLmdldE9ialByb3AoYiwgcHJvcCkgPT09ICdzdHJpbmcnID8gdGhpcy5nZXRPYmpQcm9wKGIsIHByb3ApLnRvTG93ZXJDYXNlKCkgOiB0aGlzLmdldE9ialByb3AoYiwgcHJvcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhU29ydE9uICYmIGJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYVNvcnRPbiAmJiAhYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhU29ydE9uICYmICFiU29ydE9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYVNvcnRPbiA+IGJTb3J0T24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhU29ydE9uIDwgYlNvcnRPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPYmpQcm9wKG9iajogYW55LCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvcCA/IHByb3Auc3BsaXQoJy4nKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChwcmV2ID8gcHJldltjdXJyXSA6IG51bGwpLCBvYmogfHwgc2VsZikgOiBudWxsO1xuICAgIH1cbn1cbiIsIjx0aGVhZCAjdGhlYWRSZWYgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG48L3RoZWFkPlxuPHRib2R5ICN0Ym9keVJlZiAqbmdJZj1cImJvZHlUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzUmVuZGVyZWQ7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGkgKyBwYWdlICogcGFnZVNpemUgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5TWVzc2FnZVRlbXBsYXRlICYmIHJvd3NSZW5kZXJlZC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5TWVzc2FnZVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvdGJvZHk+XG48dGZvb3QgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG48L3Rmb290PlxuIl19