@po-ui/ng-components 16.1.0 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-field/po-checkbox/po-checkbox.component.mjs +11 -11
- package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +6 -6
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +3 -3
- package/fesm2022/po-ui-ng-components.mjs +18 -18
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.d.ts +4 -3
- package/package.json +4 -4
- package/po-ui-ng-components-16.2.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-16.1.0.tgz +0 -0
|
@@ -1061,10 +1061,10 @@ export class PoTableBaseComponent {
|
|
|
1061
1061
|
this.subtitleColumns = this.getSubtitleColumns();
|
|
1062
1062
|
}
|
|
1063
1063
|
sortArray(column, ascending) {
|
|
1064
|
-
const itemsList = this.height ? [...this.
|
|
1064
|
+
const itemsList = this.height ? [...this.filteredItems] : this.filteredItems;
|
|
1065
1065
|
itemsList.sort((leftSide, rightSide) => sortValues(leftSide[column.property], rightSide[column.property], ascending));
|
|
1066
1066
|
if (this.height) {
|
|
1067
|
-
this.
|
|
1067
|
+
this.filteredItems = itemsList;
|
|
1068
1068
|
}
|
|
1069
1069
|
}
|
|
1070
1070
|
unselectOtherRows(rows, row) {
|
|
@@ -1256,4 +1256,4 @@ export class PoTableBaseComponent {
|
|
|
1256
1256
|
type: Input,
|
|
1257
1257
|
args: ['p-draggable']
|
|
1258
1258
|
}] }); })();
|
|
1259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSTVHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFXckUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsUUFBUSxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxFQUFFLEVBQW1CO1FBQ25CLFNBQVMsRUFBRSx5QkFBeUI7UUFDcEMsTUFBTSxFQUFFLGVBQWU7UUFDdkIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLGFBQWEsRUFBRSxnQkFBZ0I7UUFDL0IsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyxXQUFXLEVBQUUsU0FBUztRQUN0QixZQUFZLEVBQUUsZ0JBQWdCO1FBQzlC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QkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBcUJlLGVBQWU7a0JBQS9DLEtBQUs7bUJBQUMsb0JBQW9CO1lBZ0VELFNBQVM7a0JBQWxDLEtBQUs7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvRGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1kYXRlL3BvLWRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyLCBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgc29ydFZhbHVlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFBvRmlsdGVyTW9kZSB9IGZyb20gJy4uL3BvLXNlYXJjaC9wby1zZWFyY2gtZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydFR5cGUgfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLWNvbHVtbi1zb3J0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU3BhY2luZyB9IGZyb20gJy4vZW51bXMvcG8tdGFibGUtc3BhY2luZy5lbnVtJztcbmltcG9ydCB7IFBvVGFibGVBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1jb2x1bW4tc29ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWZpbHRlcmVkLWl0ZW1zLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUxpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlUmVzcG9uc2VBcGkgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtcmVzcG9uc2UtYXBpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tdGFibGUuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UGFyYW1zVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG5cbmV4cG9ydCBjb25zdCBwb1RhYmxlQ29udGFpbmVyID0gWydib3JkZXInLCAnc2hhZG93J107XG5leHBvcnQgY29uc3QgcG9UYWJsZUNvbnRhaW5lckRlZmF1bHQgPSAnYm9yZGVyJztcbmV4cG9ydCBjb25zdCBwb1RhYmxlUGFyYW1EZWxldGVBcGkgPSAnaWQnO1xuXG5leHBvcnQgY29uc3QgcG9UYWJsZUxpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1RhYmxlTGl0ZXJhbHM+e1xuICAgIG5vQ29sdW1uczogJ0NvbHVtbnMgYXJlIG5vdCBkZWZpbmVkJyxcbiAgICBub0RhdGE6ICdObyBkYXRhIGZvdW5kJyxcbiAgICBub0l0ZW06ICdObyBzZWxlY3RlZCBpdGVtJyxcbiAgICBvbmVJdGVtOiAnMSBzZWxlY3RlZCBpdGVtJyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAnc2VsZWN0ZWQgaXRlbXMnLFxuICAgIG5vVmlzaWJsZUNvbHVtbjogJ05vIHZpc2libGUgY29sdW1uJyxcbiAgICBsb2FkaW5nRGF0YTogJ0xvYWRpbmcnLFxuICAgIGxvYWRNb3JlRGF0YTogJ0xvYWQgbW9yZSBkYXRhJyxcbiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAnU2VlIGNvbXBsZXRlIHN1YnRpdGxlJyxcbiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnQ29tcGxldGUgc3VidGl0bGUnLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAnQ29sdW1ucyBtYW5hZ2VyJyxcbiAgICBib2R5RGVsZXRlOiAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGl0ZW0/JyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ0l0ZW1zIHJlbW92ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQsIHBsZWFzZSB0cnkgYWdhaW4gbGF0ZXInXG4gIH0sXG4gIGVzOiA8UG9UYWJsZUxpdGVyYWxzPntcbiAgICBub0NvbHVtbnM6ICdDb2x1bW5hcyBubyBkZWZpbmlkYXMnLFxuICAgIG5vRGF0YTogJ0RhdG9zIG5vIGVuY29udHJhZG9zJyxcbiAgICBub0l0ZW06ICdOaW5nw7puIGVsZW1lbnRvIHNlbGVjY2lvbmFkbycsXG4gICAgb25lSXRlbTogJzEgZWxlbWVudG8gc2VsZWNjaW9uYWRvJyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAnZWxlbWVudG9zIHNlbGVjY2lvbmFkb3MnLFxuICAgIG5vVmlzaWJsZUNvbHVtbjogJ1NpbiBjb2x1bW5hcyB2aXNpYmxlcycsXG4gICAgbG9hZGluZ0RhdGE6ICdDYXJnYW5kbyBkYXRvcycsXG4gICAgbG9hZE1vcmVEYXRhOiAnQ2FyZ2FyIG3DoXMgcmVzdWx0YWRvcycsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ1ZlciBzdWJ0aXR1bG8gY29tcGxldG8nLFxuICAgIGNvbXBsZXRlU3VidGl0bGU6ICdTdWJ0aXR1bG8gY29tcGxldG8nLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAnR2VyZW50ZSBkZSBjb2x1bW5hJyxcbiAgICBib2R5RGVsZXRlOiAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50bz8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBkZWxldGU6ICdCb3JyYXInLFxuICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICdFbGVtZW50b3MgZWxpbWluYWRvcyBjb24gw6l4aXRvJyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ09jdXJyacOzIHVuIGVycm9yIGluZXNwZXJhZG8sIGludMOpbnRhbG8gZGUgbnVldm8gbcOhcyB0YXJkZSdcbiAgfSxcbiAgcHQ6IDxQb1RhYmxlTGl0ZXJhbHM+e1xuICAgIG5vQ29sdW1uczogJ05lbmh1bWEgZGVmaW5pw6fDo28gZGUgY29sdW5hcycsXG4gICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAgbm9WaXNpYmxlQ29sdW1uOiAnTmVuaHVtYSBjb2x1bmEgdmlzw612ZWwnLFxuICAgIG5vSXRlbTogJ05lbmh1bSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICBvbmVJdGVtOiAnMSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAnaXRlbnMgc2VsZWNpb25hZG9zJyxcbiAgICBsb2FkaW5nRGF0YTogJ0NhcnJlZ2FuZG8nLFxuICAgIGxvYWRNb3JlRGF0YTogJ0NhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcycsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ1ZlciBsZWdlbmRhIGNvbXBsZXRhJyxcbiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnTGVnZW5kYSBjb21wbGV0YScsXG4gICAgY29sdW1uc01hbmFnZXI6ICdHZXJlbmNpYWRvciBkZSBjb2x1bmFzJyxcbiAgICBib2R5RGVsZXRlOiAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzc2UgaXRlbT8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBkZWxldGU6ICdFeGNsdWlyJyxcbiAgICBkZWxldGVTdWNjZXNzZnVsOiAnSXRlbnMgcmVtb3ZpZG9zIGNvbSBzdWNlc3NvJyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ09jb3JyZXUgdW0gZXJybyBpbmVzcGVyYWRvLCB0ZW50ZSBub3ZhbWVudGUgbWFpcyB0YXJkZSEnXG4gIH0sXG4gIHJ1OiA8UG9UYWJsZUxpdGVyYWxzPntcbiAgICBub0NvbHVtbnM6ICfQndC10YIg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRgdGC0L7Qu9Cx0YbQsCcsXG4gICAgbm9EYXRhOiAn0JTQsNC90L3Ri9C1INC90LUg0L3QsNC50LTQtdC90YsnLFxuICAgIG5vSXRlbTogJ9Cd0LXRgiDQstGL0LHRgNCw0L3QvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJyxcbiAgICBvbmVJdGVtOiAnMSDRjdC70LXQvNC10L3RgiDQstGL0LHRgNCw0L0nLFxuICAgIG11bHRpcGxlSXRlbXM6ICfQstGL0LHRgNCw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiycsXG4gICAgbm9WaXNpYmxlQ29sdW1uOiAn0L3QtdGCINCy0LjQtNC40LzRi9GFINGB0YLQvtC70LHRhtC+0LInLFxuICAgIGxvYWRpbmdEYXRhOiAn0JfQsNCz0YDRg9C30LrQsCcsXG4gICAgbG9hZE1vcmVEYXRhOiAn0JfQsNCz0YDRg9C30LrQsCcsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ9Cf0L7RgdC80L7RgtGA0LXRgtGMINC/0L7Qu9C90YvQuSDRgdGD0LHRgtC40YLRgCcsXG4gICAgY29tcGxldGVTdWJ0aXRsZTogJ9Cf0L7Qu9C90YvQuSDQt9Cw0LPQvtC70L7QstC+0LonLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAn0LzQtdC90LXQtNC20LXRgCDQutC+0LvQvtC90L7QuicsXG4gICAgYm9keURlbGV0ZTogJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGN0LvQtdC80LXQvdGCPycsXG4gICAgY2FuY2VsOiAn0J7RgtC80LXQvdCwJyxcbiAgICBkZWxldGU6ICfQo9C00LDQu9C40YLRjCcsXG4gICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ9Ct0LvQtdC80LXQvdGC0Ysg0YPRgdC/0LXRiNC90L4g0YPQtNCw0LvQtdC90YsnLFxuICAgIGRlbGV0ZUFwaUVycm9yOiAn0J/RgNC+0LjQt9C+0YjQu9CwINC90LXQv9GA0LXQtNCy0LjQtNC10L3QvdCw0Y8g0L7RiNC40LHQutCwLCDQv9C+0LLRgtC+0YDQuNGC0LUg0L/QvtC/0YvRgtC60YMg0L/QvtC30LbQtSdcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgZGUgdGFiZWxhIMOpIHV0aWxpemFkbyBwYXJhIGV4aWJpw6fDo28gZGUgZGFkb3MgY29tIGRpZmVyZW50ZXMgdGlwb3MgY29tbyBwb3IgZXhlbXBsbyB0ZXh0b3MsIGRhdGEsIGhvcmFzIGUgbsO6bWVyb3MgY29tXG4gKiBmb3JtYXRvIHBlcnNvbmFsaXphZG8uXG4gKlxuICogVGFtYsOpbSDDqSBwb3NzaXZlbCBjcmlhciB0YWJlbGFzIGNvbSBvcmRlbmHDp8OjbyBkZSBkYWRvcywgbGluaGFzIGNvbSBkZXRhbGhlcywgY29sdW5hIHBhcmEgc2VsZcOnw6NvIGRlIGxpbmhhcywgY29sdW5hIGNvbSBhw6fDtWVzIGUgdGFtYsOpbVxuICogY2FycmVnYW1lbnRvIHBvciBkZW1hbmRhIGF0cmF2w6lzIGRvIGJvdMOjbyAqKkNhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcyoqLlxuICpcbiAqID4gQXMgbGluaGFzIGRlIGRldGFsaGVzIHBvZGVtIHRhbWLDqW0gc2VyIGN1c3RvbWl6YWRhcyBhdHJhdsOpcyBkbyBbYHAtdGFibGUtcm93LXRlbXBsYXRlYF0oL2RvY3VtZW50YXRpb24vcG8tdGFibGUtcm93LXRlbXBsYXRlKS5cbiAqXG4gKiA+IEFzIGNvbHVuYXMgcG9kZW0gc2VyIGN1c3RvbWl6YWRhcyBhdHJhdsOpcyBkb3MgdGVtcGxhdGVzIFtgcC10YWJsZS1jb2x1bW4tdGVtcGxhdGVgXSgvZG9jdW1lbnRhdGlvbi9wby10YWJsZS1jb2x1bW4tdGVtcGxhdGUpXG4gKiBlIFtgcC10YWJsZS1jZWxsLXRlbXBsYXRlYF0oL2RvY3VtZW50YXRpb24vcG8tdGFibGUtY2VsbC10ZW1wbGF0ZSkuXG4gKlxuICogTyBjb21wb25lbnRlIHBlcm1pdGUgZ2VyZW5jaWFyIGEgZXhpYmnDp8OjbyBkYXMgY29sdW5hcyBkaW5hbWljYW1lbnRlLiBFc3RhIGZ1bmNpb25hbGlkYWRlIHBvZGUgc2VyIGFjZXNzYWRhIGF0cmF2w6lzIGRvIMOtY29uZSBkZSBlbmdyZW5hZ2VtXG4gKiBubyBjYW50byBzdXBlcmlvciBkaXJlaXRvIGRvIGNhYmXDp2FsaG8gZGEgdGFiZWxhLlxuICpcbiAqIENhc28gYSBsYXJndXJhIGRlIHRvZGFzIGFzIGNvbHVuYXMgZm9yZW0gZGVmaW5pZGFzIGUgbyB0b3RhbCB1bHRyYXBhc3NhciBvIHRhbWFuaG8gdGFiZWxhLCBzZXLDoSBleGliaWRvIHVtICpzY3JvbGwqIG5hIGhvcml6b250YWwgcGFyYSBhXG4gKiBjb21wbGV0YSB2aXN1YWxpemHDp8OjbyBkb3MgZGFkb3MuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvVGFibGVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgMTYueC54XG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogKipEZXByZWNhdGVkIDE2LngueCoqLlxuICAgKlxuICAgKiA+IFBvciByZWdyYXMgZGUgYWNlc3NpYmlsaWRhZGUgYSBjw6lsdWxhIGRhIHRhYmVsYSBhcHJlc2VudGFyw6EgcmV0aWPDqm5jaWFzIGF1dG9tw6F0aWNhbWVudGVcbiAgICogcXVhbmRvIG7Do28gaG91dmVyIGVzcGHDp28gcGFyYSBvIHNldSBjb250w6l1ZG8gZSBwb3IgaXNzbyBhIHByb3ByaWVkYWRlIHNlcsOhIGRlcHJlY2lhZGEuXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGhhYmlsaXRhIGEgcXVlYnJhIGRlIHRleHRvIGFvIHRyYW5zYm9yZGEtbG8gZGVudHJvIGRlIHF1YWxxdWVyIGNvbHVuYS5cbiAgICogPiBRdWFuZG8gb2NvcnJlciBhIHF1ZWJyYSBkZSB0ZXh0bywgYW8gcGFzc2FyIG8gbW91c2Ugbm8gY29udGXDumRvIGRhIGPDqWx1bGEsXG4gICAqIG8gbWVzbW8gc2Vyw6EgZXhpYmlkbyBhdHJhdsOpcyBkbyBbYHBvLXRvb2x0aXBgXSgvZG9jdW1lbnRhdGlvbi9wby10b29sdGlwKS5cbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXRleHQtb3ZlcmZsb3cnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZVRleHRPdmVyZmxvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcywgcmVzcG9uc8OhdmVsIHBlbGEgZGVmaW5pw6fDo28gZGUgcXVhaXMgY29sdW5hcyBzZXLDo28gZXhpYmlkYXMsIHNlamEgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1jb2x1bW5zLW1hbmFnZXInLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZUNvbHVtbnNNYW5hZ2VyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIGFzIGHDp8O1ZXMgZW0gbG90ZSwgcmVzcG9uc8OhdmVsIHBvciBleGNsdWlyIGUgZXhpYmlyIGEgcXVhbnRpZGFkZSBkZSBpdGVucywgc2VqYW0gZXNjb25kaWRhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtYmF0Y2gtYWN0aW9ucycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlQmF0Y2hBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgYXMgYcOnw7VlcyBwYXJhIGZpeGFyIHVtYSBjb2x1bmEgZGEgdGFiZWxhIHNlamFtIGVzY29uZGlkYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLWFjdGlvbi1maXhlZC1jb2x1bW5zJykgc2V0IGhpZGVBY3Rpb25GaXhlZENvbHVtbnMoaGlkZTogYm9vbGVhbikge1xuICAgIGlmIChoaWRlKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLnJlbW92ZVByb3BlcnR5Rml4ZWQodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgdGhpcy5faGlkZUFjdGlvbkZpeGVkQ29sdW1ucyA9IGhpZGU7XG4gIH1cblxuICBnZXQgaGlkZUFjdGlvbkZpeGVkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZUFjdGlvbkZpeGVkQ29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gY2FtcG8gZGUgcGVzcXVpc2Egc2VqYSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXRhYmxlLXNlYXJjaCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlVGFibGVTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGZlY2hhciB1bSBkZXRhbGhlIG91IHJvdyB0ZW1wbGF0ZSBhdXRvbWF0aWNhbWVudGUsIGFvIGFicmlyIG91dHJvIGl0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWNvbGxhcHNlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGF1dG9Db2xsYXBzZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIHNlamEgYWRpY2lvbmFkbyBvIGVzdGFkbyBkZSBjYXJyZWdhbWVudG8gbm8gYm90w6NvIFwiQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1sb2FkaW5nLXNob3ctbW9yZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBsb2FkaW5nU2hvd01vcmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgZW0gdG9kYXMgYXMgY29sdW5hcyBhIG9ww6fDo28gZGUgb3JkZW5hw6fDo28gZGUgZGFkb3MuIENhc28gYSBjb2x1bmEgc2VqYSBkbyB0aXBvICdkYXRhJyBvdSAnZGF0ZVRpbWUnIGFcbiAgICogbWVzbWEgZGV2ZSByZXNwZWl0YXIgb3MgdGlwb3MgZGUgZW50cmFkYSBkZWZpbmlkb3MgcGFyYSBxdWUgc2VqYW0gb3JkZW5hZGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc29ydCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzb3J0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCB0b3JuYSBoYWJpbGl0YWRvIG8gYm90w6NvIFwiQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zaG93LW1vcmUtZGlzYWJsZWQnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgc2hvd01vcmVEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBvIGVzdGlsbyBsaXN0cmFkbyBkYSB0YWJlbGEgKGBzdHJpcGVkYCkuXG4gICAqID4gUmVjb21lbmRhZG8gcGFyYSB0YWJlbGFzIGNvbSBtYWlvciBuw7ptZXJvIGRlIGRhZG9zLCBmYWNpbGl0YW5kbyBhIHN1YSB2aXN1YWxpemHDp8OjbyBuYSB0YWJlbGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zdHJpcGVkJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHN0cmlwZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVzY29uZGUgbyAqY2hlY2tib3gqIHBhcmEgc2VsZcOnw6NvIGRlIHRvZGFzIGFzIGxpbmhhcy5cbiAgICpcbiAgICogPiBTZW1wcmUgcmVjZWJlcsOhICp0cnVlKiBjYXNvIGEgc2VsZcOnw6NvIGRlIGFwZW5hcyB1bWEgbGluaGEgZXN0ZWphIGF0aXZhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1zZWxlY3QtYWxsJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGhpZGVTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgc29tZW50ZSB1bWEgbGluaGEgZGEgdGFiZWxhIHBvZGUgc2VyIHNlbGVjaW9uYWRhLlxuICAgKlxuICAgKiA+IEVzdGEgZGVmaW5pw6fDo28gbsOjbyBzZSBhcGxpY2EgYW9zIGl0ZW5zIGZpbGhvcywgb3MgbWVzbW9zIHBvc3N1ZW0gY29tcG9ydGFtZW50byBpbmRlcGVuZGVudGUgZG8gaXRlbSBwYWkuXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc2luZ2xlLXNlbGVjdCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzaW5nbGVTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgc2VsZWNpb25hciB1bSBpdGVtIGRhIHRhYmVsYSBjbGljYW5kbyBuYSBsaW5oYS5cbiAgICpcbiAgICogPiBDYXNvIGhhamEgbmVjZXNzaWRhZGUgZGUgc2VsZWNpb25hciBvIGl0ZW0gYXBlbmFzIHZpYSByYWRpbyBvdSBjaGVja2JveCwgZGV2ZS1zZSBkZWZpbmlyIGVzdGEgcHJvcHJpZWRhZGUgY29tbyBgZmFsc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zZWxlY3RhYmxlLWVudGlyZS1saW5lJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHNlbGVjdGFibGVFbnRpcmVMaW5lOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgY29sdW5hIGRlIGHDp8O1ZXMgZmljYXLDoSBubyBsYWRvIGRpcmVpdG8gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYWN0aW9ucy1yaWdodCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhY3Rpb25SaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgcXVhbnRpZGFkZSBtw6F4aW1hIGRlIGNvbHVuYXMgcXVlIHNlcsOjbyBleGliaWRhcyBuYSB0YWJlbGEuXG4gICAqXG4gICAqIFF1YW5kbyBjaGVnYXIgbm8gdmFsb3IgaW5mb3JtYWRvLCBhcyBjb2x1bmFzIHF1ZSBuw6NvIGVzdGl2ZXJlbSBzZWxlY2lvbmFkYXMgZmljYXLDo29cbiAgICogZGVzYWJpbGl0YWRhcyBlIGNhc28gaG91dmVyIG1haXMgY29sdW5hcyB2aXPDrXZlaXMgZG8gcXVlIG8gcGVybWl0aWRvLCBhcyBleGNlZGVudGVzXG4gICAqIHNlcsOjbyBpZ25vcmFkYXMgcG9yIG9yZGVtIGRlIHBvc2nDp8Ojby5cbiAgICovXG4gIEBJbnB1dCgncC1tYXgtY29sdW1ucycpIG1heENvbHVtbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gY2FtcG8gZGUgYnVzY2EsIHF1YW5kbyBoYWJpbGl0YWRvLlxuICAgKiBWYWxvcmVzIGRlZmluaWRvcyBubyBlbnVtOiBQb1NlYXJjaEZpbHRlck1vZGVcbiAgICogPiBPYnM6IEEgcGVzcXVpc2Egw6kgcmVhbGl6YWRhIGV4Y2x1c2l2YW1lbnRlIG5vcyBkYWRvcyBsb2NhaXMsIG91IHNlamEsIGFxdWVsZXMgcXVlIGZvcmFtXG4gICAqID4gcmVuZGVyaXphZG9zIG5hIHRhYmVsYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHN0YXJ0c1dpdGhgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXR5cGUnKSBmaWx0ZXJUeXBlOiBQb0ZpbHRlck1vZGUgPSBQb0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZXhlY3V0YWRvIHF1YW5kbyB0b2RhcyBhcyBsaW5oYXMgc8OjbyBzZWxlY2lvbmFkYXMgcG9yIG1laW8gZG8gKmNoZWNrYm94KiBxdWUgc2VsZWNpb25hIHRvZGFzIGFzIGxpbmhhcy5cbiAgICovXG4gIEBPdXRwdXQoJ3AtYWxsLXNlbGVjdGVkJykgYWxsU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBxdWFuZG8gYSBzZWxlw6fDo28gZGFzIGxpbmhhcyDDqSBkZXNtYXJjYWRhIHBvciBtZWlvIGRvICpjaGVja2JveCogcXVlIHNlbGVjaW9uYSB0b2RhcyBhcyBsaW5oYXMuXG4gICAqL1xuICBAT3V0cHV0KCdwLWFsbC11bnNlbGVjdGVkJykgYWxsVW5zZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIGNvbGFwc2FyIHVtYSBsaW5oYSBkbyBgcG8tdGFibGVgLlxuICAgKlxuICAgKiA+IENvbW8gcGFyw6JtZXRybyBvIGNvbXBvbmVudGUgZW52aWEgbyBpdGVtIGNvbGFwc2Fkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY29sbGFwc2VkJykgY29sbGFwc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYW8gZXhwYW5kaXIgdW1hIGxpbmhhIGRvIGBwby10YWJsZWAuXG4gICAqXG4gICAqID4gQ29tbyBwYXLDom1ldHJvIG8gY29tcG9uZW50ZSBlbnZpYSBvIGl0ZW0gZXhwYW5kaWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1leHBhbmRlZCcpIGV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYXDDs3MgbyBtw6l0b2RvIGRlIGV4Y2x1c8OjbyBzZXIgZmluYWxpemFkby5cbiAgICpcbiAgICogYGBgXG4gICAqPHBvLXRhYmxlXG4gICAqICAocC1kZWxldGUtaXRlbXMpPVwiaXRlbXMgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqXG4gICAqXG4gICAqID4gQ29tbyBwYXLDom1ldHJvIG8gY29tcG9uZW50ZSBlbnZpYSBhIGxpc3RhIGF0dWFsaXphZGEsIHNlbSBvcyBpdGVucyBleGNsdcOtZG9zLlxuICAgKi9cbiAgQE91dHB1dCgncC1kZWxldGUtaXRlbXMnKSBldmVudERlbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIHNlbGVjaW9uYXIgdW1hIGxpbmhhIGRvIGBwby10YWJsZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLXNlbGVjdGVkJykgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUmVjZWJlIHVtYSBhw6fDo28gZGUgY2xpcXVlIHBhcmEgbyBib3TDo28gXCJDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3NcIiwgY2FzbyBuZW5odW1hIGHDp8OjbyBmb3IgZGVmaW5pZGEgbyBtZXNtb1xuICAgKiBuw6NvIMOpIHZpc8OtdmVsLlxuICAgKlxuICAgKiBSZWNlYmUgdW0gb2JqZXRvIGB7IGNvbHVtbiwgdHlwZSB9YCBvbmRlOlxuICAgKlxuICAgKiAtIGNvbHVtbiAoYFBvVGFibGVDb2x1bW5gKTogb2JqZXRvIGRhIGNvbHVuYSBxdWUgZXN0w6Egb3JkZW5hZGEuXG4gICAqIC0gdHlwZSAoYFBvVGFibGVDb2x1bW5Tb3J0VHlwZWApOiB0aXBvIGRhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zaG93LW1vcmUnKSBzaG93TW9yZTogRXZlbnRFbWl0dGVyPFBvVGFibGVDb2x1bW5Tb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9UYWJsZUNvbHVtblNvcnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhbyBvcmRlbmFyIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKlxuICAgKiBSZWNlYmUgdW0gb2JqZXRvIGB7IGNvbHVtbiwgdHlwZSB9YCBvbmRlOlxuICAgKlxuICAgKiAtIGNvbHVtbiAoYFBvVGFibGVDb2x1bW5gKTogb2JqZXRvIGRhIGNvbHVuYSBxdWUgZm9pIGNsaWNhZGEvb3JkZW5hZGEuXG4gICAqIC0gdHlwZSAoYFBvVGFibGVDb2x1bW5Tb3J0VHlwZWApOiB0aXBvIGRhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zb3J0LWJ5Jykgc29ydEJ5OiBFdmVudEVtaXR0ZXI8UG9UYWJsZUNvbHVtblNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb1RhYmxlQ29sdW1uU29ydD4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIGRlc21hcmNhciBhIHNlbGXDp8OjbyBkZSB1bWEgbGluaGEgZG8gYHBvLXRhYmxlYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtdW5zZWxlY3RlZCcpIHVuc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBmZWNoYXIgbyBwYWdlIHNsaWRlIGRvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMgYXDDs3MgYWx0ZXJhciBhcyBjb2x1bmFzIHZpc8OtdmVpcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgdmlzw612ZWlzIGF0dWFsaXphZGFzLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMnKSBjaGFuZ2VWaXNpYmxlQ29sdW1ucyA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8c3RyaW5nPj4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgcmVzdGF1cmFyIHBhZHLDo28gbm8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgY29uZmlndXJhZGFzIGluaWNpYWxtZW50ZS5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1yZXN0b3JlLWNvbHVtbi1tYW5hZ2VyJykgY29sdW1uUmVzdG9yZU1hbmFnZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFN0cmluZz4+KCk7XG5cbiAgYWxsQ29sdW1uc1dpZHRoUGl4ZWxzOiBib29sZWFuO1xuICBjb2x1bW5NYXN0ZXJEZXRhaWw6IFBvVGFibGVDb2x1bW47XG4gIGhhc01haW5Db2x1bW5zOiBib29sZWFuID0gZmFsc2U7XG4gIG1haW5Db2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPiA9IFtdO1xuICBzZWxlY3RBbGwgPSBmYWxzZTtcbiAgc29ydGVkQ29sdW1uID0geyBwcm9wZXJ0eTogPFBvVGFibGVDb2x1bW4+bnVsbCwgYXNjZW5kaW5nOiB0cnVlIH07XG4gIHN1YnRpdGxlQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4gPSBbXTtcbiAgcGFnZSA9IDE7XG4gIHBhZ2VTaXplID0gMTA7XG4gIGhhc1NlcnZpY2U/OiBib29sZWFuID0gZmFsc2U7XG4gIGluaXRpYWxDb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPjtcbiAgc2hvd0JhdGNoQWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBpdGVtc1NlbGVjdGVkOiBBcnJheTxhbnk+ID0gW107XG4gIHBhcmFtc0ZpbHRlcjoge307XG4gIGZpbHRlcmVkSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBpbml0aWFsVmlzaWJsZUNvbHVtbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3BhY2luZzogUG9UYWJsZUNvbHVtblNwYWNpbmcgPSBQb1RhYmxlQ29sdW1uU3BhY2luZy5NZWRpdW07XG4gIHByaXZhdGUgX2ZpbHRlcmVkQ29sdW1uczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSBfYWN0aW9ucz86IEFycmF5PFBvVGFibGVBY3Rpb24+ID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+ID0gW107XG4gIHByaXZhdGUgX2NvbnRhaW5lcj86IHN0cmluZztcbiAgcHJpdmF0ZSBfcGFyYW1EZWxldGU6IHN0cmluZyA9IHBvVGFibGVQYXJhbURlbGV0ZUFwaTtcbiAgcHJpdmF0ZSBfaGVpZ2h0PzogbnVtYmVyO1xuICBwcml2YXRlIF9oaWRlRGV0YWlsPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9pdGVtczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1RhYmxlTGl0ZXJhbHM7XG4gIHByaXZhdGUgX2xvYWRpbmc/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3NlbGVjdGFibGU/OiBib29sZWFuO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmcgPSBwb0xvY2FsZURlZmF1bHQ7XG4gIHByaXZhdGUgX3NlcnZpY2VBcGk6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VydmljZURlbGV0ZUFwaTogc3RyaW5nO1xuICBwcml2YXRlIHBvVGFibGVTZXJ2aWNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc29ydFN0b3JlOiBQb1RhYmxlQ29sdW1uU29ydDtcbiAgcHJpdmF0ZSBfaW5maW5pdGVTY3JvbGxEaXN0YW5jZT86IG51bWJlciA9IDEwMDtcbiAgcHJpdmF0ZSBfaW5maW5pdGVTY3JvbGw/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RyYWdnYWJsZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGlkZUFjdGlvbkZpeGVkQ29sdW1ucz86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvRGF0ZTogUG9EYXRlU2VydmljZSxcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9UYWJsZVNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBpdGVucyBkYSB0YWJlbGEuXG4gICAqID4gU2UgZmFsc28sIHNlcsOhIGluaWNpYWxpemFkbyBjb21vIHVtICphcnJheSogdmF6aW8uXG4gICAqL1xuICBASW5wdXQoJ3AtaXRlbXMnKSBzZXQgaXRlbXMoaXRlbXM6IEFycmF5PGFueT4pIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gQXJyYXkuaXNBcnJheShpdGVtcykgPyBbLi4uaXRlbXNdIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gQXJyYXkuaXNBcnJheShpdGVtcykgPyBpdGVtcyA6IFtdO1xuICAgIH1cblxuICAgIC8vIHdoZW4gaGF2ZW4ndCBpdGVtcywgc2VsZWN0QWxsIHNob3VsZCBiZSB1bmNoZWNrZWQuXG4gICAgaWYgKCF0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaGFzQ29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5nZXREZWZhdWx0Q29sdW1ucyhpdGVtc1swXSk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaGVpZ2h0ID8gWy4uLnRoaXMuaXRlbXNdIDogdGhpcy5pdGVtcztcblxuICAgIC8vIHRpbWVvdXQgbmVjZXNzw6FyaW8gcGFyYSBvcyBpdGVucyBzZXJlbSByZWZsZXRpZG9zIG5hIHRhYmVsYVxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja0luZmluaXRlU2Nyb2xsKCkpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRhcyBjb2x1bmFzIGRhIHRhYmVsYSwgZGV2ZSByZWNlYmVyIHVtICphcnJheSogZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvVGFibGVDb2x1bW5gLlxuICAgKiBQb3IgcGFkcsOjbyByZWNlYmVyw6EgY29tbyB2YWxvciBhIHByaW1laXJhIGNvbHVuYSBkYSBsaXN0YSBkZSBpdGVucyBkYSB0YWJlbGEuXG4gICAqID4gQ2FzbyBuw6NvIGVuY29udHJlIHZhbG9yLCBhIG1lbnNhZ2VtICdOZW5odW1hIGRlZmluacOnw6NvIGRlIGNvbHVuYXMnIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIHNldCBjb2x1bW5zKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgY29uc3QgaGFzQ29sdW1uc1dpdGhWaXNpYmxlID0gY29sdW1ucz8uZmluZChjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgPT09IHRydWUpO1xuICAgIGlmICh0aGlzLmluaXRpYWxDb2x1bW5zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbENvbHVtbnMgPSBjb2x1bW5zO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zIHx8IFtdO1xuXG4gICAgaWYgKGhhc0NvbHVtbnNXaXRoVmlzaWJsZSAmJiAhdGhpcy5pbml0aWFsVmlzaWJsZUNvbHVtbnMpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zID0gdHJ1ZTtcbiAgICAgIHRoaXMudmVyaWZ5SW50ZXJhY3RpdmVDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbHVtbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENvbHVtbkxpbmsoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKHRoaXMuaXRlbXNbMF0pO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VDb2x1bW5zKCk7XG4gIH1cblxuICBnZXQgY29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFkaWNpb25hIHVtIGNvbnRvcm5vIGFycmVkb25kYWRvIGFvIGBwby10YWJsZWAsIGFzIG9ww6fDtWVzIHPDo286XG4gICAqIC0gYGJvcmRlcmA6IGNvbSBib3JkYXMvbGluaGFzLlxuICAgKiAtIGBzaGFkb3dgOiBjb20gc29tYnJhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGJvcmRlcmBcbiAgICovXG4gIEBJbnB1dCgncC1jb250YWluZXInKSBzZXQgY29udGFpbmVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSBwb1RhYmxlQ29udGFpbmVyLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogcG9UYWJsZUNvbnRhaW5lckRlZmF1bHQ7XG4gIH1cblxuICBnZXQgY29udGFpbmVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFkaWNpb25hIG8gcGFyw6JtZXRybyBhIHNlciBlbnZpYWRvIHBhcmEgYSByZXF1aXNpw6fDo28gZGUgREVMRVRFLlxuICAgKlxuICAgKiDDiSBuZWNlc3PDoXJpbyBhIHV0aWxpemHDp8OjbyBkYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWRlbGV0ZWAgZW0gY29uanVudG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBpZGBcbiAgICovXG4gIEBJbnB1dCgncC1wYXJhbS1kZWxldGUtYXBpJykgc2V0IHBhcmFtRGVsZXRlQXBpKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXJhbURlbGV0ZSA9IHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHBvVGFibGVQYXJhbURlbGV0ZUFwaTtcbiAgfVxuXG4gIGdldCBwYXJhbURlbGV0ZUFwaSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbURlbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIGFsdHVyYSBkYSB0YWJlbGEgZW0gKnBpeGVscyogZSBmaXhhIG8gY2FiZcOnYWxoby5cbiAgICpcbiAgICogQW8gdXRpbGl6YXIgZXNzYSBwcm9wcmllZGFkZSBzZXLDoSBpbnNlcmlkbyBvIGB2aXJ0dWFsLXNjcm9sbGAgbmEgdGFiZWxhIG1lbGhvcmFuZG8gYSBwZXJmb3JtYW5jZS5cbiAgICovXG4gIEBJbnB1dCgncC1oZWlnaHQnKSBzZXQgaGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZ2V0IGhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgYSB2aXN1YWxpemHDp8OjbyBkYSBsaXN0YSBkZSBkZXRhbGhlcyBkZSBjYWRhIGxpbmhhIGRhIGNvbHVuYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtZGV0YWlsJykgc2V0IGhpZGVEZXRhaWwoaGlkZURldGFpbDogYm9vbGVhbikge1xuICAgIHRoaXMuX2hpZGVEZXRhaWwgPSBoaWRlRGV0YWlsICE9IG51bGwgJiYgaGlkZURldGFpbC50b1N0cmluZygpID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGhpZGVEZXRhaWwpO1xuICB9XG5cbiAgZ2V0IGhpZGVEZXRhaWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVEZXRhaWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tdGFibGVgLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1RhYmxlTGl0ZXJhbHMgPSB7XG4gICAqICAgIG5vQ29sdW1uczogJ05lbmh1bWEgZGVmaW5pw6fDo28gZGUgY29sdW5hcycsXG4gICAqICAgIG5vRGF0YTogJ05lbmh1bSBkYWRvIGVuY29udHJhZG8nLFxuICAgKiAgICBub1Zpc2libGVDb2x1bW46ICdOZW5odW1hIGNvbHVuYSB2aXPDrXZlbCcsXG4gICAqICAgIG5vSXRlbTogJ05lbmh1bSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICogICAgb25lSXRlbTogJzEgaXRlbSBzZWxlY2lvbmFkbycsXG4gICAqICAgIG11bHRpcGxlSXRlbXM6ICdpdGVucyBzZWxlY2lvbmFkb3MnLFxuICAgKiAgICBsb2FkaW5nRGF0YTogJ0NhcnJlZ2FuZG8nLFxuICAgKiAgICBsb2FkTW9yZURhdGE6ICdDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3MnLFxuICAgKiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAnVmVyIGxlZ2VuZGEgY29tcGxldGEnLFxuICAgKiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnTGVnZW5kYSBjb21wbGV0YScsXG4gICAqICAgIGNvbHVtbnNNYW5hZ2VyOiAnR2VyZW5jaWFkb3IgZGUgY29sdW5hcycsXG4gICAqICAgIGJvZHlEZWxldGU6ICdEZXNlamEgcmVhbG1lbnRlIGV4Y2x1aXIgZXNzZSBpdGVtPycsXG4gICAqICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICogICAgZGVsZXRlOiAnRXhjbHVpcicsXG4gICAqICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICdJdGVucyByZW1vdmlkb3MgY29tIHN1Y2Vzc28nLFxuICAgKiAgICBkZWxldGVBcGlFcnJvcjogJ09jb3JyZXUgdW0gZXJybyBpbmVzcGVyYWRvLCB0ZW50ZSBub3ZhbWVudGUgbWFpcyB0YXJkZSEnLFxuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvVGFibGVMaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnU2VtIGRhZG9zJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tdGFibGVcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXRhYmxlPlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvVGFibGVMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9UYWJsZUxpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb1RhYmxlTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvVGFibGVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBCbG9xdWVpYSBhIGludGVyYcOnw6NvIGRvIHVzdcOhcmlvIGNvbSBvcyBkYWRvcyBkYSBfdGFibGVfLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZGluZycpIHNldCBsb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkaW5nID0gY29udmVydFRvQm9vbGVhbihsb2FkaW5nKTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBsaXN0YSBkZSBhw6fDtWVzLlxuICAgKlxuICAgKiBRdWFuZG8gaG91dmVyIGFwZW5hcyB1bWEgYcOnw6NvIGRlZmluaWRhIGVsYSBzZXLDoSBleGliaWRhIGRpcmV0YW1lbnRlIG5hIGNvbHVuYSwgY2FzbyBjb250csOhcmlvLCBvIGNvbXBvbmVudGVcbiAgICogc2UgZW5jYXJyZWdhIGRlIGFncnVww6EtbGFzIGV4aWJpbmRvIG8gw61jb25lIFsqKnBvLWljb24tbW9yZSoqXSgvZ3VpZGVzL2ljb25zKSBxdWUgbGlzdGFyw6EgYXMgYcOnw7VlcyBhbyBzZXIgY2xpY2Fkby5cbiAgICpcbiAgICogKipBIGNvbHVuYSBkZSBhw6fDtWVzIG7Do28gc2Vyw6EgZXhpYmlkYSBxdWFuZG86KipcbiAgICogIC0gYSBsaXN0YSBjb250ZXIgdmFsb3JlcyBpbnbDoWxpZG9zIG91IGluZGVmaW5pZG9zLlxuICAgKiAgLSB0ZW5oYSB1bWEgw7puaWNhIGHDp8OjbyBlIGEgbWVzbWEgbsOjbyBmb3Igdmlzw612ZWwuXG4gICAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIHNldCBhY3Rpb25zKGFjdGlvbnM6IEFycmF5PFBvVGFibGVBY3Rpb24+KSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cblxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSBzZWxlw6fDo28gZGUgbGluaGFzIG5hIHRhYmVsYSBlLCBjYXNvIGEgcHJvcHJpZWRhZGUgYHAtc2luZ2xlLXNlbGVjdGAgZXN0ZWphIGRlZmluaWRhIHNlcsOhIHBvc3PDrXZlbFxuICAgKiBzZWxlY2lvbmFyIGFwZW5hcyB1bWEgw7puaWNhIGxpbmhhLlxuICAgKlxuICAgKiAqKkltcG9ydGFudGU6KipcbiAgICogIC0gQXMgbGluaGFzIGRlIGRldGFsaGUgZGVmaW5pZGFzIGVtIGBQb1RhYmxlRGV0YWlsYCBwb3NzdWVtIGNvbXBvcnRhbWVudG8gaW5kZXBlbmRlbnRlIGRhIGxpbmhhIG1lc3RyZTtcbiAgICogIC0gQ2FkYSBsaW5oYSBwb3NzdWkgcG9yIHBhZHLDo28gYSBwcm9wcmllZGFkZSBkaW7Dom1pY2EgYCRzZWxlY3RlZGAsIG5hIHF1YWwgw6kgcG9zc8OtdmVsIHZhbGlkYXIgc2UgYSBsaW5oYVxuICAgKiBlc3TDoSBzZWxlY2lvbmFkYSwgcG9yIGV4ZW1wbG86IGBpdGVtLiRzZWxlY3RlZGAgb3UgYGl0ZW1bJyRzZWxlY3RlZCddYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXNlbGVjdGFibGUnKSBzZXQgc2VsZWN0YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlbGVjdGFibGUgPSA8YW55PnZhbHVlID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBhIHRhYmVsYSBlIG8gYm90w6NvIFwiQ2FycmVnYXIgTWFpc1wiIGRlaXhhcsOhIGRlIHNlciBleGliaWRvLiBBbyBjaGVnYXIgbm8gZmltIGRhIHRhYmVsYVxuICAgKiBleGVjdXRhcsOhIGEgZnVuw6fDo28gYHAtc2hvdy1tb3JlYC5cbiAgICpcbiAgICogKipSZWdyYXMgZGUgdXRpbGl6YcOnw6NvOioqXG4gICAqICAtIE8gc2Nyb2xsIGluZmluaXRvIHPDsyBmdW5jaW9uYSBwYXJhIHRhYmVsYXMgcXVlIHV0aWxpemFtIGEgcHJvcHJpZWRhZGUgYHAtaGVpZ2h0YCBlIHF1ZSBwb3NzdWVtIG8gc2Nyb2xsIGrDoSBuYSBjYXJnYSBpbmljaWFsIGRvcyBkYWRvcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWluZmluaXRlLXNjcm9sbCcpIHNldCBpbmZpbml0ZVNjcm9sbCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luZmluaXRlU2Nyb2xsID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSAmJiB0aGlzLmhlaWdodCA+IDApO1xuICB9XG5cbiAgZ2V0IGluZmluaXRlU2Nyb2xsKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0ZVNjcm9sbDtcbiAgfVxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBwZXJjZW50dWFsIG5lY2Vzc8OhcmlvIHBhcmEgZGlzcGFyYXIgbyBldmVudG8gYHAtc2hvdy1tb3JlYCwgcXVlIMOpIHJlc3BvbnPDoXZlbCBwb3IgY2FycmVnYXIgbWFpcyBkYWRvcyBuYSB0YWJlbGEuIENhc28gbyB2YWxvciBpbmZvcm1hZG8gc2VqYSBtYWlvciBxdWUgMTAwIG91IG1lbm9yXG4gICAqIHF1ZSAwLCBvIHZhbG9yIHBhZHLDo28gc2Vyw6EgMTAwJVxuICAgKlxuICAgKiAqKkV4ZW1wbG9zOioqXG4gICAqICAtIHAtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlID0gODA6IFF1YW5kbyBhdGluZ2lyIDgwJSAgZG8gc2Nyb2xsIGRhIHRhYmVsYSwgbyBgcC1zaG93LW1vcmVgIHNlcsOhIGRpc3BhcmFkby5cbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwtZGlzdGFuY2UnKSBzZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZSA9IHZhbHVlID4gMTAwIHx8IHZhbHVlIDwgMCA/IDEwMCA6IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXRlU2Nyb2xsRGlzdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBVUkwgZGEgQVBJIHJlc3BvbnPDoXZlbCBwb3IgcmV0b3JuYXIgb3MgcmVnaXN0cm9zLlxuICAgKlxuICAgKiBBbyByZWFsaXphciBhIGJ1c2NhIGRlIG1haXMgcmVnaXN0cm9zIHZpYSBwYWdpbmHDp8OjbyAoQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zKSwgc2Vyw6EgZW52aWFkbyBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgLCBjb25mb3JtZSBhYmFpeG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFyIG9yZGVuYcOnw6NvLCBhIGNvbHVuYSBvcmRlbmFkYSBzZXLDoSBlbnZpYWRhIGF0cmF2w6lzIGRvIHBhcsOibWV0cm8gYG9yZGVyYCwgcG9yIGV4ZW1wbG86XG4gICAqIC0gQ29sdW5hIGRlY3Jlc2NlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmb3JkZXI9LW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIC0gQ29sdW5hIGFzY2VuZGVudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZvcmRlcj1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiA+IEVzdGEgVVJMIGRldmUgcmV0b3JuYXIgZSByZWNlYmVyIG9zIGRhZG9zIG5vIHBhZHLDo28gZGUgW0FQSSBkbyBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKS5cbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlLWFwaScpIHNldCBzZXJ2aWNlQXBpKHNlcnZpY2U6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcnZpY2VBcGkgPSBzZXJ2aWNlO1xuICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLnNlcnZpY2VBcGksICdHRVQnKTtcbiAgICB0aGlzLmhhc1NlcnZpY2UgPSAhIXNlcnZpY2U7XG4gICAgdGhpcy5zaG93TW9yZURpc2FibGVkID0gIXRoaXMuaGFzU2VydmljZTtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgfVxuXG4gIGdldCBzZXJ2aWNlQXBpKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlQXBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVVJMIGRhIEFQSSByZXNwb25zw6F2ZWwgcG9yIGV4Y2x1aXIgb3MgcmVnaXN0cm9zLlxuICAgKlxuICAgKiBBbyBzZWxlY2lvbmFyIG8gYm90w6NvIGRlIGV4Y2x1aXIgaXRlbnMsIGVzc2EgdXJsIHNlcsOhIGV4ZWN1dGFkYSB1dGlsaXphbmRvIG8gcGFyw6JtZXRybyBlbnZpYWRvIG5hIHByb3ByaWVkYWRlIGBwLXBhcmFtLWRlbGV0ZS1hcGlgLlxuICAgKiBDYXNvIGVsYSBuw6NvIHNlamEgdXRpbGl6YWRhLCBvIHBhcsOibWV0cm8gcGFkcsOjbyBhIHNlciBlbnZpYWRvIHNlcsOhIGBpZGAuXG4gICAqXG4gICAqID4gRXN0YSBVUkwgZGV2ZSByZXRvcm5hciBlIHJlY2ViZXIgb3MgZGFkb3Mgbm8gcGFkcsOjbyBkZSBbQVBJIGRvIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpLlxuICAgKi9cbiAgQElucHV0KCdwLXNlcnZpY2UtZGVsZXRlJykgc2V0IHNlcnZpY2VEZWxldGVBcGkoc2VydmljZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VydmljZURlbGV0ZUFwaSA9IHNlcnZpY2U7XG4gICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuc2VydmljZURlbGV0ZUFwaSwgJ0RFTEVURScpO1xuICB9XG5cbiAgZ2V0IHNlcnZpY2VEZWxldGVBcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VEZWxldGVBcGk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBSZXNwb25zw6F2ZWwgcG9yIGFwbGljYXIgZXNwYcOnYW1lbnRvIG5hcyBjb2x1bmFzLlxuICAgKlxuICAgKiBEZXZlIHJlY2ViZXIgdW0gZG9zIHZhbG9yZXMgZG8gZW51bSBgUG9UYWJsZUNvbHVtblNwYWNpbmdgLlxuICAgKlxuICAgKiBWYWxvciBgc21hbGxgIHPDsyBmdW5jaW9uYSBlbSB0YWJlbGFzIG7Do28gaW50ZXJhdGl2YXMuIENhc28gc2VqYSBzZXRhZG8gY29tIGBzbWFsbGAgZSBhIHRhYmVsYSBzZWphIGludGVyYXRpdmEsIG8gdmFsb3Igc2Vyw6EgcmV0b3JuYWRvIHBhcmEgYG1lZGl1bWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBtZWRpdW1gXG4gICAqL1xuICBASW5wdXQoJ3Atc3BhY2luZycpIHNldCBzcGFjaW5nKHZhbHVlOiBQb1RhYmxlQ29sdW1uU3BhY2luZykge1xuICAgIGlmICh2YWx1ZSA9PT0gJ3NtYWxsJyB8fCB2YWx1ZSA9PT0gJ21lZGl1bScgfHwgdmFsdWUgPT09ICdsYXJnZScpIHtcbiAgICAgIHRoaXMuX3NwYWNpbmcgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3BhY2luZyA9IFBvVGFibGVDb2x1bW5TcGFjaW5nLk1lZGl1bTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3BhY2luZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3BhY2luZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhcyBjb2x1bmFzIHF1ZSBzZXLDo28gZmlsdHJhZGFzIG5vIGNhbXBvIGRlIHBlc3F1aXNhLlxuICAgKiBBY2VpdGEgdW0gYXJyYXkgZGUgc3RyaW5ncywgcmVwcmVzZW50YW5kbyBhcyBjb2x1bmFzIGVzcGVjw61maWNhcyBxdWUgc2Vyw6NvIGNvbnNpZGVyYWRhcyBuYSBmaWx0cmFnZW0uXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyZWQtY29sdW1ucycpIHNldCBmaWx0ZXJlZENvbHVtbnModmFsdWVzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fZmlsdGVyZWRDb2x1bW5zID0gdmFsdWVzO1xuICB9XG5cbiAgZ2V0IGZpbHRlcmVkQ29sdW1ucygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc0NvbHVtbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucyAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBoYXNJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCk7XG4gIH1cblxuICBnZXQgbmFtZUNvbHVtbkRldGFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgPyB0aGlzLmNvbHVtbk1hc3RlckRldGFpbC5wcm9wZXJ0eSA6IG51bGw7XG4gIH1cblxuICBnZXQgdmFsaWRDb2x1bW5zKCkge1xuICAgIGNvbnN0IHR5cGVzVmFsaWQgPSBbXG4gICAgICAnc3RyaW5nJyxcbiAgICAgICdudW1iZXInLFxuICAgICAgJ2Jvb2xlYW4nLFxuICAgICAgJ2RhdGUnLFxuICAgICAgJ3RpbWUnLFxuICAgICAgJ2RhdGVUaW1lJyxcbiAgICAgICdjdXJyZW5jeScsXG4gICAgICAnc3VidGl0bGUnLFxuICAgICAgJ2xpbmsnLFxuICAgICAgJ2xhYmVsJyxcbiAgICAgICdpY29uJyxcbiAgICAgICdjZWxsVGVtcGxhdGUnLFxuICAgICAgJ2NvbHVtblRlbXBsYXRlJ1xuICAgIF07XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+ICFjb2wudHlwZSB8fCB0eXBlc1ZhbGlkLmluY2x1ZGVzKGNvbC50eXBlKSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYWN0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aW9ucyAmJiB0aGlzLmFjdGlvbnMuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24gJiYgYWN0aW9uLnZpc2libGUgIT09IGZhbHNlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29sdW1uc1xuICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKVxuICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLnByb3BlcnR5IHx8IGNvbHVtbi5sYWJlbCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzb3J0VHlwZSgpOiBQb1RhYmxlQ29sdW1uU29ydFR5cGUge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcgPyBQb1RhYmxlQ29sdW1uU29ydFR5cGUuQXNjZW5kaW5nIDogUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBvIG1vZG8gZHJhZyBhbmQgZHJvcCBwYXJhIGFzIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZHJhZ2dhYmxlJykgc2V0IGRyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kcmFnZ2FibGUgPSBkcmFnZ2FibGUgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgZHJhZ2dhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9kcmFnZ2FibGU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBvVGFibGVTZXJ2aWNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZVNlbGVjdCB8fCB0aGlzLmhpZGVTZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgICB0aGlzLmhpZGVTZWxlY3RBbGwgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmhlaWdodCkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcih0aGlzLmhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsUm93cygpIHtcbiAgICBpZiAoIXRoaXMuaGlkZVNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSAhdGhpcy5zZWxlY3RBbGw7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdEFsbDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmVtaXRTZWxlY3RBbGxFdmVudHModGhpcy5zZWxlY3RBbGwsIFsuLi50aGlzLml0ZW1zXSk7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2VsZWN0ZWQgPSAhcm93LiRzZWxlY3RlZDtcblxuICAgIHRoaXMuZW1pdFNlbGVjdEV2ZW50cyhyb3cpO1xuXG4gICAgdGhpcy5jb25maWdBZnRlclNlbGVjdFJvdyh0aGlzLml0ZW1zLCByb3cpO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRMaXN0KCk7XG4gIH1cblxuICBoYXNTZWxlY3RhYmxlUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5zZWxlY3RhYmxlRW50aXJlTGluZTtcbiAgfVxuXG4gIHNlbGVjdERldGFpbFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMuZW1pdFNlbGVjdEV2ZW50cyhyb3cpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRMaXN0KCkge1xuICAgIHRoaXMuaXRlbXNTZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLiRzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLml0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmNvbG9yID8gYHBvLXRleHQtJHt0aGlzLmdldENvbHVtbkNvbG9yKHJvdywgY29sdW1uKX1gIDogJyc7XG4gIH1cblxuICB0b2dnbGVEZXRhaWwocm93OiBhbnkpIHtcbiAgICBjb25zdCByb3dTaG93RGV0YWlsID0gcm93LiRzaG93RGV0YWlsO1xuICAgIGlmICh0aGlzLmF1dG9Db2xsYXBzZSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUFsbEl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3csICFyb3dTaG93RGV0YWlsKTtcbiAgICB0aGlzLmVtaXRFeHBhbmRFdmVudHMocm93KTtcbiAgfVxuXG4gIHRvZ2dsZVJvd0FjdGlvbihyb3c6IGFueSkge1xuICAgIGNvbnN0IHRvZ2dsZVNob3dBY3Rpb24gPSByb3cuJHNob3dBY3Rpb247XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS4kc2hvd0FjdGlvbikge1xuICAgICAgICBpdGVtLiRzaG93QWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcm93LiRzaG93QWN0aW9uID0gIXRvZ2dsZVNob3dBY3Rpb247XG4gIH1cblxuICBzb3J0Q29sdW1uKGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5zb3J0IHx8IGNvbHVtbi50eXBlID09PSAnZGV0YWlsJyB8fCBjb2x1bW4uc29ydGFibGUgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0ZWRDb2x1bW4uYXNjZW5kaW5nID0gdGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkgPT09IGNvbHVtbiA/ICF0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcgOiB0cnVlO1xuXG4gICAgdGhpcy5zb3J0QXJyYXkoY29sdW1uLCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcpO1xuICAgIHRoaXMuc29ydEJ5LmVtaXQoeyBjb2x1bW4sIHR5cGU6IHRoaXMuc29ydFR5cGUgfSk7XG4gICAgaWYgKHRoaXMuaGFzU2VydmljZSAmJiB0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuc29ydFN0b3JlID0geyBjb2x1bW4sIHR5cGU6IHRoaXMuc29ydFR5cGUgfTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSA9IGNvbHVtbjtcbiAgfVxuXG4gIG9uU2hvd01vcmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydCA9IHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5ID8geyBjb2x1bW46IHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0eXBlOiB0aGlzLnNvcnRUeXBlIH0gOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5oYXNTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnBhZ2UrKztcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRpbmdTaG93TW9yZSA9IHRydWU7XG5cbiAgICAgIHRoaXMucG9UYWJsZVNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgLi4uZGF0YS5pdGVtc107XG4gICAgICAgIHRoaXMuc2hvd01vcmVEaXNhYmxlZCA9ICFkYXRhLmhhc05leHQ7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdTaG93TW9yZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TW9yZS5lbWl0KHNvcnQpO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRJdGVtcyhxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogUXVlcnlQYXJhbXNUeXBlIH0pOiBPYnNlcnZhYmxlPFBvVGFibGVSZXNwb25zZUFwaT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zOiBQb1RhYmxlRmlsdGVyZWRJdGVtc1BhcmFtcyA9IHRoaXMuZ2V0RmlsdGVyZWRQYXJhbXMocXVlcnlQYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMucG9UYWJsZVNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcyk7XG4gIH1cblxuICBzZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhkYXRhOiBQb1RhYmxlUmVzcG9uc2VBcGkpIHtcbiAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcyB8fCBbXTtcbiAgICB0aGlzLnNob3dNb3JlRGlzYWJsZWQgPSAhZGF0YS5oYXNOZXh0O1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZURhdGEocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnBhcmFtc0ZpbHRlciA9IHBhcmFtcztcbiAgICAgIHRoaXMuZ2V0RmlsdGVyZWRJdGVtcyhwYXJhbXMpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5zZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhkYXRhKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0Q29sdW1ucyhpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLmZpbHRlcihrZXkgPT4gdHlwZW9mIGl0ZW1ba2V5XSAhPT0gJ29iamVjdCcpXG4gICAgICAubWFwKGtleSA9PiAoeyBsYWJlbDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSksIHByb3BlcnR5OiBrZXkgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNob3dEZXRhaWwocm93SWRlbnRpZmllcjogYW55IHwgbnVtYmVyLCBpc1Nob3dEZXRhaWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc1Jvd0luZGV4ID0gdHlwZW9mIHJvd0lkZW50aWZpZXIgPT09ICdudW1iZXInICYmIHRoaXMuaXRlbXNbcm93SWRlbnRpZmllcl07XG5cbiAgICBjb25zdCByb3cgPSBpc1Jvd0luZGV4ID8gdGhpcy5pdGVtc1tyb3dJZGVudGlmaWVyXSA6IHJvd0lkZW50aWZpZXI7XG5cbiAgICByb3cuJHNob3dEZXRhaWwgPSBpc1Nob3dEZXRhaWw7XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlQWxsSXRlbXMoaXRlbXM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+KSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS4kc2hvd0RldGFpbCkge1xuICAgICAgICB0aGlzLnNldFNob3dEZXRhaWwoaXRlbSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmVtaXRFeHBhbmRFdmVudHMoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25maWdBZnRlclNlbGVjdFJvdyhyb3dzOiBBcnJheTxhbnk+LCByb3cpIHtcbiAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3QpIHtcbiAgICAgIHRoaXMudW5zZWxlY3RPdGhlclJvd3Mocm93cywgcm93KTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZGVTZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5pc0V2ZXJ5U2VsZWN0ZWQocm93cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RXhwYW5kRXZlbnRzKHJvdzogYW55KSB7XG4gICAgcm93LiRzaG93RGV0YWlsID8gdGhpcy5leHBhbmRlZC5lbWl0KHJvdykgOiB0aGlzLmNvbGxhcHNlZC5lbWl0KHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3RBbGxFdmVudHMoc2VsZWN0QWxsOiBib29sZWFuLCByb3dzOiBhbnkpIHtcbiAgICBzZWxlY3RBbGwgPyB0aGlzLmFsbFNlbGVjdGVkLmVtaXQocm93cykgOiB0aGlzLmFsbFVuc2VsZWN0ZWQuZW1pdChyb3dzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdEV2ZW50cyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2VsZWN0ZWQgPyB0aGlzLnNlbGVjdGVkLmVtaXQocm93KSA6IHRoaXMudW5zZWxlY3RlZC5lbWl0KHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbkNvbG9yKHJvdywgY29sdW1uKSB7XG4gICAgY29uc3QgY29sdW1uQ29sb3IgPSBjb2x1bW4uY29sb3I7XG5cbiAgICByZXR1cm4gaXNUeXBlb2YoY29sdW1uQ29sb3IsICdmdW5jdGlvbicpID8gY29sdW1uQ29sb3Iocm93LCBjb2x1bW4ucHJvcGVydHkpIDogY29sdW1uQ29sb3I7XG4gIH1cblxuICAvLyBSZXRvcm5hIGEgY29sdW5hIGRhIGxpc3RhIGRlIGNvbHVuYXMgcXVlIMOpIGRvIHRpcG8gZGV0YWlsXG4gIHByaXZhdGUgZ2V0Q29sdW1uTWFzdGVyRGV0YWlsKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnR5cGUgPT09ICdkZXRhaWwnKTtcbiAgfVxuXG4gIC8vIENvbHVuYXMgcXVlIHPDo28gaW5zZXJpZGFzIG5vIDxoZWFkPiBkYSB0YWJlbGFcbiAgcHJpdmF0ZSBnZXRNYWluQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wudmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgLy8gUmV0b3JuYSBhcyBjb2x1bmFzIGNvbSBzdGF0dXNcbiAgcHJpdmF0ZSBnZXRTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC50eXBlID09PSAnc3VidGl0bGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFdmVyeVNlbGVjdGVkKGl0ZW1zOiBBcnJheTxhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc29tZUNoZWNrZWRPckluZGV0ZXJtaW5hdGUgPSBpdGVtID0+IGl0ZW0uJHNlbGVjdGVkIHx8IGl0ZW0uJHNlbGVjdGVkID09PSBudWxsO1xuICAgIGNvbnN0IGV2ZXJ5Q2hlY2tlZCA9IGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQ7XG5cbiAgICBpZiAoaXRlbXMuZXZlcnkoZXZlcnlDaGVja2VkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW1zLnNvbWUoc29tZUNoZWNrZWRPckluZGV0ZXJtaW5hdGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlQ29sdW1ucygpIHtcbiAgICB0aGlzLnNldE1haW5Db2x1bW5zKCk7XG4gICAgdGhpcy5zZXRDb2x1bW5NYXN0ZXJEZXRhaWwoKTtcbiAgICB0aGlzLnNldFN1YnRpdGxlQ29sdW1ucygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyZWRDb2x1bW5zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbHVtbkxpbmsoKSB7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGlmIChjb2x1bW5bJ3R5cGUnXSA9PT0gJ2xpbmsnICYmICFjb2x1bW5bJ2xpbmsnXSkge1xuICAgICAgICBjb2x1bW5bJ2xpbmsnXSA9ICdsaW5rJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sdW1uTWFzdGVyRGV0YWlsKCkge1xuICAgIHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsID0gdGhpcy5nZXRDb2x1bW5NYXN0ZXJEZXRhaWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWFpbkNvbHVtbnMoKSB7XG4gICAgdGhpcy5tYWluQ29sdW1ucyA9IHRoaXMuZ2V0TWFpbkNvbHVtbnMoKTtcblxuICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgPSAhIXRoaXMubWFpbkNvbHVtbnMubGVuZ3RoO1xuXG4gICAgdGhpcy5hbGxDb2x1bW5zV2lkdGhQaXhlbHMgPSB0aGlzLnZlcmlmeVdpZHRoQ29sdW1uc1BpeGVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgdGhpcy5zdWJ0aXRsZUNvbHVtbnMgPSB0aGlzLmdldFN1YnRpdGxlQ29sdW1ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0QXJyYXkoY29sdW1uOiBQb1RhYmxlQ29sdW1uLCBhc2NlbmRpbmc6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpdGVtc0xpc3QgPSB0aGlzLmhlaWdodCA/IFsuLi50aGlzLml0ZW1zXSA6IHRoaXMuaXRlbXM7XG4gICAgaXRlbXNMaXN0LnNvcnQoKGxlZnRTaWRlLCByaWdodFNpZGUpOiBudW1iZXIgPT5cbiAgICAgIHNvcnRWYWx1ZXMobGVmdFNpZGVbY29sdW1uLnByb3BlcnR5XSwgcmlnaHRTaWRlW2NvbHVtbi5wcm9wZXJ0eV0sIGFzY2VuZGluZylcbiAgICApO1xuICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zTGlzdDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuc2VsZWN0T3RoZXJSb3dzKHJvd3M6IEFycmF5PGFueT4sIHJvdykge1xuICAgIHJvd3MuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtICE9PSByb3cpIHtcbiAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SW50ZXJhY3RpdmVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGhhc0xpbmtPckRldGFpbCA9IHRoaXMuY29sdW1ucy5maW5kKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ2xpbmsnIHx8IGNvbHVtbi50eXBlID09PSAnZGV0YWlsJyk7XG4gICAgaWYgKHRoaXMuc3BhY2luZyA9PT0gJ3NtYWxsJyAmJiAodGhpcy5zZWxlY3RhYmxlIHx8IGhhc0xpbmtPckRldGFpbCB8fCB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDApKSB7XG4gICAgICB0aGlzLnNwYWNpbmcgPSBQb1RhYmxlQ29sdW1uU3BhY2luZy5NZWRpdW07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlXaWR0aENvbHVtbnNQaXhlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzTWFpbkNvbHVtbnMgPyB0aGlzLm1haW5Db2x1bW5zLmV2ZXJ5KGNvbHVtbiA9PiBjb2x1bW4ud2lkdGggJiYgY29sdW1uLndpZHRoLmluY2x1ZGVzKCdweCcpKSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZXJ2aWNlKHNlcnZpY2U6IHN0cmluZywgbWV0aG9kOiAnR0VUJyB8ICdERUxFVEUnKSB7XG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnBvVGFibGVTZXJ2aWNlLnNldFVybChzZXJ2aWNlLCBtZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRQYXJhbXMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgY29uc3QgeyBwYWdlLCBwYWdlU2l6ZSwgc29ydFN0b3JlIH0gPSB0aGlzO1xuXG4gICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSB7fTtcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuZ2V0T3JkZXJQYXJhbShzb3J0U3RvcmUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHsgcGFnZSwgcGFnZVNpemUsIG9yZGVyLCAuLi5xdWVyeVBhcmFtcyB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgcGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZFBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3JkZXJQYXJhbShzb3J0OiBQb1RhYmxlQ29sdW1uU29ydCA9IHsgdHlwZTogdW5kZWZpbmVkIH0pIHtcbiAgICBjb25zdCB7IGNvbHVtbiwgdHlwZSB9ID0gc29ydDtcblxuICAgIGlmICghY29sdW1uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFBvVGFibGVDb2x1bW5Tb3J0VHlwZS5EZXNjZW5kaW5nKSB7XG4gICAgICByZXR1cm4gYC0ke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtjb2x1bW4ucHJvcGVydHl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUHJvcGVydHlGaXhlZChhcnI6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gYXJyLm1hcChvYmogPT4ge1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgnZml4ZWQnKSkge1xuICAgICAgICBvYmouZml4ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoaGVpZ2h0KTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hlY2tJbmZpbml0ZVNjcm9sbCgpO1xufVxuIl19
|
|
1259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSTVHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFXckUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsUUFBUSxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxFQUFFLEVBQW1CO1FBQ25CLFNBQVMsRUFBRSx5QkFBeUI7UUFDcEMsTUFBTSxFQUFFLGVBQWU7UUFDdkIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLGFBQWEsRUFBRSxnQkFBZ0I7UUFDL0IsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyxXQUFXLEVBQUUsU0FBUztRQUN0QixZQUFZLEVBQUUsZ0JBQWdCO1FBQzlC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QkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBcUJlLGVBQWU7a0JBQS9DLEtBQUs7bUJBQUMsb0JBQW9CO1lBZ0VELFNBQVM7a0JBQWxDLEtBQUs7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvRGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1kYXRlL3BvLWRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyLCBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgc29ydFZhbHVlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFBvRmlsdGVyTW9kZSB9IGZyb20gJy4uL3BvLXNlYXJjaC9wby1zZWFyY2gtZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydFR5cGUgfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLWNvbHVtbi1zb3J0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU3BhY2luZyB9IGZyb20gJy4vZW51bXMvcG8tdGFibGUtc3BhY2luZy5lbnVtJztcbmltcG9ydCB7IFBvVGFibGVBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1jb2x1bW4tc29ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWZpbHRlcmVkLWl0ZW1zLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUxpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlUmVzcG9uc2VBcGkgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtcmVzcG9uc2UtYXBpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tdGFibGUuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UGFyYW1zVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG5cbmV4cG9ydCBjb25zdCBwb1RhYmxlQ29udGFpbmVyID0gWydib3JkZXInLCAnc2hhZG93J107XG5leHBvcnQgY29uc3QgcG9UYWJsZUNvbnRhaW5lckRlZmF1bHQgPSAnYm9yZGVyJztcbmV4cG9ydCBjb25zdCBwb1RhYmxlUGFyYW1EZWxldGVBcGkgPSAnaWQnO1xuXG5leHBvcnQgY29uc3QgcG9UYWJsZUxpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1RhYmxlTGl0ZXJhbHM+e1xuICAgIG5vQ29sdW1uczogJ0NvbHVtbnMgYXJlIG5vdCBkZWZpbmVkJyxcbiAgICBub0RhdGE6ICdObyBkYXRhIGZvdW5kJyxcbiAgICBub0l0ZW06ICdObyBzZWxlY3RlZCBpdGVtJyxcbiAgICBvbmVJdGVtOiAnMSBzZWxlY3RlZCBpdGVtJyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAnc2VsZWN0ZWQgaXRlbXMnLFxuICAgIG5vVmlzaWJsZUNvbHVtbjogJ05vIHZpc2libGUgY29sdW1uJyxcbiAgICBsb2FkaW5nRGF0YTogJ0xvYWRpbmcnLFxuICAgIGxvYWRNb3JlRGF0YTogJ0xvYWQgbW9yZSBkYXRhJyxcbiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAnU2VlIGNvbXBsZXRlIHN1YnRpdGxlJyxcbiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnQ29tcGxldGUgc3VidGl0bGUnLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAnQ29sdW1ucyBtYW5hZ2VyJyxcbiAgICBib2R5RGVsZXRlOiAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGl0ZW0/JyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ0l0ZW1zIHJlbW92ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQsIHBsZWFzZSB0cnkgYWdhaW4gbGF0ZXInXG4gIH0sXG4gIGVzOiA8UG9UYWJsZUxpdGVyYWxzPntcbiAgICBub0NvbHVtbnM6ICdDb2x1bW5hcyBubyBkZWZpbmlkYXMnLFxuICAgIG5vRGF0YTogJ0RhdG9zIG5vIGVuY29udHJhZG9zJyxcbiAgICBub0l0ZW06ICdOaW5nw7puIGVsZW1lbnRvIHNlbGVjY2lvbmFkbycsXG4gICAgb25lSXRlbTogJzEgZWxlbWVudG8gc2VsZWNjaW9uYWRvJyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAnZWxlbWVudG9zIHNlbGVjY2lvbmFkb3MnLFxuICAgIG5vVmlzaWJsZUNvbHVtbjogJ1NpbiBjb2x1bW5hcyB2aXNpYmxlcycsXG4gICAgbG9hZGluZ0RhdGE6ICdDYXJnYW5kbyBkYXRvcycsXG4gICAgbG9hZE1vcmVEYXRhOiAnQ2FyZ2FyIG3DoXMgcmVzdWx0YWRvcycsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ1ZlciBzdWJ0aXR1bG8gY29tcGxldG8nLFxuICAgIGNvbXBsZXRlU3VidGl0bGU6ICdTdWJ0aXR1bG8gY29tcGxldG8nLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAnR2VyZW50ZSBkZSBjb2x1bW5hJyxcbiAgICBib2R5RGVsZXRlOiAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50bz8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBkZWxldGU6ICdCb3JyYXInLFxuICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICdFbGVtZW50b3MgZWxpbWluYWRvcyBjb24gw6l4aXRvJyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ09jdXJyacOzIHVuIGVycm9yIGluZXNwZXJhZG8sIGludMOpbnRhbG8gZGUgbnVldm8gbcOhcyB0YXJkZSdcbiAgfSxcbiAgcHQ6IDxQb1RhYmxlTGl0ZXJhbHM+e1xuICAgIG5vQ29sdW1uczogJ05lbmh1bWEgZGVmaW5pw6fDo28gZGUgY29sdW5hcycsXG4gICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAgbm9WaXNpYmxlQ29sdW1uOiAnTmVuaHVtYSBjb2x1bmEgdmlzw612ZWwnLFxuICAgIG5vSXRlbTogJ05lbmh1bSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICBvbmVJdGVtOiAnMSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAnaXRlbnMgc2VsZWNpb25hZG9zJyxcbiAgICBsb2FkaW5nRGF0YTogJ0NhcnJlZ2FuZG8nLFxuICAgIGxvYWRNb3JlRGF0YTogJ0NhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcycsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ1ZlciBsZWdlbmRhIGNvbXBsZXRhJyxcbiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnTGVnZW5kYSBjb21wbGV0YScsXG4gICAgY29sdW1uc01hbmFnZXI6ICdHZXJlbmNpYWRvciBkZSBjb2x1bmFzJyxcbiAgICBib2R5RGVsZXRlOiAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzc2UgaXRlbT8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBkZWxldGU6ICdFeGNsdWlyJyxcbiAgICBkZWxldGVTdWNjZXNzZnVsOiAnSXRlbnMgcmVtb3ZpZG9zIGNvbSBzdWNlc3NvJyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ09jb3JyZXUgdW0gZXJybyBpbmVzcGVyYWRvLCB0ZW50ZSBub3ZhbWVudGUgbWFpcyB0YXJkZSEnXG4gIH0sXG4gIHJ1OiA8UG9UYWJsZUxpdGVyYWxzPntcbiAgICBub0NvbHVtbnM6ICfQndC10YIg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRgdGC0L7Qu9Cx0YbQsCcsXG4gICAgbm9EYXRhOiAn0JTQsNC90L3Ri9C1INC90LUg0L3QsNC50LTQtdC90YsnLFxuICAgIG5vSXRlbTogJ9Cd0LXRgiDQstGL0LHRgNCw0L3QvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJyxcbiAgICBvbmVJdGVtOiAnMSDRjdC70LXQvNC10L3RgiDQstGL0LHRgNCw0L0nLFxuICAgIG11bHRpcGxlSXRlbXM6ICfQstGL0LHRgNCw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiycsXG4gICAgbm9WaXNpYmxlQ29sdW1uOiAn0L3QtdGCINCy0LjQtNC40LzRi9GFINGB0YLQvtC70LHRhtC+0LInLFxuICAgIGxvYWRpbmdEYXRhOiAn0JfQsNCz0YDRg9C30LrQsCcsXG4gICAgbG9hZE1vcmVEYXRhOiAn0JfQsNCz0YDRg9C30LrQsCcsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ9Cf0L7RgdC80L7RgtGA0LXRgtGMINC/0L7Qu9C90YvQuSDRgdGD0LHRgtC40YLRgCcsXG4gICAgY29tcGxldGVTdWJ0aXRsZTogJ9Cf0L7Qu9C90YvQuSDQt9Cw0LPQvtC70L7QstC+0LonLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAn0LzQtdC90LXQtNC20LXRgCDQutC+0LvQvtC90L7QuicsXG4gICAgYm9keURlbGV0ZTogJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGN0LvQtdC80LXQvdGCPycsXG4gICAgY2FuY2VsOiAn0J7RgtC80LXQvdCwJyxcbiAgICBkZWxldGU6ICfQo9C00LDQu9C40YLRjCcsXG4gICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ9Ct0LvQtdC80LXQvdGC0Ysg0YPRgdC/0LXRiNC90L4g0YPQtNCw0LvQtdC90YsnLFxuICAgIGRlbGV0ZUFwaUVycm9yOiAn0J/RgNC+0LjQt9C+0YjQu9CwINC90LXQv9GA0LXQtNCy0LjQtNC10L3QvdCw0Y8g0L7RiNC40LHQutCwLCDQv9C+0LLRgtC+0YDQuNGC0LUg0L/QvtC/0YvRgtC60YMg0L/QvtC30LbQtSdcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgZGUgdGFiZWxhIMOpIHV0aWxpemFkbyBwYXJhIGV4aWJpw6fDo28gZGUgZGFkb3MgY29tIGRpZmVyZW50ZXMgdGlwb3MgY29tbyBwb3IgZXhlbXBsbyB0ZXh0b3MsIGRhdGEsIGhvcmFzIGUgbsO6bWVyb3MgY29tXG4gKiBmb3JtYXRvIHBlcnNvbmFsaXphZG8uXG4gKlxuICogVGFtYsOpbSDDqSBwb3NzaXZlbCBjcmlhciB0YWJlbGFzIGNvbSBvcmRlbmHDp8OjbyBkZSBkYWRvcywgbGluaGFzIGNvbSBkZXRhbGhlcywgY29sdW5hIHBhcmEgc2VsZcOnw6NvIGRlIGxpbmhhcywgY29sdW5hIGNvbSBhw6fDtWVzIGUgdGFtYsOpbVxuICogY2FycmVnYW1lbnRvIHBvciBkZW1hbmRhIGF0cmF2w6lzIGRvIGJvdMOjbyAqKkNhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcyoqLlxuICpcbiAqID4gQXMgbGluaGFzIGRlIGRldGFsaGVzIHBvZGVtIHRhbWLDqW0gc2VyIGN1c3RvbWl6YWRhcyBhdHJhdsOpcyBkbyBbYHAtdGFibGUtcm93LXRlbXBsYXRlYF0oL2RvY3VtZW50YXRpb24vcG8tdGFibGUtcm93LXRlbXBsYXRlKS5cbiAqXG4gKiA+IEFzIGNvbHVuYXMgcG9kZW0gc2VyIGN1c3RvbWl6YWRhcyBhdHJhdsOpcyBkb3MgdGVtcGxhdGVzIFtgcC10YWJsZS1jb2x1bW4tdGVtcGxhdGVgXSgvZG9jdW1lbnRhdGlvbi9wby10YWJsZS1jb2x1bW4tdGVtcGxhdGUpXG4gKiBlIFtgcC10YWJsZS1jZWxsLXRlbXBsYXRlYF0oL2RvY3VtZW50YXRpb24vcG8tdGFibGUtY2VsbC10ZW1wbGF0ZSkuXG4gKlxuICogTyBjb21wb25lbnRlIHBlcm1pdGUgZ2VyZW5jaWFyIGEgZXhpYmnDp8OjbyBkYXMgY29sdW5hcyBkaW5hbWljYW1lbnRlLiBFc3RhIGZ1bmNpb25hbGlkYWRlIHBvZGUgc2VyIGFjZXNzYWRhIGF0cmF2w6lzIGRvIMOtY29uZSBkZSBlbmdyZW5hZ2VtXG4gKiBubyBjYW50byBzdXBlcmlvciBkaXJlaXRvIGRvIGNhYmXDp2FsaG8gZGEgdGFiZWxhLlxuICpcbiAqIENhc28gYSBsYXJndXJhIGRlIHRvZGFzIGFzIGNvbHVuYXMgZm9yZW0gZGVmaW5pZGFzIGUgbyB0b3RhbCB1bHRyYXBhc3NhciBvIHRhbWFuaG8gdGFiZWxhLCBzZXLDoSBleGliaWRvIHVtICpzY3JvbGwqIG5hIGhvcml6b250YWwgcGFyYSBhXG4gKiBjb21wbGV0YSB2aXN1YWxpemHDp8OjbyBkb3MgZGFkb3MuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvVGFibGVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgMTYueC54XG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogKipEZXByZWNhdGVkIDE2LngueCoqLlxuICAgKlxuICAgKiA+IFBvciByZWdyYXMgZGUgYWNlc3NpYmlsaWRhZGUgYSBjw6lsdWxhIGRhIHRhYmVsYSBhcHJlc2VudGFyw6EgcmV0aWPDqm5jaWFzIGF1dG9tw6F0aWNhbWVudGVcbiAgICogcXVhbmRvIG7Do28gaG91dmVyIGVzcGHDp28gcGFyYSBvIHNldSBjb250w6l1ZG8gZSBwb3IgaXNzbyBhIHByb3ByaWVkYWRlIHNlcsOhIGRlcHJlY2lhZGEuXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGhhYmlsaXRhIGEgcXVlYnJhIGRlIHRleHRvIGFvIHRyYW5zYm9yZGEtbG8gZGVudHJvIGRlIHF1YWxxdWVyIGNvbHVuYS5cbiAgICogPiBRdWFuZG8gb2NvcnJlciBhIHF1ZWJyYSBkZSB0ZXh0bywgYW8gcGFzc2FyIG8gbW91c2Ugbm8gY29udGXDumRvIGRhIGPDqWx1bGEsXG4gICAqIG8gbWVzbW8gc2Vyw6EgZXhpYmlkbyBhdHJhdsOpcyBkbyBbYHBvLXRvb2x0aXBgXSgvZG9jdW1lbnRhdGlvbi9wby10b29sdGlwKS5cbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXRleHQtb3ZlcmZsb3cnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZVRleHRPdmVyZmxvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcywgcmVzcG9uc8OhdmVsIHBlbGEgZGVmaW5pw6fDo28gZGUgcXVhaXMgY29sdW5hcyBzZXLDo28gZXhpYmlkYXMsIHNlamEgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1jb2x1bW5zLW1hbmFnZXInLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZUNvbHVtbnNNYW5hZ2VyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIGFzIGHDp8O1ZXMgZW0gbG90ZSwgcmVzcG9uc8OhdmVsIHBvciBleGNsdWlyIGUgZXhpYmlyIGEgcXVhbnRpZGFkZSBkZSBpdGVucywgc2VqYW0gZXNjb25kaWRhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtYmF0Y2gtYWN0aW9ucycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlQmF0Y2hBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgYXMgYcOnw7VlcyBwYXJhIGZpeGFyIHVtYSBjb2x1bmEgZGEgdGFiZWxhIHNlamFtIGVzY29uZGlkYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLWFjdGlvbi1maXhlZC1jb2x1bW5zJykgc2V0IGhpZGVBY3Rpb25GaXhlZENvbHVtbnMoaGlkZTogYm9vbGVhbikge1xuICAgIGlmIChoaWRlKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLnJlbW92ZVByb3BlcnR5Rml4ZWQodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgdGhpcy5faGlkZUFjdGlvbkZpeGVkQ29sdW1ucyA9IGhpZGU7XG4gIH1cblxuICBnZXQgaGlkZUFjdGlvbkZpeGVkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZUFjdGlvbkZpeGVkQ29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gY2FtcG8gZGUgcGVzcXVpc2Egc2VqYSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXRhYmxlLXNlYXJjaCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlVGFibGVTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGZlY2hhciB1bSBkZXRhbGhlIG91IHJvdyB0ZW1wbGF0ZSBhdXRvbWF0aWNhbWVudGUsIGFvIGFicmlyIG91dHJvIGl0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWNvbGxhcHNlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGF1dG9Db2xsYXBzZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIHNlamEgYWRpY2lvbmFkbyBvIGVzdGFkbyBkZSBjYXJyZWdhbWVudG8gbm8gYm90w6NvIFwiQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1sb2FkaW5nLXNob3ctbW9yZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBsb2FkaW5nU2hvd01vcmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgZW0gdG9kYXMgYXMgY29sdW5hcyBhIG9ww6fDo28gZGUgb3JkZW5hw6fDo28gZGUgZGFkb3MuIENhc28gYSBjb2x1bmEgc2VqYSBkbyB0aXBvICdkYXRhJyBvdSAnZGF0ZVRpbWUnIGFcbiAgICogbWVzbWEgZGV2ZSByZXNwZWl0YXIgb3MgdGlwb3MgZGUgZW50cmFkYSBkZWZpbmlkb3MgcGFyYSBxdWUgc2VqYW0gb3JkZW5hZGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc29ydCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzb3J0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCB0b3JuYSBoYWJpbGl0YWRvIG8gYm90w6NvIFwiQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zaG93LW1vcmUtZGlzYWJsZWQnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgc2hvd01vcmVEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBvIGVzdGlsbyBsaXN0cmFkbyBkYSB0YWJlbGEgKGBzdHJpcGVkYCkuXG4gICAqID4gUmVjb21lbmRhZG8gcGFyYSB0YWJlbGFzIGNvbSBtYWlvciBuw7ptZXJvIGRlIGRhZG9zLCBmYWNpbGl0YW5kbyBhIHN1YSB2aXN1YWxpemHDp8OjbyBuYSB0YWJlbGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zdHJpcGVkJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHN0cmlwZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVzY29uZGUgbyAqY2hlY2tib3gqIHBhcmEgc2VsZcOnw6NvIGRlIHRvZGFzIGFzIGxpbmhhcy5cbiAgICpcbiAgICogPiBTZW1wcmUgcmVjZWJlcsOhICp0cnVlKiBjYXNvIGEgc2VsZcOnw6NvIGRlIGFwZW5hcyB1bWEgbGluaGEgZXN0ZWphIGF0aXZhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1zZWxlY3QtYWxsJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGhpZGVTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgc29tZW50ZSB1bWEgbGluaGEgZGEgdGFiZWxhIHBvZGUgc2VyIHNlbGVjaW9uYWRhLlxuICAgKlxuICAgKiA+IEVzdGEgZGVmaW5pw6fDo28gbsOjbyBzZSBhcGxpY2EgYW9zIGl0ZW5zIGZpbGhvcywgb3MgbWVzbW9zIHBvc3N1ZW0gY29tcG9ydGFtZW50byBpbmRlcGVuZGVudGUgZG8gaXRlbSBwYWkuXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc2luZ2xlLXNlbGVjdCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzaW5nbGVTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgc2VsZWNpb25hciB1bSBpdGVtIGRhIHRhYmVsYSBjbGljYW5kbyBuYSBsaW5oYS5cbiAgICpcbiAgICogPiBDYXNvIGhhamEgbmVjZXNzaWRhZGUgZGUgc2VsZWNpb25hciBvIGl0ZW0gYXBlbmFzIHZpYSByYWRpbyBvdSBjaGVja2JveCwgZGV2ZS1zZSBkZWZpbmlyIGVzdGEgcHJvcHJpZWRhZGUgY29tbyBgZmFsc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zZWxlY3RhYmxlLWVudGlyZS1saW5lJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHNlbGVjdGFibGVFbnRpcmVMaW5lOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgY29sdW5hIGRlIGHDp8O1ZXMgZmljYXLDoSBubyBsYWRvIGRpcmVpdG8gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYWN0aW9ucy1yaWdodCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhY3Rpb25SaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgcXVhbnRpZGFkZSBtw6F4aW1hIGRlIGNvbHVuYXMgcXVlIHNlcsOjbyBleGliaWRhcyBuYSB0YWJlbGEuXG4gICAqXG4gICAqIFF1YW5kbyBjaGVnYXIgbm8gdmFsb3IgaW5mb3JtYWRvLCBhcyBjb2x1bmFzIHF1ZSBuw6NvIGVzdGl2ZXJlbSBzZWxlY2lvbmFkYXMgZmljYXLDo29cbiAgICogZGVzYWJpbGl0YWRhcyBlIGNhc28gaG91dmVyIG1haXMgY29sdW5hcyB2aXPDrXZlaXMgZG8gcXVlIG8gcGVybWl0aWRvLCBhcyBleGNlZGVudGVzXG4gICAqIHNlcsOjbyBpZ25vcmFkYXMgcG9yIG9yZGVtIGRlIHBvc2nDp8Ojby5cbiAgICovXG4gIEBJbnB1dCgncC1tYXgtY29sdW1ucycpIG1heENvbHVtbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gY2FtcG8gZGUgYnVzY2EsIHF1YW5kbyBoYWJpbGl0YWRvLlxuICAgKiBWYWxvcmVzIGRlZmluaWRvcyBubyBlbnVtOiBQb1NlYXJjaEZpbHRlck1vZGVcbiAgICogPiBPYnM6IEEgcGVzcXVpc2Egw6kgcmVhbGl6YWRhIGV4Y2x1c2l2YW1lbnRlIG5vcyBkYWRvcyBsb2NhaXMsIG91IHNlamEsIGFxdWVsZXMgcXVlIGZvcmFtXG4gICAqID4gcmVuZGVyaXphZG9zIG5hIHRhYmVsYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHN0YXJ0c1dpdGhgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXR5cGUnKSBmaWx0ZXJUeXBlOiBQb0ZpbHRlck1vZGUgPSBQb0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZXhlY3V0YWRvIHF1YW5kbyB0b2RhcyBhcyBsaW5oYXMgc8OjbyBzZWxlY2lvbmFkYXMgcG9yIG1laW8gZG8gKmNoZWNrYm94KiBxdWUgc2VsZWNpb25hIHRvZGFzIGFzIGxpbmhhcy5cbiAgICovXG4gIEBPdXRwdXQoJ3AtYWxsLXNlbGVjdGVkJykgYWxsU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBxdWFuZG8gYSBzZWxlw6fDo28gZGFzIGxpbmhhcyDDqSBkZXNtYXJjYWRhIHBvciBtZWlvIGRvICpjaGVja2JveCogcXVlIHNlbGVjaW9uYSB0b2RhcyBhcyBsaW5oYXMuXG4gICAqL1xuICBAT3V0cHV0KCdwLWFsbC11bnNlbGVjdGVkJykgYWxsVW5zZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIGNvbGFwc2FyIHVtYSBsaW5oYSBkbyBgcG8tdGFibGVgLlxuICAgKlxuICAgKiA+IENvbW8gcGFyw6JtZXRybyBvIGNvbXBvbmVudGUgZW52aWEgbyBpdGVtIGNvbGFwc2Fkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY29sbGFwc2VkJykgY29sbGFwc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYW8gZXhwYW5kaXIgdW1hIGxpbmhhIGRvIGBwby10YWJsZWAuXG4gICAqXG4gICAqID4gQ29tbyBwYXLDom1ldHJvIG8gY29tcG9uZW50ZSBlbnZpYSBvIGl0ZW0gZXhwYW5kaWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1leHBhbmRlZCcpIGV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYXDDs3MgbyBtw6l0b2RvIGRlIGV4Y2x1c8OjbyBzZXIgZmluYWxpemFkby5cbiAgICpcbiAgICogYGBgXG4gICAqPHBvLXRhYmxlXG4gICAqICAocC1kZWxldGUtaXRlbXMpPVwiaXRlbXMgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqXG4gICAqXG4gICAqID4gQ29tbyBwYXLDom1ldHJvIG8gY29tcG9uZW50ZSBlbnZpYSBhIGxpc3RhIGF0dWFsaXphZGEsIHNlbSBvcyBpdGVucyBleGNsdcOtZG9zLlxuICAgKi9cbiAgQE91dHB1dCgncC1kZWxldGUtaXRlbXMnKSBldmVudERlbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIHNlbGVjaW9uYXIgdW1hIGxpbmhhIGRvIGBwby10YWJsZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLXNlbGVjdGVkJykgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUmVjZWJlIHVtYSBhw6fDo28gZGUgY2xpcXVlIHBhcmEgbyBib3TDo28gXCJDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3NcIiwgY2FzbyBuZW5odW1hIGHDp8OjbyBmb3IgZGVmaW5pZGEgbyBtZXNtb1xuICAgKiBuw6NvIMOpIHZpc8OtdmVsLlxuICAgKlxuICAgKiBSZWNlYmUgdW0gb2JqZXRvIGB7IGNvbHVtbiwgdHlwZSB9YCBvbmRlOlxuICAgKlxuICAgKiAtIGNvbHVtbiAoYFBvVGFibGVDb2x1bW5gKTogb2JqZXRvIGRhIGNvbHVuYSBxdWUgZXN0w6Egb3JkZW5hZGEuXG4gICAqIC0gdHlwZSAoYFBvVGFibGVDb2x1bW5Tb3J0VHlwZWApOiB0aXBvIGRhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zaG93LW1vcmUnKSBzaG93TW9yZTogRXZlbnRFbWl0dGVyPFBvVGFibGVDb2x1bW5Tb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9UYWJsZUNvbHVtblNvcnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhbyBvcmRlbmFyIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKlxuICAgKiBSZWNlYmUgdW0gb2JqZXRvIGB7IGNvbHVtbiwgdHlwZSB9YCBvbmRlOlxuICAgKlxuICAgKiAtIGNvbHVtbiAoYFBvVGFibGVDb2x1bW5gKTogb2JqZXRvIGRhIGNvbHVuYSBxdWUgZm9pIGNsaWNhZGEvb3JkZW5hZGEuXG4gICAqIC0gdHlwZSAoYFBvVGFibGVDb2x1bW5Tb3J0VHlwZWApOiB0aXBvIGRhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zb3J0LWJ5Jykgc29ydEJ5OiBFdmVudEVtaXR0ZXI8UG9UYWJsZUNvbHVtblNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb1RhYmxlQ29sdW1uU29ydD4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIGRlc21hcmNhciBhIHNlbGXDp8OjbyBkZSB1bWEgbGluaGEgZG8gYHBvLXRhYmxlYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtdW5zZWxlY3RlZCcpIHVuc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBmZWNoYXIgbyBwYWdlIHNsaWRlIGRvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMgYXDDs3MgYWx0ZXJhciBhcyBjb2x1bmFzIHZpc8OtdmVpcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgdmlzw612ZWlzIGF0dWFsaXphZGFzLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMnKSBjaGFuZ2VWaXNpYmxlQ29sdW1ucyA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8c3RyaW5nPj4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgcmVzdGF1cmFyIHBhZHLDo28gbm8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgY29uZmlndXJhZGFzIGluaWNpYWxtZW50ZS5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1yZXN0b3JlLWNvbHVtbi1tYW5hZ2VyJykgY29sdW1uUmVzdG9yZU1hbmFnZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFN0cmluZz4+KCk7XG5cbiAgYWxsQ29sdW1uc1dpZHRoUGl4ZWxzOiBib29sZWFuO1xuICBjb2x1bW5NYXN0ZXJEZXRhaWw6IFBvVGFibGVDb2x1bW47XG4gIGhhc01haW5Db2x1bW5zOiBib29sZWFuID0gZmFsc2U7XG4gIG1haW5Db2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPiA9IFtdO1xuICBzZWxlY3RBbGwgPSBmYWxzZTtcbiAgc29ydGVkQ29sdW1uID0geyBwcm9wZXJ0eTogPFBvVGFibGVDb2x1bW4+bnVsbCwgYXNjZW5kaW5nOiB0cnVlIH07XG4gIHN1YnRpdGxlQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4gPSBbXTtcbiAgcGFnZSA9IDE7XG4gIHBhZ2VTaXplID0gMTA7XG4gIGhhc1NlcnZpY2U/OiBib29sZWFuID0gZmFsc2U7XG4gIGluaXRpYWxDb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPjtcbiAgc2hvd0JhdGNoQWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBpdGVtc1NlbGVjdGVkOiBBcnJheTxhbnk+ID0gW107XG4gIHBhcmFtc0ZpbHRlcjoge307XG4gIGZpbHRlcmVkSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBpbml0aWFsVmlzaWJsZUNvbHVtbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3BhY2luZzogUG9UYWJsZUNvbHVtblNwYWNpbmcgPSBQb1RhYmxlQ29sdW1uU3BhY2luZy5NZWRpdW07XG4gIHByaXZhdGUgX2ZpbHRlcmVkQ29sdW1uczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSBfYWN0aW9ucz86IEFycmF5PFBvVGFibGVBY3Rpb24+ID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+ID0gW107XG4gIHByaXZhdGUgX2NvbnRhaW5lcj86IHN0cmluZztcbiAgcHJpdmF0ZSBfcGFyYW1EZWxldGU6IHN0cmluZyA9IHBvVGFibGVQYXJhbURlbGV0ZUFwaTtcbiAgcHJpdmF0ZSBfaGVpZ2h0PzogbnVtYmVyO1xuICBwcml2YXRlIF9oaWRlRGV0YWlsPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9pdGVtczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1RhYmxlTGl0ZXJhbHM7XG4gIHByaXZhdGUgX2xvYWRpbmc/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3NlbGVjdGFibGU/OiBib29sZWFuO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmcgPSBwb0xvY2FsZURlZmF1bHQ7XG4gIHByaXZhdGUgX3NlcnZpY2VBcGk6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VydmljZURlbGV0ZUFwaTogc3RyaW5nO1xuICBwcml2YXRlIHBvVGFibGVTZXJ2aWNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc29ydFN0b3JlOiBQb1RhYmxlQ29sdW1uU29ydDtcbiAgcHJpdmF0ZSBfaW5maW5pdGVTY3JvbGxEaXN0YW5jZT86IG51bWJlciA9IDEwMDtcbiAgcHJpdmF0ZSBfaW5maW5pdGVTY3JvbGw/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RyYWdnYWJsZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGlkZUFjdGlvbkZpeGVkQ29sdW1ucz86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvRGF0ZTogUG9EYXRlU2VydmljZSxcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9UYWJsZVNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBpdGVucyBkYSB0YWJlbGEuXG4gICAqID4gU2UgZmFsc28sIHNlcsOhIGluaWNpYWxpemFkbyBjb21vIHVtICphcnJheSogdmF6aW8uXG4gICAqL1xuICBASW5wdXQoJ3AtaXRlbXMnKSBzZXQgaXRlbXMoaXRlbXM6IEFycmF5PGFueT4pIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gQXJyYXkuaXNBcnJheShpdGVtcykgPyBbLi4uaXRlbXNdIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gQXJyYXkuaXNBcnJheShpdGVtcykgPyBpdGVtcyA6IFtdO1xuICAgIH1cblxuICAgIC8vIHdoZW4gaGF2ZW4ndCBpdGVtcywgc2VsZWN0QWxsIHNob3VsZCBiZSB1bmNoZWNrZWQuXG4gICAgaWYgKCF0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaGFzQ29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5nZXREZWZhdWx0Q29sdW1ucyhpdGVtc1swXSk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaGVpZ2h0ID8gWy4uLnRoaXMuaXRlbXNdIDogdGhpcy5pdGVtcztcblxuICAgIC8vIHRpbWVvdXQgbmVjZXNzw6FyaW8gcGFyYSBvcyBpdGVucyBzZXJlbSByZWZsZXRpZG9zIG5hIHRhYmVsYVxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja0luZmluaXRlU2Nyb2xsKCkpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRhcyBjb2x1bmFzIGRhIHRhYmVsYSwgZGV2ZSByZWNlYmVyIHVtICphcnJheSogZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvVGFibGVDb2x1bW5gLlxuICAgKiBQb3IgcGFkcsOjbyByZWNlYmVyw6EgY29tbyB2YWxvciBhIHByaW1laXJhIGNvbHVuYSBkYSBsaXN0YSBkZSBpdGVucyBkYSB0YWJlbGEuXG4gICAqID4gQ2FzbyBuw6NvIGVuY29udHJlIHZhbG9yLCBhIG1lbnNhZ2VtICdOZW5odW1hIGRlZmluacOnw6NvIGRlIGNvbHVuYXMnIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIHNldCBjb2x1bW5zKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgY29uc3QgaGFzQ29sdW1uc1dpdGhWaXNpYmxlID0gY29sdW1ucz8uZmluZChjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgPT09IHRydWUpO1xuICAgIGlmICh0aGlzLmluaXRpYWxDb2x1bW5zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbENvbHVtbnMgPSBjb2x1bW5zO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zIHx8IFtdO1xuXG4gICAgaWYgKGhhc0NvbHVtbnNXaXRoVmlzaWJsZSAmJiAhdGhpcy5pbml0aWFsVmlzaWJsZUNvbHVtbnMpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zID0gdHJ1ZTtcbiAgICAgIHRoaXMudmVyaWZ5SW50ZXJhY3RpdmVDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbHVtbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENvbHVtbkxpbmsoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKHRoaXMuaXRlbXNbMF0pO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VDb2x1bW5zKCk7XG4gIH1cblxuICBnZXQgY29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFkaWNpb25hIHVtIGNvbnRvcm5vIGFycmVkb25kYWRvIGFvIGBwby10YWJsZWAsIGFzIG9ww6fDtWVzIHPDo286XG4gICAqIC0gYGJvcmRlcmA6IGNvbSBib3JkYXMvbGluaGFzLlxuICAgKiAtIGBzaGFkb3dgOiBjb20gc29tYnJhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGJvcmRlcmBcbiAgICovXG4gIEBJbnB1dCgncC1jb250YWluZXInKSBzZXQgY29udGFpbmVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSBwb1RhYmxlQ29udGFpbmVyLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogcG9UYWJsZUNvbnRhaW5lckRlZmF1bHQ7XG4gIH1cblxuICBnZXQgY29udGFpbmVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFkaWNpb25hIG8gcGFyw6JtZXRybyBhIHNlciBlbnZpYWRvIHBhcmEgYSByZXF1aXNpw6fDo28gZGUgREVMRVRFLlxuICAgKlxuICAgKiDDiSBuZWNlc3PDoXJpbyBhIHV0aWxpemHDp8OjbyBkYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWRlbGV0ZWAgZW0gY29uanVudG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBpZGBcbiAgICovXG4gIEBJbnB1dCgncC1wYXJhbS1kZWxldGUtYXBpJykgc2V0IHBhcmFtRGVsZXRlQXBpKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXJhbURlbGV0ZSA9IHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHBvVGFibGVQYXJhbURlbGV0ZUFwaTtcbiAgfVxuXG4gIGdldCBwYXJhbURlbGV0ZUFwaSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbURlbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIGFsdHVyYSBkYSB0YWJlbGEgZW0gKnBpeGVscyogZSBmaXhhIG8gY2FiZcOnYWxoby5cbiAgICpcbiAgICogQW8gdXRpbGl6YXIgZXNzYSBwcm9wcmllZGFkZSBzZXLDoSBpbnNlcmlkbyBvIGB2aXJ0dWFsLXNjcm9sbGAgbmEgdGFiZWxhIG1lbGhvcmFuZG8gYSBwZXJmb3JtYW5jZS5cbiAgICovXG4gIEBJbnB1dCgncC1oZWlnaHQnKSBzZXQgaGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZ2V0IGhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgYSB2aXN1YWxpemHDp8OjbyBkYSBsaXN0YSBkZSBkZXRhbGhlcyBkZSBjYWRhIGxpbmhhIGRhIGNvbHVuYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtZGV0YWlsJykgc2V0IGhpZGVEZXRhaWwoaGlkZURldGFpbDogYm9vbGVhbikge1xuICAgIHRoaXMuX2hpZGVEZXRhaWwgPSBoaWRlRGV0YWlsICE9IG51bGwgJiYgaGlkZURldGFpbC50b1N0cmluZygpID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGhpZGVEZXRhaWwpO1xuICB9XG5cbiAgZ2V0IGhpZGVEZXRhaWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVEZXRhaWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tdGFibGVgLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1RhYmxlTGl0ZXJhbHMgPSB7XG4gICAqICAgIG5vQ29sdW1uczogJ05lbmh1bWEgZGVmaW5pw6fDo28gZGUgY29sdW5hcycsXG4gICAqICAgIG5vRGF0YTogJ05lbmh1bSBkYWRvIGVuY29udHJhZG8nLFxuICAgKiAgICBub1Zpc2libGVDb2x1bW46ICdOZW5odW1hIGNvbHVuYSB2aXPDrXZlbCcsXG4gICAqICAgIG5vSXRlbTogJ05lbmh1bSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICogICAgb25lSXRlbTogJzEgaXRlbSBzZWxlY2lvbmFkbycsXG4gICAqICAgIG11bHRpcGxlSXRlbXM6ICdpdGVucyBzZWxlY2lvbmFkb3MnLFxuICAgKiAgICBsb2FkaW5nRGF0YTogJ0NhcnJlZ2FuZG8nLFxuICAgKiAgICBsb2FkTW9yZURhdGE6ICdDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3MnLFxuICAgKiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAnVmVyIGxlZ2VuZGEgY29tcGxldGEnLFxuICAgKiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnTGVnZW5kYSBjb21wbGV0YScsXG4gICAqICAgIGNvbHVtbnNNYW5hZ2VyOiAnR2VyZW5jaWFkb3IgZGUgY29sdW5hcycsXG4gICAqICAgIGJvZHlEZWxldGU6ICdEZXNlamEgcmVhbG1lbnRlIGV4Y2x1aXIgZXNzZSBpdGVtPycsXG4gICAqICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICogICAgZGVsZXRlOiAnRXhjbHVpcicsXG4gICAqICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICdJdGVucyByZW1vdmlkb3MgY29tIHN1Y2Vzc28nLFxuICAgKiAgICBkZWxldGVBcGlFcnJvcjogJ09jb3JyZXUgdW0gZXJybyBpbmVzcGVyYWRvLCB0ZW50ZSBub3ZhbWVudGUgbWFpcyB0YXJkZSEnLFxuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvVGFibGVMaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnU2VtIGRhZG9zJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tdGFibGVcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXRhYmxlPlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvVGFibGVMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9UYWJsZUxpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb1RhYmxlTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvVGFibGVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBCbG9xdWVpYSBhIGludGVyYcOnw6NvIGRvIHVzdcOhcmlvIGNvbSBvcyBkYWRvcyBkYSBfdGFibGVfLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZGluZycpIHNldCBsb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkaW5nID0gY29udmVydFRvQm9vbGVhbihsb2FkaW5nKTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBsaXN0YSBkZSBhw6fDtWVzLlxuICAgKlxuICAgKiBRdWFuZG8gaG91dmVyIGFwZW5hcyB1bWEgYcOnw6NvIGRlZmluaWRhIGVsYSBzZXLDoSBleGliaWRhIGRpcmV0YW1lbnRlIG5hIGNvbHVuYSwgY2FzbyBjb250csOhcmlvLCBvIGNvbXBvbmVudGVcbiAgICogc2UgZW5jYXJyZWdhIGRlIGFncnVww6EtbGFzIGV4aWJpbmRvIG8gw61jb25lIFsqKnBvLWljb24tbW9yZSoqXSgvZ3VpZGVzL2ljb25zKSBxdWUgbGlzdGFyw6EgYXMgYcOnw7VlcyBhbyBzZXIgY2xpY2Fkby5cbiAgICpcbiAgICogKipBIGNvbHVuYSBkZSBhw6fDtWVzIG7Do28gc2Vyw6EgZXhpYmlkYSBxdWFuZG86KipcbiAgICogIC0gYSBsaXN0YSBjb250ZXIgdmFsb3JlcyBpbnbDoWxpZG9zIG91IGluZGVmaW5pZG9zLlxuICAgKiAgLSB0ZW5oYSB1bWEgw7puaWNhIGHDp8OjbyBlIGEgbWVzbWEgbsOjbyBmb3Igdmlzw612ZWwuXG4gICAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIHNldCBhY3Rpb25zKGFjdGlvbnM6IEFycmF5PFBvVGFibGVBY3Rpb24+KSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cblxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSBzZWxlw6fDo28gZGUgbGluaGFzIG5hIHRhYmVsYSBlLCBjYXNvIGEgcHJvcHJpZWRhZGUgYHAtc2luZ2xlLXNlbGVjdGAgZXN0ZWphIGRlZmluaWRhIHNlcsOhIHBvc3PDrXZlbFxuICAgKiBzZWxlY2lvbmFyIGFwZW5hcyB1bWEgw7puaWNhIGxpbmhhLlxuICAgKlxuICAgKiAqKkltcG9ydGFudGU6KipcbiAgICogIC0gQXMgbGluaGFzIGRlIGRldGFsaGUgZGVmaW5pZGFzIGVtIGBQb1RhYmxlRGV0YWlsYCBwb3NzdWVtIGNvbXBvcnRhbWVudG8gaW5kZXBlbmRlbnRlIGRhIGxpbmhhIG1lc3RyZTtcbiAgICogIC0gQ2FkYSBsaW5oYSBwb3NzdWkgcG9yIHBhZHLDo28gYSBwcm9wcmllZGFkZSBkaW7Dom1pY2EgYCRzZWxlY3RlZGAsIG5hIHF1YWwgw6kgcG9zc8OtdmVsIHZhbGlkYXIgc2UgYSBsaW5oYVxuICAgKiBlc3TDoSBzZWxlY2lvbmFkYSwgcG9yIGV4ZW1wbG86IGBpdGVtLiRzZWxlY3RlZGAgb3UgYGl0ZW1bJyRzZWxlY3RlZCddYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXNlbGVjdGFibGUnKSBzZXQgc2VsZWN0YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlbGVjdGFibGUgPSA8YW55PnZhbHVlID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBhIHRhYmVsYSBlIG8gYm90w6NvIFwiQ2FycmVnYXIgTWFpc1wiIGRlaXhhcsOhIGRlIHNlciBleGliaWRvLiBBbyBjaGVnYXIgbm8gZmltIGRhIHRhYmVsYVxuICAgKiBleGVjdXRhcsOhIGEgZnVuw6fDo28gYHAtc2hvdy1tb3JlYC5cbiAgICpcbiAgICogKipSZWdyYXMgZGUgdXRpbGl6YcOnw6NvOioqXG4gICAqICAtIE8gc2Nyb2xsIGluZmluaXRvIHPDsyBmdW5jaW9uYSBwYXJhIHRhYmVsYXMgcXVlIHV0aWxpemFtIGEgcHJvcHJpZWRhZGUgYHAtaGVpZ2h0YCBlIHF1ZSBwb3NzdWVtIG8gc2Nyb2xsIGrDoSBuYSBjYXJnYSBpbmljaWFsIGRvcyBkYWRvcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWluZmluaXRlLXNjcm9sbCcpIHNldCBpbmZpbml0ZVNjcm9sbCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luZmluaXRlU2Nyb2xsID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSAmJiB0aGlzLmhlaWdodCA+IDApO1xuICB9XG5cbiAgZ2V0IGluZmluaXRlU2Nyb2xsKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0ZVNjcm9sbDtcbiAgfVxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBwZXJjZW50dWFsIG5lY2Vzc8OhcmlvIHBhcmEgZGlzcGFyYXIgbyBldmVudG8gYHAtc2hvdy1tb3JlYCwgcXVlIMOpIHJlc3BvbnPDoXZlbCBwb3IgY2FycmVnYXIgbWFpcyBkYWRvcyBuYSB0YWJlbGEuIENhc28gbyB2YWxvciBpbmZvcm1hZG8gc2VqYSBtYWlvciBxdWUgMTAwIG91IG1lbm9yXG4gICAqIHF1ZSAwLCBvIHZhbG9yIHBhZHLDo28gc2Vyw6EgMTAwJVxuICAgKlxuICAgKiAqKkV4ZW1wbG9zOioqXG4gICAqICAtIHAtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlID0gODA6IFF1YW5kbyBhdGluZ2lyIDgwJSAgZG8gc2Nyb2xsIGRhIHRhYmVsYSwgbyBgcC1zaG93LW1vcmVgIHNlcsOhIGRpc3BhcmFkby5cbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwtZGlzdGFuY2UnKSBzZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZSA9IHZhbHVlID4gMTAwIHx8IHZhbHVlIDwgMCA/IDEwMCA6IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXRlU2Nyb2xsRGlzdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBVUkwgZGEgQVBJIHJlc3BvbnPDoXZlbCBwb3IgcmV0b3JuYXIgb3MgcmVnaXN0cm9zLlxuICAgKlxuICAgKiBBbyByZWFsaXphciBhIGJ1c2NhIGRlIG1haXMgcmVnaXN0cm9zIHZpYSBwYWdpbmHDp8OjbyAoQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zKSwgc2Vyw6EgZW52aWFkbyBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgLCBjb25mb3JtZSBhYmFpeG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFyIG9yZGVuYcOnw6NvLCBhIGNvbHVuYSBvcmRlbmFkYSBzZXLDoSBlbnZpYWRhIGF0cmF2w6lzIGRvIHBhcsOibWV0cm8gYG9yZGVyYCwgcG9yIGV4ZW1wbG86XG4gICAqIC0gQ29sdW5hIGRlY3Jlc2NlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmb3JkZXI9LW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIC0gQ29sdW5hIGFzY2VuZGVudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZvcmRlcj1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiA+IEVzdGEgVVJMIGRldmUgcmV0b3JuYXIgZSByZWNlYmVyIG9zIGRhZG9zIG5vIHBhZHLDo28gZGUgW0FQSSBkbyBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKS5cbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlLWFwaScpIHNldCBzZXJ2aWNlQXBpKHNlcnZpY2U6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcnZpY2VBcGkgPSBzZXJ2aWNlO1xuICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLnNlcnZpY2VBcGksICdHRVQnKTtcbiAgICB0aGlzLmhhc1NlcnZpY2UgPSAhIXNlcnZpY2U7XG4gICAgdGhpcy5zaG93TW9yZURpc2FibGVkID0gIXRoaXMuaGFzU2VydmljZTtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgfVxuXG4gIGdldCBzZXJ2aWNlQXBpKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlQXBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVVJMIGRhIEFQSSByZXNwb25zw6F2ZWwgcG9yIGV4Y2x1aXIgb3MgcmVnaXN0cm9zLlxuICAgKlxuICAgKiBBbyBzZWxlY2lvbmFyIG8gYm90w6NvIGRlIGV4Y2x1aXIgaXRlbnMsIGVzc2EgdXJsIHNlcsOhIGV4ZWN1dGFkYSB1dGlsaXphbmRvIG8gcGFyw6JtZXRybyBlbnZpYWRvIG5hIHByb3ByaWVkYWRlIGBwLXBhcmFtLWRlbGV0ZS1hcGlgLlxuICAgKiBDYXNvIGVsYSBuw6NvIHNlamEgdXRpbGl6YWRhLCBvIHBhcsOibWV0cm8gcGFkcsOjbyBhIHNlciBlbnZpYWRvIHNlcsOhIGBpZGAuXG4gICAqXG4gICAqID4gRXN0YSBVUkwgZGV2ZSByZXRvcm5hciBlIHJlY2ViZXIgb3MgZGFkb3Mgbm8gcGFkcsOjbyBkZSBbQVBJIGRvIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpLlxuICAgKi9cbiAgQElucHV0KCdwLXNlcnZpY2UtZGVsZXRlJykgc2V0IHNlcnZpY2VEZWxldGVBcGkoc2VydmljZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VydmljZURlbGV0ZUFwaSA9IHNlcnZpY2U7XG4gICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuc2VydmljZURlbGV0ZUFwaSwgJ0RFTEVURScpO1xuICB9XG5cbiAgZ2V0IHNlcnZpY2VEZWxldGVBcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VEZWxldGVBcGk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBSZXNwb25zw6F2ZWwgcG9yIGFwbGljYXIgZXNwYcOnYW1lbnRvIG5hcyBjb2x1bmFzLlxuICAgKlxuICAgKiBEZXZlIHJlY2ViZXIgdW0gZG9zIHZhbG9yZXMgZG8gZW51bSBgUG9UYWJsZUNvbHVtblNwYWNpbmdgLlxuICAgKlxuICAgKiBWYWxvciBgc21hbGxgIHPDsyBmdW5jaW9uYSBlbSB0YWJlbGFzIG7Do28gaW50ZXJhdGl2YXMuIENhc28gc2VqYSBzZXRhZG8gY29tIGBzbWFsbGAgZSBhIHRhYmVsYSBzZWphIGludGVyYXRpdmEsIG8gdmFsb3Igc2Vyw6EgcmV0b3JuYWRvIHBhcmEgYG1lZGl1bWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBtZWRpdW1gXG4gICAqL1xuICBASW5wdXQoJ3Atc3BhY2luZycpIHNldCBzcGFjaW5nKHZhbHVlOiBQb1RhYmxlQ29sdW1uU3BhY2luZykge1xuICAgIGlmICh2YWx1ZSA9PT0gJ3NtYWxsJyB8fCB2YWx1ZSA9PT0gJ21lZGl1bScgfHwgdmFsdWUgPT09ICdsYXJnZScpIHtcbiAgICAgIHRoaXMuX3NwYWNpbmcgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3BhY2luZyA9IFBvVGFibGVDb2x1bW5TcGFjaW5nLk1lZGl1bTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3BhY2luZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3BhY2luZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhcyBjb2x1bmFzIHF1ZSBzZXLDo28gZmlsdHJhZGFzIG5vIGNhbXBvIGRlIHBlc3F1aXNhLlxuICAgKiBBY2VpdGEgdW0gYXJyYXkgZGUgc3RyaW5ncywgcmVwcmVzZW50YW5kbyBhcyBjb2x1bmFzIGVzcGVjw61maWNhcyBxdWUgc2Vyw6NvIGNvbnNpZGVyYWRhcyBuYSBmaWx0cmFnZW0uXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyZWQtY29sdW1ucycpIHNldCBmaWx0ZXJlZENvbHVtbnModmFsdWVzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fZmlsdGVyZWRDb2x1bW5zID0gdmFsdWVzO1xuICB9XG5cbiAgZ2V0IGZpbHRlcmVkQ29sdW1ucygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc0NvbHVtbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucyAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBoYXNJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCk7XG4gIH1cblxuICBnZXQgbmFtZUNvbHVtbkRldGFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgPyB0aGlzLmNvbHVtbk1hc3RlckRldGFpbC5wcm9wZXJ0eSA6IG51bGw7XG4gIH1cblxuICBnZXQgdmFsaWRDb2x1bW5zKCkge1xuICAgIGNvbnN0IHR5cGVzVmFsaWQgPSBbXG4gICAgICAnc3RyaW5nJyxcbiAgICAgICdudW1iZXInLFxuICAgICAgJ2Jvb2xlYW4nLFxuICAgICAgJ2RhdGUnLFxuICAgICAgJ3RpbWUnLFxuICAgICAgJ2RhdGVUaW1lJyxcbiAgICAgICdjdXJyZW5jeScsXG4gICAgICAnc3VidGl0bGUnLFxuICAgICAgJ2xpbmsnLFxuICAgICAgJ2xhYmVsJyxcbiAgICAgICdpY29uJyxcbiAgICAgICdjZWxsVGVtcGxhdGUnLFxuICAgICAgJ2NvbHVtblRlbXBsYXRlJ1xuICAgIF07XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+ICFjb2wudHlwZSB8fCB0eXBlc1ZhbGlkLmluY2x1ZGVzKGNvbC50eXBlKSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYWN0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aW9ucyAmJiB0aGlzLmFjdGlvbnMuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24gJiYgYWN0aW9uLnZpc2libGUgIT09IGZhbHNlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29sdW1uc1xuICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKVxuICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLnByb3BlcnR5IHx8IGNvbHVtbi5sYWJlbCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzb3J0VHlwZSgpOiBQb1RhYmxlQ29sdW1uU29ydFR5cGUge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcgPyBQb1RhYmxlQ29sdW1uU29ydFR5cGUuQXNjZW5kaW5nIDogUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBvIG1vZG8gZHJhZyBhbmQgZHJvcCBwYXJhIGFzIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZHJhZ2dhYmxlJykgc2V0IGRyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kcmFnZ2FibGUgPSBkcmFnZ2FibGUgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgZHJhZ2dhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9kcmFnZ2FibGU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBvVGFibGVTZXJ2aWNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZVNlbGVjdCB8fCB0aGlzLmhpZGVTZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgICB0aGlzLmhpZGVTZWxlY3RBbGwgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmhlaWdodCkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcih0aGlzLmhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsUm93cygpIHtcbiAgICBpZiAoIXRoaXMuaGlkZVNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSAhdGhpcy5zZWxlY3RBbGw7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdEFsbDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmVtaXRTZWxlY3RBbGxFdmVudHModGhpcy5zZWxlY3RBbGwsIFsuLi50aGlzLml0ZW1zXSk7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2VsZWN0ZWQgPSAhcm93LiRzZWxlY3RlZDtcblxuICAgIHRoaXMuZW1pdFNlbGVjdEV2ZW50cyhyb3cpO1xuXG4gICAgdGhpcy5jb25maWdBZnRlclNlbGVjdFJvdyh0aGlzLml0ZW1zLCByb3cpO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRMaXN0KCk7XG4gIH1cblxuICBoYXNTZWxlY3RhYmxlUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5zZWxlY3RhYmxlRW50aXJlTGluZTtcbiAgfVxuXG4gIHNlbGVjdERldGFpbFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMuZW1pdFNlbGVjdEV2ZW50cyhyb3cpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRMaXN0KCkge1xuICAgIHRoaXMuaXRlbXNTZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLiRzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLml0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmNvbG9yID8gYHBvLXRleHQtJHt0aGlzLmdldENvbHVtbkNvbG9yKHJvdywgY29sdW1uKX1gIDogJyc7XG4gIH1cblxuICB0b2dnbGVEZXRhaWwocm93OiBhbnkpIHtcbiAgICBjb25zdCByb3dTaG93RGV0YWlsID0gcm93LiRzaG93RGV0YWlsO1xuICAgIGlmICh0aGlzLmF1dG9Db2xsYXBzZSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUFsbEl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3csICFyb3dTaG93RGV0YWlsKTtcbiAgICB0aGlzLmVtaXRFeHBhbmRFdmVudHMocm93KTtcbiAgfVxuXG4gIHRvZ2dsZVJvd0FjdGlvbihyb3c6IGFueSkge1xuICAgIGNvbnN0IHRvZ2dsZVNob3dBY3Rpb24gPSByb3cuJHNob3dBY3Rpb247XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS4kc2hvd0FjdGlvbikge1xuICAgICAgICBpdGVtLiRzaG93QWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcm93LiRzaG93QWN0aW9uID0gIXRvZ2dsZVNob3dBY3Rpb247XG4gIH1cblxuICBzb3J0Q29sdW1uKGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5zb3J0IHx8IGNvbHVtbi50eXBlID09PSAnZGV0YWlsJyB8fCBjb2x1bW4uc29ydGFibGUgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0ZWRDb2x1bW4uYXNjZW5kaW5nID0gdGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkgPT09IGNvbHVtbiA/ICF0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcgOiB0cnVlO1xuXG4gICAgdGhpcy5zb3J0QXJyYXkoY29sdW1uLCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcpO1xuICAgIHRoaXMuc29ydEJ5LmVtaXQoeyBjb2x1bW4sIHR5cGU6IHRoaXMuc29ydFR5cGUgfSk7XG4gICAgaWYgKHRoaXMuaGFzU2VydmljZSAmJiB0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuc29ydFN0b3JlID0geyBjb2x1bW4sIHR5cGU6IHRoaXMuc29ydFR5cGUgfTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSA9IGNvbHVtbjtcbiAgfVxuXG4gIG9uU2hvd01vcmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydCA9IHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5ID8geyBjb2x1bW46IHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0eXBlOiB0aGlzLnNvcnRUeXBlIH0gOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5oYXNTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnBhZ2UrKztcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRpbmdTaG93TW9yZSA9IHRydWU7XG5cbiAgICAgIHRoaXMucG9UYWJsZVNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgLi4uZGF0YS5pdGVtc107XG4gICAgICAgIHRoaXMuc2hvd01vcmVEaXNhYmxlZCA9ICFkYXRhLmhhc05leHQ7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdTaG93TW9yZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TW9yZS5lbWl0KHNvcnQpO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRJdGVtcyhxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogUXVlcnlQYXJhbXNUeXBlIH0pOiBPYnNlcnZhYmxlPFBvVGFibGVSZXNwb25zZUFwaT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zOiBQb1RhYmxlRmlsdGVyZWRJdGVtc1BhcmFtcyA9IHRoaXMuZ2V0RmlsdGVyZWRQYXJhbXMocXVlcnlQYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMucG9UYWJsZVNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcyk7XG4gIH1cblxuICBzZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhkYXRhOiBQb1RhYmxlUmVzcG9uc2VBcGkpIHtcbiAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcyB8fCBbXTtcbiAgICB0aGlzLnNob3dNb3JlRGlzYWJsZWQgPSAhZGF0YS5oYXNOZXh0O1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZURhdGEocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnBhcmFtc0ZpbHRlciA9IHBhcmFtcztcbiAgICAgIHRoaXMuZ2V0RmlsdGVyZWRJdGVtcyhwYXJhbXMpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5zZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhkYXRhKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0Q29sdW1ucyhpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLmZpbHRlcihrZXkgPT4gdHlwZW9mIGl0ZW1ba2V5XSAhPT0gJ29iamVjdCcpXG4gICAgICAubWFwKGtleSA9PiAoeyBsYWJlbDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSksIHByb3BlcnR5OiBrZXkgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNob3dEZXRhaWwocm93SWRlbnRpZmllcjogYW55IHwgbnVtYmVyLCBpc1Nob3dEZXRhaWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc1Jvd0luZGV4ID0gdHlwZW9mIHJvd0lkZW50aWZpZXIgPT09ICdudW1iZXInICYmIHRoaXMuaXRlbXNbcm93SWRlbnRpZmllcl07XG5cbiAgICBjb25zdCByb3cgPSBpc1Jvd0luZGV4ID8gdGhpcy5pdGVtc1tyb3dJZGVudGlmaWVyXSA6IHJvd0lkZW50aWZpZXI7XG5cbiAgICByb3cuJHNob3dEZXRhaWwgPSBpc1Nob3dEZXRhaWw7XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlQWxsSXRlbXMoaXRlbXM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+KSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS4kc2hvd0RldGFpbCkge1xuICAgICAgICB0aGlzLnNldFNob3dEZXRhaWwoaXRlbSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmVtaXRFeHBhbmRFdmVudHMoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25maWdBZnRlclNlbGVjdFJvdyhyb3dzOiBBcnJheTxhbnk+LCByb3cpIHtcbiAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3QpIHtcbiAgICAgIHRoaXMudW5zZWxlY3RPdGhlclJvd3Mocm93cywgcm93KTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZGVTZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5pc0V2ZXJ5U2VsZWN0ZWQocm93cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RXhwYW5kRXZlbnRzKHJvdzogYW55KSB7XG4gICAgcm93LiRzaG93RGV0YWlsID8gdGhpcy5leHBhbmRlZC5lbWl0KHJvdykgOiB0aGlzLmNvbGxhcHNlZC5lbWl0KHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3RBbGxFdmVudHMoc2VsZWN0QWxsOiBib29sZWFuLCByb3dzOiBhbnkpIHtcbiAgICBzZWxlY3RBbGwgPyB0aGlzLmFsbFNlbGVjdGVkLmVtaXQocm93cykgOiB0aGlzLmFsbFVuc2VsZWN0ZWQuZW1pdChyb3dzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdEV2ZW50cyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2VsZWN0ZWQgPyB0aGlzLnNlbGVjdGVkLmVtaXQocm93KSA6IHRoaXMudW5zZWxlY3RlZC5lbWl0KHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbkNvbG9yKHJvdywgY29sdW1uKSB7XG4gICAgY29uc3QgY29sdW1uQ29sb3IgPSBjb2x1bW4uY29sb3I7XG5cbiAgICByZXR1cm4gaXNUeXBlb2YoY29sdW1uQ29sb3IsICdmdW5jdGlvbicpID8gY29sdW1uQ29sb3Iocm93LCBjb2x1bW4ucHJvcGVydHkpIDogY29sdW1uQ29sb3I7XG4gIH1cblxuICAvLyBSZXRvcm5hIGEgY29sdW5hIGRhIGxpc3RhIGRlIGNvbHVuYXMgcXVlIMOpIGRvIHRpcG8gZGV0YWlsXG4gIHByaXZhdGUgZ2V0Q29sdW1uTWFzdGVyRGV0YWlsKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnR5cGUgPT09ICdkZXRhaWwnKTtcbiAgfVxuXG4gIC8vIENvbHVuYXMgcXVlIHPDo28gaW5zZXJpZGFzIG5vIDxoZWFkPiBkYSB0YWJlbGFcbiAgcHJpdmF0ZSBnZXRNYWluQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wudmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgLy8gUmV0b3JuYSBhcyBjb2x1bmFzIGNvbSBzdGF0dXNcbiAgcHJpdmF0ZSBnZXRTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC50eXBlID09PSAnc3VidGl0bGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFdmVyeVNlbGVjdGVkKGl0ZW1zOiBBcnJheTxhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc29tZUNoZWNrZWRPckluZGV0ZXJtaW5hdGUgPSBpdGVtID0+IGl0ZW0uJHNlbGVjdGVkIHx8IGl0ZW0uJHNlbGVjdGVkID09PSBudWxsO1xuICAgIGNvbnN0IGV2ZXJ5Q2hlY2tlZCA9IGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQ7XG5cbiAgICBpZiAoaXRlbXMuZXZlcnkoZXZlcnlDaGVja2VkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW1zLnNvbWUoc29tZUNoZWNrZWRPckluZGV0ZXJtaW5hdGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlQ29sdW1ucygpIHtcbiAgICB0aGlzLnNldE1haW5Db2x1bW5zKCk7XG4gICAgdGhpcy5zZXRDb2x1bW5NYXN0ZXJEZXRhaWwoKTtcbiAgICB0aGlzLnNldFN1YnRpdGxlQ29sdW1ucygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyZWRDb2x1bW5zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbHVtbkxpbmsoKSB7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGlmIChjb2x1bW5bJ3R5cGUnXSA9PT0gJ2xpbmsnICYmICFjb2x1bW5bJ2xpbmsnXSkge1xuICAgICAgICBjb2x1bW5bJ2xpbmsnXSA9ICdsaW5rJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sdW1uTWFzdGVyRGV0YWlsKCkge1xuICAgIHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsID0gdGhpcy5nZXRDb2x1bW5NYXN0ZXJEZXRhaWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWFpbkNvbHVtbnMoKSB7XG4gICAgdGhpcy5tYWluQ29sdW1ucyA9IHRoaXMuZ2V0TWFpbkNvbHVtbnMoKTtcblxuICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgPSAhIXRoaXMubWFpbkNvbHVtbnMubGVuZ3RoO1xuXG4gICAgdGhpcy5hbGxDb2x1bW5zV2lkdGhQaXhlbHMgPSB0aGlzLnZlcmlmeVdpZHRoQ29sdW1uc1BpeGVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgdGhpcy5zdWJ0aXRsZUNvbHVtbnMgPSB0aGlzLmdldFN1YnRpdGxlQ29sdW1ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0QXJyYXkoY29sdW1uOiBQb1RhYmxlQ29sdW1uLCBhc2NlbmRpbmc6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpdGVtc0xpc3QgPSB0aGlzLmhlaWdodCA/IFsuLi50aGlzLmZpbHRlcmVkSXRlbXNdIDogdGhpcy5maWx0ZXJlZEl0ZW1zO1xuICAgIGl0ZW1zTGlzdC5zb3J0KChsZWZ0U2lkZSwgcmlnaHRTaWRlKTogbnVtYmVyID0+XG4gICAgICBzb3J0VmFsdWVzKGxlZnRTaWRlW2NvbHVtbi5wcm9wZXJ0eV0sIHJpZ2h0U2lkZVtjb2x1bW4ucHJvcGVydHldLCBhc2NlbmRpbmcpXG4gICAgKTtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IGl0ZW1zTGlzdDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuc2VsZWN0T3RoZXJSb3dzKHJvd3M6IEFycmF5PGFueT4sIHJvdykge1xuICAgIHJvd3MuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtICE9PSByb3cpIHtcbiAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SW50ZXJhY3RpdmVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGhhc0xpbmtPckRldGFpbCA9IHRoaXMuY29sdW1ucy5maW5kKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ2xpbmsnIHx8IGNvbHVtbi50eXBlID09PSAnZGV0YWlsJyk7XG4gICAgaWYgKHRoaXMuc3BhY2luZyA9PT0gJ3NtYWxsJyAmJiAodGhpcy5zZWxlY3RhYmxlIHx8IGhhc0xpbmtPckRldGFpbCB8fCB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDApKSB7XG4gICAgICB0aGlzLnNwYWNpbmcgPSBQb1RhYmxlQ29sdW1uU3BhY2luZy5NZWRpdW07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlXaWR0aENvbHVtbnNQaXhlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzTWFpbkNvbHVtbnMgPyB0aGlzLm1haW5Db2x1bW5zLmV2ZXJ5KGNvbHVtbiA9PiBjb2x1bW4ud2lkdGggJiYgY29sdW1uLndpZHRoLmluY2x1ZGVzKCdweCcpKSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZXJ2aWNlKHNlcnZpY2U6IHN0cmluZywgbWV0aG9kOiAnR0VUJyB8ICdERUxFVEUnKSB7XG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnBvVGFibGVTZXJ2aWNlLnNldFVybChzZXJ2aWNlLCBtZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRQYXJhbXMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgY29uc3QgeyBwYWdlLCBwYWdlU2l6ZSwgc29ydFN0b3JlIH0gPSB0aGlzO1xuXG4gICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSB7fTtcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuZ2V0T3JkZXJQYXJhbShzb3J0U3RvcmUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHsgcGFnZSwgcGFnZVNpemUsIG9yZGVyLCAuLi5xdWVyeVBhcmFtcyB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgcGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZFBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3JkZXJQYXJhbShzb3J0OiBQb1RhYmxlQ29sdW1uU29ydCA9IHsgdHlwZTogdW5kZWZpbmVkIH0pIHtcbiAgICBjb25zdCB7IGNvbHVtbiwgdHlwZSB9ID0gc29ydDtcblxuICAgIGlmICghY29sdW1uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFBvVGFibGVDb2x1bW5Tb3J0VHlwZS5EZXNjZW5kaW5nKSB7XG4gICAgICByZXR1cm4gYC0ke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtjb2x1bW4ucHJvcGVydHl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUHJvcGVydHlGaXhlZChhcnI6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gYXJyLm1hcChvYmogPT4ge1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgnZml4ZWQnKSkge1xuICAgICAgICBvYmouZml4ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoaGVpZ2h0KTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hlY2tJbmZpbml0ZVNjcm9sbCgpO1xufVxuIl19
|
|
@@ -10590,11 +10590,11 @@ class PoLabelComponent {
|
|
|
10590
10590
|
}] }); })();
|
|
10591
10591
|
|
|
10592
10592
|
const _c0$1d = ["checkboxLabel"];
|
|
10593
|
-
function
|
|
10594
|
-
i0.ɵɵelement(0, "po-label",
|
|
10593
|
+
function PoCheckboxComponent_po_label_4_Template(rf, ctx) { if (rf & 1) {
|
|
10594
|
+
i0.ɵɵelement(0, "po-label", 5);
|
|
10595
10595
|
} if (rf & 2) {
|
|
10596
|
-
const
|
|
10597
|
-
i0.ɵɵproperty("p-disabled",
|
|
10596
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
10597
|
+
i0.ɵɵproperty("p-disabled", ctx_r1.disabled)("p-for", ctx_r1.id)("p-label", ctx_r1.label);
|
|
10598
10598
|
} }
|
|
10599
10599
|
/**
|
|
10600
10600
|
* @docsExtends PoCheckboxBaseComponent
|
|
@@ -10682,19 +10682,19 @@ class PoCheckboxComponent extends PoCheckboxBaseComponent {
|
|
|
10682
10682
|
useExisting: forwardRef(() => PoCheckboxComponent),
|
|
10683
10683
|
multi: true
|
|
10684
10684
|
}
|
|
10685
|
-
]), i0.ɵɵInheritDefinitionFeature], decls:
|
|
10685
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 9, consts: [[1, "container-po-checkbox", 3, "click", "keydown"], ["role", "checkbox", 1, "po-checkbox-outline", 3, "tabindex"], ["checkboxLabel", ""], ["aria-label", " ", 1, "po-checkbox", 3, "id"], ["class", "po-checkbox-label", "tabindex", "-1", 3, "p-disabled", "p-for", "p-label", 4, "ngIf"], ["tabindex", "-1", 1, "po-checkbox-label", 3, "p-disabled", "p-for", "p-label"]], template: function PoCheckboxComponent_Template(rf, ctx) { if (rf & 1) {
|
|
10686
10686
|
i0.ɵɵelementStart(0, "div", 0);
|
|
10687
10687
|
i0.ɵɵlistener("click", function PoCheckboxComponent_Template_div_click_0_listener() { return ctx.checkOption(ctx.checkboxValue); })("keydown", function PoCheckboxComponent_Template_div_keydown_0_listener($event) { return ctx.onKeyDown($event, ctx.checkboxValue); });
|
|
10688
|
-
i0.ɵɵelementStart(1, "div", 1);
|
|
10689
|
-
i0.ɵɵelement(
|
|
10690
|
-
i0.ɵɵtemplate(
|
|
10688
|
+
i0.ɵɵelementStart(1, "div", 1, 2);
|
|
10689
|
+
i0.ɵɵelement(3, "span", 3);
|
|
10690
|
+
i0.ɵɵtemplate(4, PoCheckboxComponent_po_label_4_Template, 1, 3, "po-label", 4);
|
|
10691
10691
|
i0.ɵɵelementEnd()();
|
|
10692
10692
|
} if (rf & 2) {
|
|
10693
10693
|
i0.ɵɵattribute("checked", ctx.checkboxValue);
|
|
10694
10694
|
i0.ɵɵadvance(1);
|
|
10695
10695
|
i0.ɵɵproperty("tabindex", ctx.disabled || ctx.disabladTabindex ? -1 : 0);
|
|
10696
10696
|
i0.ɵɵattribute("p-size", ctx.size)("aria-checked", ctx.checkboxValue);
|
|
10697
|
-
i0.ɵɵadvance(
|
|
10697
|
+
i0.ɵɵadvance(2);
|
|
10698
10698
|
i0.ɵɵproperty("id", ctx.id);
|
|
10699
10699
|
i0.ɵɵattribute("aria-checked", ctx.checkboxValue)("aria-disabled", ctx.disabled)("required", ctx.checkBoxRequired);
|
|
10700
10700
|
i0.ɵɵadvance(1);
|
|
@@ -10709,7 +10709,7 @@ class PoCheckboxComponent extends PoCheckboxBaseComponent {
|
|
|
10709
10709
|
useExisting: forwardRef(() => PoCheckboxComponent),
|
|
10710
10710
|
multi: true
|
|
10711
10711
|
}
|
|
10712
|
-
], template: "<div\n class=\"container-po-checkbox\"\n [attr.checked]=\"checkboxValue\"\n (click)=\"checkOption(checkboxValue)\"\n (keydown)=\"onKeyDown($event, checkboxValue)\"\n>\n <div\n role=\"checkbox\"\n class=\"po-checkbox-outline\"\n [attr.p-size]=\"size\"\n [tabindex]=\"disabled || disabladTabindex ? -1 : 0\"\n [attr.aria-checked]=\"checkboxValue\"\n >\n <span\n [attr.aria-checked]=\"checkboxValue\"\n aria-label=\" \"\n [id]=\"id\"\n class=\"po-checkbox\"\n [attr.aria-disabled]=\"disabled\"\n [attr.required]=\"checkBoxRequired\"\n >\n </span>\n\n <po-label\n
|
|
10712
|
+
], template: "<div\n class=\"container-po-checkbox\"\n [attr.checked]=\"checkboxValue\"\n (click)=\"checkOption(checkboxValue)\"\n (keydown)=\"onKeyDown($event, checkboxValue)\"\n>\n <div\n #checkboxLabel\n role=\"checkbox\"\n class=\"po-checkbox-outline\"\n [attr.p-size]=\"size\"\n [tabindex]=\"disabled || disabladTabindex ? -1 : 0\"\n [attr.aria-checked]=\"checkboxValue\"\n >\n <span\n [attr.aria-checked]=\"checkboxValue\"\n aria-label=\" \"\n [id]=\"id\"\n class=\"po-checkbox\"\n [attr.aria-disabled]=\"disabled\"\n [attr.required]=\"checkBoxRequired\"\n >\n </span>\n\n <po-label\n *ngIf=\"label\"\n class=\"po-checkbox-label\"\n tabindex=\"-1\"\n [p-disabled]=\"disabled\"\n [p-for]=\"id\"\n [p-label]=\"label\"\n >\n </po-label>\n </div>\n</div>\n" }]
|
|
10713
10713
|
}], function () { return [{ type: i0.ChangeDetectorRef }]; }, { checkboxLabel: [{
|
|
10714
10714
|
type: ViewChild,
|
|
10715
10715
|
args: ['checkboxLabel', { static: true }]
|
|
@@ -12695,7 +12695,7 @@ class PoCheckboxGroupComponent extends PoCheckboxGroupBaseComponent {
|
|
|
12695
12695
|
if (this.checkboxLabels && !this.disabled) {
|
|
12696
12696
|
const checkboxLabel = this.checkboxLabels.find((_, index) => !this.options[index].disabled);
|
|
12697
12697
|
if (checkboxLabel) {
|
|
12698
|
-
checkboxLabel.nativeElement.focus();
|
|
12698
|
+
checkboxLabel.checkboxLabel.nativeElement.focus();
|
|
12699
12699
|
}
|
|
12700
12700
|
}
|
|
12701
12701
|
}
|
|
@@ -20185,10 +20185,10 @@ class PoTableBaseComponent {
|
|
|
20185
20185
|
this.subtitleColumns = this.getSubtitleColumns();
|
|
20186
20186
|
}
|
|
20187
20187
|
sortArray(column, ascending) {
|
|
20188
|
-
const itemsList = this.height ? [...this.
|
|
20188
|
+
const itemsList = this.height ? [...this.filteredItems] : this.filteredItems;
|
|
20189
20189
|
itemsList.sort((leftSide, rightSide) => sortValues(leftSide[column.property], rightSide[column.property], ascending));
|
|
20190
20190
|
if (this.height) {
|
|
20191
|
-
this.
|
|
20191
|
+
this.filteredItems = itemsList;
|
|
20192
20192
|
}
|
|
20193
20193
|
}
|
|
20194
20194
|
unselectOtherRows(rows, row) {
|
|
@@ -28320,9 +28320,9 @@ const poLookupLiteralsDefault = {
|
|
|
28320
28320
|
modalDisclaimerGroupTitle: 'Apresentando resultados filtrados por:'
|
|
28321
28321
|
},
|
|
28322
28322
|
ru: {
|
|
28323
|
-
modalPrimaryActionLabel: '
|
|
28324
|
-
modalSecondaryActionLabel: '
|
|
28325
|
-
modalPlaceholder: '
|
|
28323
|
+
modalPrimaryActionLabel: 'Выбрать',
|
|
28324
|
+
modalSecondaryActionLabel: 'Отменить',
|
|
28325
|
+
modalPlaceholder: 'Поиск',
|
|
28326
28326
|
modalTitle: 'Выберите запись',
|
|
28327
28327
|
modalTableNoColumns: poTableLiteralsDefault.ru.noColumns,
|
|
28328
28328
|
modalTableNoData: poTableLiteralsDefault.ru.noData,
|
|
@@ -28331,8 +28331,8 @@ const poLookupLiteralsDefault = {
|
|
|
28331
28331
|
modalAdvancedSearch: 'Расширенный поиск',
|
|
28332
28332
|
modalAdvancedSearchTitle: 'Расширенный поиск',
|
|
28333
28333
|
modalAdvancedSearchPrimaryActionLabel: 'Фильтр',
|
|
28334
|
-
modalAdvancedSearchSecondaryActionLabel: '
|
|
28335
|
-
modalDisclaimerGroupTitle: '
|
|
28334
|
+
modalAdvancedSearchSecondaryActionLabel: 'Назад',
|
|
28335
|
+
modalDisclaimerGroupTitle: 'Представленные результаты отфильтрованы по:'
|
|
28336
28336
|
}
|
|
28337
28337
|
};
|
|
28338
28338
|
/**
|