nsc-react-component 3.2.6 → 3.2.7
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/lib/base/table/index.d.ts +2 -0
- package/lib/base/table/index.js +11 -1
- package/lib/base/table/index.js.map +1 -1
- package/lib/page/BasePage/Form.d.ts +1 -0
- package/lib/page/BasePage/Form.js +36 -31
- package/lib/page/BasePage/Form.js.map +1 -1
- package/lib/page/BasePage/index.d.ts +3 -0
- package/lib/page/BasePage/index.js +26 -13
- package/lib/page/BasePage/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -104,6 +104,8 @@ declare class NSCTable extends React.Component<INSCTableProps, any> {
|
|
|
104
104
|
orderItems: string;
|
|
105
105
|
};
|
|
106
106
|
isBeyond(e: any): boolean;
|
|
107
|
+
setSelectedRowKeys(data: Array<String | Number>): void;
|
|
108
|
+
setSelectedRowDatas(data: Array<Object>): void;
|
|
107
109
|
getColumns(): any;
|
|
108
110
|
renderToolBar(): React.JSX.Element;
|
|
109
111
|
getSelectedRowKeys(): any;
|
package/lib/base/table/index.js
CHANGED
|
@@ -454,6 +454,16 @@ class NSCTable extends React.Component {
|
|
|
454
454
|
};
|
|
455
455
|
return !textRange(ev.target); // target可以保证当前划过的dom节点一直保持是:el-tooltip__trigger
|
|
456
456
|
}
|
|
457
|
+
setSelectedRowKeys(data) {
|
|
458
|
+
this.setState({
|
|
459
|
+
selectedRowKeys: data
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
setSelectedRowDatas(data) {
|
|
463
|
+
this.setState({
|
|
464
|
+
selectedRowDatas: data
|
|
465
|
+
});
|
|
466
|
+
}
|
|
457
467
|
getColumns() {
|
|
458
468
|
const {
|
|
459
469
|
columns,
|
|
@@ -985,4 +995,4 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
985
995
|
}
|
|
986
996
|
});
|
|
987
997
|
export default withZhLocale(NSCTable);
|
|
988
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJmaWx0ZXIiLCJleHRyYSIsIl9yZWYyIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJfZXhjbHVkZWQyIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib3B0aW9ucyIsImNhbGxiYWNrIiwiZGF0YUNoYW5nZWQiLCJtb2RlbERhdGEiLCJwYWdpbmciLCJnZXRQYWdpbmF0aW9uIiwib25FcnJvckxvYWQiLCJlcnIiLCJyZXNwb25zZSIsImF1dG9Mb2FkIiwiT2JqZWN0IiwiYXNzaWduIiwiY3VycmVudCIsImNvbXBvbmVudERpZE1vdW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJlU3RhdGUiLCJyZXNldENvbHVtbiIsIm5ld0NvbHMiLCJjb2xzcyIsIm1hcCIsImNvbCIsInRlbXAiLCJvbkhlYWRlckNlbGwiLCJjb2x1bW4iLCJoYW5kbGVSZXNpemUiLCJwdXNoIiwiY2xlYXJTZWxlY3RDb2xvciIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwib25DaGFuZ2UiLCJmaWx0ZXJzIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiaXNCZXlvbmQiLCJldmVudCIsInRleHRSYW5nZSIsImVsIiwidGV4dENvbnRlbnQiLCJ0YXJnZXRXIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmFuZ2UiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjaGlsZE5vZGVzIiwicmFuZ2VXaWR0aCIsImdldENvbHVtbnMiLCJzb3J0RmllbGRzIiwiZGVmYXVsdFNob3dDb2xzIiwiZWxsaXBzaXMiLCJyZW5kZXIiLCJzaG93VGl0bGUiLCJ0ZXh0IiwidGl0bGUiLCJjbGFzc05hbWUiLCJzdHlsZSIsImluZGV4T2YiLCJzb3J0T3JkZXIiLCJtdWx0aXBsZSIsIml0ZW0iLCJmaWx0ZXJQcm9wcyIsIm9iaiIsInNlYXJjaEtleSIsIkRpdiIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwicmVmIiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsIl9yZWYzIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIl9TcGFjZSIsIl9CdXR0b24iLCJvbkNsaWNrIiwiX3RoaXMkdGFibGVTZWFyY2hSZWYkIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwicmVuZGVyVG9vbEJhciIsImNvbExpc3RzIiwidG9vbGJhciIsInRhYmxlVG9vbCIsInN0b3JlUmVxdWVzdENvbmZpZyIsInRvb2xzIiwidG9vbHNDbGljayIsIm9uVG9vbENsaWNrIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiRnJhZ21lbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiX0NoZWNrYm94IiwiR3JvdXAiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJfUG9wb3ZlciIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJvdmVybGF5U3R5bGUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvblJlZnJlc2giLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwicm93Q2xhc3NOYW1lIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJfUGFnaW5hdGlvbiIsInBhZ2UiLCJhY3Rpb24iLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBhZ2luYXRpb24sXHJcbiAgUG9wb3ZlcixcclxuICBTcGFjZSxcclxuICBUYWJsZSxcclxuICBUYWJsZVByb3BzLFxyXG4gIFRvb2x0aXAsXHJcbn0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgQ29sdW1uVHlwZSwgVGFibGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSBcImFudGQvbGliL3RhYmxlXCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEbmRQcm92aWRlciB9IGZyb20gXCJyZWFjdC1kbmRcIjtcclxuaW1wb3J0IEJvZHlSb3csIHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfSBmcm9tIFwiLi4vY29tbW9uL0JvZHlSb3dcIjtcclxuaW1wb3J0IHRyZWVVdGlscyBmcm9tIFwiLi4vLi4vdHJlZVV0aWxzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuY29uc3QgeyBCb2R5Um93Q29tcG9uZW50LCBIVE1MNUJhY2tlbmQgfSA9IEJvZHlSb3c7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IHsgUmVzaXphYmxlIH0gZnJvbSBcInJlYWN0LXJlc2l6YWJsZVwiO1xyXG5pbXBvcnQgXCIuL3Jlc2l6ZS5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgRWxsaXBzZUNlbGwgZnJvbSBcIi4uL2NvbW1vbi9FbGxpcHNlQ2VsbFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBJRHJhZ1BhcmFtcyB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBpZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4vLyBpbnRlcmZhY2UgU3RvcmVQcm9wcyB7fVxyXG5cclxuZXhwb3J0IHR5cGUgU3RvcmVUeXBlID0gXCJQYWdlU3RvcmVcIiB8IFwiVHJlZVN0b3JlXCIgfCBcIkJhc2VTdG9yZVwiO1xyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUGFnaW5hdGlvbiBleHRlbmRzIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgdG90YWxLZXk/OiBzdHJpbmc7XHJcbiAgcGFnZVNpemVLZXk/OiBzdHJpbmc7XHJcbiAgY3VycmVudEtleT86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFRvb2xCYXJQcm9wcyB7XHJcbiAgc2hvdzogYm9vbGVhbjtcclxuICB0b29scz86IEFycmF5PHN0cmluZz47XHJcbiAgb25Ub29sQ2xpY2s/OiB7IG9uUmVmcmVzaD86IGFueTsgb25Tb3J0PzogYW55IH07XHJcbn1cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZVByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93VG90YWw/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgLvmnaHmlbDkv6Hmga/vvIzpu5jorqR0cnVlXHJcbiAgZHJhZ2FibGU/OiBib29sZWFuOyAvLyDmmK/lkKblj6/mi5bliqgsIOm7mOiupGZhbHNlXHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy8g5piv5ZCm5pSv5oyB6L+H5ruk5pi+56S66KGo5qC85YiXLCDpu5jorqR0cnVlXHJcbiAgbW92ZVJvdz86IChwYXJhbXM6IElEcmFnUGFyYW1zKSA9PiB2b2lkOyAvLyDmi5bmi73lrozmiJDlkI7nmoTlm57osINcclxuICBkcmFnVXJsPzogc3RyaW5nOyAvLyDkv53lrZjmi5bmi73mjpLluo/nmoTmjqXlj6NcclxuICBwYWdpbmF0aW9uPzogZmFsc2UgfCBOU0NUYWJsZVBhZ2luYXRpb247XHJcbiAgYXV0b1BhZ2luYXRpb24/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqjlpITnkIbliIbpobVcclxuICBhdXRvU29ydD86IGJvb2xlYW47IC8v57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5o6S5bqPXHJcbiAgYXV0b09uQ2hhbmdlPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqob25DaGFuZ2UsIGZhbHNl5YiZ5LiN5YGa5Lu75L2V5aSE55CG5YWo6YOo5Lqk57uZ6LCD55So5pa5XHJcbiAgcmVzaXplQ29sdW1uPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGRzPzogQXJyYXk8c3RyaW5nPjsgLy/pnIDopoHmjpLluo/nmoTlrZfmrrVJbmRleFxyXG4gIHRvb2xiYXI/OiBUb29sQmFyUHJvcHMgfCBib29sZWFuO1xyXG4gIGF1dG9TaXplPzogYm9vbGVhbjtcclxuICBzb3J0U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmt7vliqDmjpLluo/mn6Xor6Is6buY6K6kdHJ1ZVxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElOU0NUYWJsZVByb3BzID0gdHlwZW9mIE5TQ1RhYmxlLmRlZmF1bHRQcm9wcyAmIE5TQ1RhYmxlUHJvcHM7XHJcbmV4cG9ydCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH07XHJcblxyXG5jb25zdCBSZXNpemVhYmxlVGl0bGUgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIGNvbnN0IHsgb25SZXNpemUsIHdpZHRoLCAuLi5yZXN0UHJvcHMgfSA9IHByb3BzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8UmVzaXphYmxlXHJcbiAgICAgIHdpZHRoPXt3aWR0aCB8fCAxNTB9XHJcbiAgICAgIGhlaWdodD17MH1cclxuICAgICAgb25SZXNpemU9e29uUmVzaXplfVxyXG4gICAgICBkcmFnZ2FibGVPcHRzPXt7IGVuYWJsZVVzZXJTZWxlY3RIYWNrOiBmYWxzZSB9fVxyXG4gICAgPlxyXG4gICAgICA8dGggey4uLnJlc3RQcm9wc30gLz5cclxuICAgIDwvUmVzaXphYmxlPlxyXG4gICk7XHJcbn07XHJcbmNsYXNzIE5TQ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElOU0NUYWJsZVByb3BzLCBhbnk+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgICByZXNpemVDb2x1bW46IHRydWUsXHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIG9uVG9vbENsaWNrOiB7fSBhcyBhbnksXHJcbiAgICB9IGFzIGFueSxcclxuICB9O1xyXG5cclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgdGhJY29uUmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIHRhYmxlU2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgbGlzdGVuZXJzID0ge1xyXG4gICAgb25CZWZvcmVMb2FkOiBudWxsLFxyXG4gICAgbG9hZDogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb21wb25lbnRzID0ge1xyXG4gICAgaGVhZGVyOiB7XHJcbiAgICAgIGNlbGw6IFJlc2l6ZWFibGVUaXRsZSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCBtb2RhbCA9IHByb3BzLnR5cGUgfHwgXCJhdXRvXCI7XHJcbiAgICBsZXQgc3RvcmVQcmVmaXggPSBnZXRTdG9yYWdlKFwic3RvcmUtcHJlLWtleVwiKTtcclxuICAgIGxldCBhdXRvVHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIGF1dG9UeXBlID0gYXV0b1R5cGU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICBkYXRhU291cmNlOiBbXSxcclxuICAgICAgY29sdW1uczogW10sXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAvL+aQnOe0ouaWh+acrFxyXG4gICAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogbnVsbCxcclxuICAgICAgc2VhcmNoQ29sb3I6IG51bGwsXHJcbiAgICAgIGNvbHM6IFtdLFxyXG4gICAgICBzb3J0czogW10sXHJcbiAgICAgIGZpbHRlclBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8IGF1dG9UeXBlIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICBzb3J0VHlwZTogXCJzaW5nbGVcIixcclxuICAgICAgc29ydGVyOiBbXSwgLy/orrDlvZXlvZPliY3mjpLluo/lrZfmrrVcclxuICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICBkZWZhdWx0U29ydDogdHJ1ZSxcclxuICAgICAgY2hlY2tDb2x1bW46IFtdLFxyXG4gICAgICBkZWZhdWx0Q2hlY2s6IHRydWUsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICBmaWx0ZXI6IFtdLFxyXG4gICAgICBleHRyYToge30sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgZXh0cmEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBwYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcywgLi4ucGFyYW1zLCAuLi5hc2NQYXJhbXMgfTtcclxuICAgICAgYXV0b1NvcnQgJiYgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG5cclxuICAgIGF1dG9QYWdpbmF0aW9uICYmIGhhbmRsZVBhZ2luYXRpb24oKTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGlmIChjaGVja2VkVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6Iez5bCR5pi+56S65LiA5YiX77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJDb2x1bW5zID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcCgoY29sOiBDb2x1bW5UeXBlPHt9PikgPT4ge1xyXG4gICAgICBjb25zdCBuZXdDb2wgPSB7IC4uLmNvbCB9IGFzIENvbHVtblR5cGU8e30+ICYgeyBpbml0U2hvdzogYm9vbGVhbiB9O1xyXG4gICAgICBpZiAoY2hlY2tlZFZhbHVlLmluY2x1ZGVzKGNvbC5kYXRhSW5kZXgpKSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3Q29sO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHVtbnM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U29ydFBhcmFtKHNvcnRlciwgc29ydFN0YXRlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBjb25zdCB7IHNvcnRTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFzb3J0U2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGxldCBzb3J0SW5mbyA9IHt9O1xyXG4gICAgbGV0IG9yZGVySXRlbXMgPSBbXTtcclxuICAgIGlmICghaXNFbXB0eU9iaihzb3J0ZXIpICYmICFpc011bHRpcGxlICYmIHNvcnRlci5jb2x1bW4pIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBpc0JleW9uZChlKSB7XHJcbiAgICBjb25zdCBldiA9IHdpbmRvdy5ldmVudCB8fCBlOyAvLyDmtY/op4jlmajlhbzlrrnvvIzmnIDlpb3lhpnkuIDkuItcclxuICAgIGNvbnN0IHRleHRSYW5nZSA9IChlbCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZXh0Q29udGVudCA9IGVsO1xyXG4gICAgICBjb25zdCB0YXJnZXRXID0gdGV4dENvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dENvbnRlbnQsIDApO1xyXG4gICAgICByYW5nZS5zZXRFbmQodGV4dENvbnRlbnQsIHRleHRDb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoKTtcclxuICAgICAgY29uc3QgcmFuZ2VXaWR0aCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICByZXR1cm4gcmFuZ2VXaWR0aCA+IHRhcmdldFc7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuICF0ZXh0UmFuZ2UoZXYudGFyZ2V0KTsgLy8gdGFyZ2V05Y+v5Lul5L+d6K+B5b2T5YmN5YiS6L+H55qEZG9t6IqC54K55LiA55u05L+d5oyB5pivOmVsLXRvb2x0aXBfX3RyaWdnZXJcclxuICB9XHJcblxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgdGl0bGU9e3RleHR9XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGV4dFwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogY29sLndpZHRoIHx8IFwiMTAwJVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1zcGFjZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtEaXZ9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1idXR0b25cIil9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1NwYWNlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZpbHRlckljb246ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDxTZWFyY2hPdXRsaW5lZCAvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmosXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xzW2luZGV4XSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcbiAgcmVuZGVyVG9vbEJhcigpIHtcclxuICAgIGxldCB7IHRhYmxlU2l6ZSwgY29sdW1ucywgc29ydFR5cGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBmaWx0ZXJDb2x1bW4sIGNvbHVtbnM6IGNvbExpc3RzLCB0b29sYmFyIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wsIHN0b3JlUmVxdWVzdENvbmZpZyA9IHt9IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX0+XHJcbiAgICAgICAgICDooajmoLzlr4bluqZcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcImNvbHVtblwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGgtYXBwLXN0b3JlLWljb25cIil9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgICAgdGFibGVTaXplLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KFxyXG4gICAgICAgIHRoaXMucHJvcHMsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgICAgXCJjb2x1bW5zXCIsXHJcbiAgICAgICAgICBcInJlc2V0Q29sdW1uXCIsXHJcbiAgICAgICAgICBcInRvb2xiYXJcIixcclxuICAgICAgICAgIFwic29ydEZpZWxkc1wiLFxyXG4gICAgICAgICAgXCJmaWx0ZXJDb2x1bW5cIixcclxuICAgICAgICAgIFwic29ydFNlYXJjaFwiLFxyXG4gICAgICAgICAgXCJzaG93Um93U2VsZWN0aW9uXCIsXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UoX3RoaXMuc3RhdGUucGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBgJHtzdHlsZXNbXCJuc2MtdGFibGUtY2xpY2tSb3dTdHlsZVwiXX1gXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRyZWVVdGlscy5nZXRTZWFyY2hNZW51RGF0YXMoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yXHJcbiAgICAgICk7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhLnRyZWVEYXRhcztcclxuICAgICAgcHJvcHMuZXhwYW5kZWRSb3dLZXlzID0gZGF0YS5vcGVuS2V5cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgcHJvcHMuc3RvcmUgPSBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgIHByb3BzLnN0b3JlLmF1dG9Mb2FkID0gcHJvcHMuc3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgY29uc3QgeyBkcmFnYWJsZSB9ID0gX3RoaXMucHJvcHM7XHJcbiAgICBjb25zdCBkcmFnYWJsZVByb3BzID1cclxuICAgICAgZHJhZ2FibGUgPT09IHRydWVcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBsZXQgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgcmVzaXplUHJvcHMgPVxyXG4gICAgICByZXNpemVDb2x1bW4gPT09IHRydWUgPyB7IGNvbXBvbmVudHM6IHRoaXMuY29tcG9uZW50cyB9IDogbnVsbDtcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHRydWU7XHJcbiAgICBsZXQgdG9vbHByb3BzID1cclxuICAgICAgdGhpcy5wcm9wcy50b29sYmFyID09PSBmYWxzZSB8fCB0aGlzLnByb3BzLnRvb2xiYXI/LnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICghdG9vbHByb3BzKSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdG9vbHByb3BzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbEZsYWcgPSB0YWJsZVRvb2wuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGVcIil9PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50XCIpLCBwcm9wcy5jbGFzc05hbWUpfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogKFxyXG4gICAgICAgICAgICAgIDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtbm9kYXRhXCIpfSAvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgICAgcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAvLyBzdHlsZT17eyBoZWlnaHQ6IDYwMCB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAge3Byb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtcGFnaW5hdGlvblwiKX0+XHJcbiAgICAgICAgICAgIDxQYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgey4uLnByb3BzLnBhZ2luYXRpb259XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdlLCBwYWdlU2l6ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB0aGlzLnN0YXRlLmV4dHJhO1xyXG4gICAgICAgICAgICAgICAgZXh0cmEuYWN0aW9uID0gXCJwYWdpbmF0ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShcclxuICAgICAgICAgICAgICAgICAgeyBjdXJyZW50OiBwYWdlLCBwYWdlU2l6ZSB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpbHRlcixcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zb3J0ZXIsXHJcbiAgICAgICAgICAgICAgICAgIGV4dHJhXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRyYWdhYmxlID09PSB0cnVlID8gKFxyXG4gICAgICA8RG5kUHJvdmlkZXIgYmFja2VuZD17SFRNTDVCYWNrZW5kfT57RGVmYXVsdFRhYmxlfTwvRG5kUHJvdmlkZXI+XHJcbiAgICApIDogKFxyXG4gICAgICBEZWZhdWx0VGFibGVcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5l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
|
|
998
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJmaWx0ZXIiLCJleHRyYSIsIl9yZWYyIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJfZXhjbHVkZWQyIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib3B0aW9ucyIsImNhbGxiYWNrIiwiZGF0YUNoYW5nZWQiLCJtb2RlbERhdGEiLCJwYWdpbmciLCJnZXRQYWdpbmF0aW9uIiwib25FcnJvckxvYWQiLCJlcnIiLCJyZXNwb25zZSIsImF1dG9Mb2FkIiwiT2JqZWN0IiwiYXNzaWduIiwiY3VycmVudCIsImNvbXBvbmVudERpZE1vdW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJlU3RhdGUiLCJyZXNldENvbHVtbiIsIm5ld0NvbHMiLCJjb2xzcyIsIm1hcCIsImNvbCIsInRlbXAiLCJvbkhlYWRlckNlbGwiLCJjb2x1bW4iLCJoYW5kbGVSZXNpemUiLCJwdXNoIiwiY2xlYXJTZWxlY3RDb2xvciIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwib25DaGFuZ2UiLCJmaWx0ZXJzIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiaXNCZXlvbmQiLCJldmVudCIsInRleHRSYW5nZSIsImVsIiwidGV4dENvbnRlbnQiLCJ0YXJnZXRXIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmFuZ2UiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjaGlsZE5vZGVzIiwicmFuZ2VXaWR0aCIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJnZXRDb2x1bW5zIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsInRpdGxlIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJpbmRleE9mIiwic29ydE9yZGVyIiwibXVsdGlwbGUiLCJpdGVtIiwiZmlsdGVyUHJvcHMiLCJvYmoiLCJzZWFyY2hLZXkiLCJEaXYiLCJwbGFjZWhvbGRlciIsImNvbmNhdCIsInJlZiIsInRhYmxlU2VhcmNoUmVmIiwiZmlsdGVyRHJvcGRvd24iLCJfcmVmMyIsInNldFNlbGVjdGVkS2V5cyIsInNlbGVjdGVkS2V5cyIsImNvbmZpcm0iLCJjbGVhckZpbHRlcnMiLCJfU3BhY2UiLCJfQnV0dG9uIiwib25DbGljayIsIl90aGlzJHRhYmxlU2VhcmNoUmVmJCIsIm5ld0ZpbHRlclBhcmFtcyIsImtleSIsImdldFZhbHVlIiwic29ydFBhcmFtIiwiZmlsdGVySWNvbiIsInJlbmRlclRvb2xCYXIiLCJjb2xMaXN0cyIsInRvb2xiYXIiLCJ0YWJsZVRvb2wiLCJzdG9yZVJlcXVlc3RDb25maWciLCJ0b29scyIsInRvb2xzQ2xpY2siLCJvblRvb2xDbGljayIsInNpemVJdGVtIiwic29ydEl0ZW0iLCJzb3J0Q29udGVudCIsIkZyYWdtZW50IiwiY3Vyc29yIiwiY29sb3IiLCJzaXplQ29udGVudCIsIl9DaGVja2JveCIsIkdyb3VwIiwiYmluZCIsImxhYmVsIiwidmFsdWUiLCJkaXNhYmxlZCIsImZvbnRTaXplIiwiX1BvcG92ZXIiLCJwbGFjZW1lbnQiLCJ0cmlnZ2VyIiwib3ZlcmxheVN0eWxlIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsIm1hcmdpblJpZ2h0Iiwib25SZWZyZXNoIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwicm93U2VsZWN0aW9uT25TZWxlY3QiLCJzZWxlY3RlZCIsInJvd0tleSIsIm5ld1NlbGVjdGVkUm93S2V5cyIsIm5ld1NlbGVjdGVkUm93RGF0YXMiLCJzcGxpY2UiLCJyb3dTZWxlY3Rpb25PblNlbGVjdEFsbCIsInNlbGVjdGVkUm93cyIsImNoYW5nZVJvd3MiLCJuZXdpZHMiLCJuZXdkYXRhcyIsImNoYW5nZUlkcyIsIl90aGlzJHByb3BzJHRvb2xiYXIiLCJvbWl0IiwiY2xpY2tDaGFuZ2VDb2xvciIsInBvc2l0aW9uIiwic2hvd1NpemVDaGFuZ2VyIiwic2hvd1F1aWNrSnVtcGVyIiwic2hvd1RvdGFsIiwidG90YWwiLCJfcmVmNCIsImZyb20iLCJ0byIsIm9uUm93Rm4iLCJvblJvdyIsImN1c3RvbSIsIm9uQ2xpY2tGbiIsInJvd0NsYXNzTmFtZSIsIm5ld0RhdGFTb3VyY2UiLCJnZXRTZWFyY2hNZW51RGF0YXMiLCJ0cmVlRGF0YXMiLCJleHBhbmRlZFJvd0tleXMiLCJvcGVuS2V5cyIsImRyYWdhYmxlIiwiZHJhZ2FibGVQcm9wcyIsImNvbXBvbmVudHMiLCJyZXNpemVQcm9wcyIsInRvb2xGbGFnIiwidG9vbHByb3BzIiwic2hvdyIsInNob3dSb3dTZWxlY3Rpb24iLCJyb3dTZWxlY3Rpb24iLCJvblNlbGVjdCIsIm9uU2VsZWN0QWxsIiwiY29sdW1uV2lkdGgiLCJEZWZhdWx0VGFibGUiLCJfVGFibGUiLCJfZXh0ZW5kcyIsImNoaWxkcmVuQ29sdW1uTmFtZSIsInNoZWl0ZW0iLCJsb2NhbGUiLCJlbXB0eVRleHQiLCJzY3JvbGwiLCJ4IiwiX1BhZ2luYXRpb24iLCJwYWdlIiwiYWN0aW9uIiwiYmFja2VuZCIsImRyYWdVcmwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQYWdpbmF0aW9uLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjtcclxuICByb3dLZXk/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRyYWdhYmxlOiBmYWxzZSxcclxuICAgIHNob3dUb3RhbDogdHJ1ZSxcclxuICAgIGZpbHRlckNvbHVtbjogdHJ1ZSxcclxuICAgIGRyYWdVcmw6IFwiXCIsXHJcbiAgICBhdXRvUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgIGF1dG9Tb3J0OiB0cnVlLFxyXG4gICAgYXV0b09uQ2hhbmdlOiB0cnVlLFxyXG4gICAgcmVzaXplQ29sdW1uOiB0cnVlLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICBvblRvb2xDbGljazoge30gYXMgYW55LFxyXG4gICAgfSBhcyBhbnksXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICB0YWJsZVNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGxpc3RlbmVycyA9IHtcclxuICAgIG9uQmVmb3JlTG9hZDogbnVsbCxcclxuICAgIGxvYWQ6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50cyA9IHtcclxuICAgIGhlYWRlcjoge1xyXG4gICAgICBjZWxsOiBSZXNpemVhYmxlVGl0bGUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgbW9kYWwgPSBwcm9wcy50eXBlIHx8IFwiYXV0b1wiO1xyXG4gICAgbGV0IHN0b3JlUHJlZml4ID0gZ2V0U3RvcmFnZShcInN0b3JlLXByZS1rZXlcIik7XHJcbiAgICBsZXQgYXV0b1R5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBhdXRvVHlwZSA9IGF1dG9UeXBlPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgcGFnaW5hdGlvbjoge30sXHJcbiAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgLy/mkJzntKLmlofmnKxcclxuICAgICAgc2VhcmNoVGV4dDogbnVsbCxcclxuICAgICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICAgIHNlYXJjaENvbG9yOiBudWxsLFxyXG4gICAgICBjb2xzOiBbXSxcclxuICAgICAgc29ydHM6IFtdLFxyXG4gICAgICBmaWx0ZXJQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB8fCBhdXRvVHlwZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgc29ydFR5cGU6IFwic2luZ2xlXCIsXHJcbiAgICAgIHNvcnRlcjogW10sIC8v6K6w5b2V5b2T5YmN5o6S5bqP5a2X5q61XHJcbiAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgZGVmYXVsdFNvcnQ6IHRydWUsXHJcbiAgICAgIGNoZWNrQ29sdW1uOiBbXSxcclxuICAgICAgZGVmYXVsdENoZWNrOiB0cnVlLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgZmlsdGVyOiBbXSxcclxuICAgICAgZXh0cmE6IHt9LFxyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBwcm9wcy5zdG9yZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQcm9wcyA9IHt9LCAuLi5yZXN0U3RvcmUgfSA9XHJcbiAgICAgICAgcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICAgIGNvbnN0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IChzdG9yZSwgb3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25CZWZvcmVMb2FkLCB0aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhZ2luZyA9ICEodGhpcy5wcm9wcy5wYWdpbmF0aW9uID09PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChwYWdpbmcgJiYgIXRoaXMucHJvcHMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogc3RvcmUuZ2V0UGFnaW5hdGlvbigpLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSwgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmRhdGFDaGFuZ2VkLCB0aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgICAgcGFnaW5nLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5sb2FkLCB0aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uRXJyb3JMb2FkOiAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uRXJyb3JMb2FkLCB0aGlzLCBbZXJyLCByZXNwb25zZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGE6IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA/IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA6IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgID8gcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIC4uLnJlc3RTdG9yZSxcclxuICAgICAgICBhdXRvTG9hZDogcmVzdFN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBQYWdlU3RvcmUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgc3RvcmVQcm9wcywge1xyXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBjdXJyZW50OiAxLCAuLi50aGlzLnByb3BzLnBhZ2luYXRpb24gfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzaXplID1cclxuICAgIChpbmRleDogYW55KSA9PlxyXG4gICAgKGU6IGFueSwgeyBzaXplIH06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgIGNvbnN0IG5leHRDb2x1bW5zID0gWy4uLmNvbHNdO1xyXG4gICAgICBuZXh0Q29sdW1uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgLi4ubmV4dENvbHVtbnNbaW5kZXhdLFxyXG4gICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2xzOiBuZXh0Q29sdW1ucyxcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnByb3BzLnN0b3JlO1xyXG4gICAgaWYgKHN0b3JlICYmIHN0b3JlLmRhdGEpIHtcclxuICAgICAgdGhpcy5zdG9yZS5zZXREYXRhKHN0b3JlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGxpc3Rlbk1lc3NhZ2UgPSAoZXYpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB0eXBlb2YgZXYuZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZXYuZGF0YSkgOiBldi5kYXRhO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PSBcImNoYW5nZVRhYmxlU2l6ZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGF0YTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcImRlZmF1bHRcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcInNtYWxsXCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJtaWRkbGVcIlxyXG4gICAgICApIHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHRhYmxlU2l6ZTogcGF5bG9hZC5zaXplIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChwcmVTdGF0ZS5jb2xzICE9PSB0aGlzLnN0YXRlLmNvbHMpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q29sdW1uKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcmV2UHJvcHMuc2l6ZSAhPT0gdGhpcy5wcm9wcy5zaXplKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldENvbHVtbigpIHtcclxuICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IG5ld0NvbHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGNvbHNzID0gY29scyB8fCBbXTtcclxuICAgIGNvbHNzLm1hcCgoY29sOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIG9uSGVhZGVyQ2VsbDogKGNvbHVtbjogeyB3aWR0aDogYW55IH0pID0+ICh7XHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxyXG4gICAgICAgICAgb25SZXNpemU6IHRoaXMuaGFuZGxlUmVzaXplKGluZGV4KSxcclxuICAgICAgICB9KSxcclxuICAgICAgfTtcclxuICAgICAgbmV3Q29scy5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgY29sdW1uczogbmV3Q29scyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk6YCJ5Lit6aKc6ImyXHJcbiAgICovXHJcbiAgY2xlYXJTZWxlY3RDb2xvcigpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVJbmRleDogLTEgfSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGdldFBhZ2luYXRpb25CeVN0b3JlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0UGFnaW5hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBhdXRvT25DaGFuZ2UgPSB0cnVlLFxyXG4gICAgICBhdXRvU29ydCxcclxuICAgICAgYXV0b1BhZ2luYXRpb24sXHJcbiAgICAgIG9uQ2hhbmdlLFxyXG4gICAgICBzdG9yZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgaWYgKGF1dG9PbkNoYW5nZSA9PT0gZmFsc2UgfHwgIXN0b3JlKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYW5kbGVQYWdpbmF0aW9uID0gKCkgPT4ge1xyXG4gICAgICBsZXQgcGFyYW1zID0ge30gYXMge1xyXG4gICAgICAgIHNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgcGFnZVNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgYXNjcz86IHN0cmluZztcclxuICAgICAgICBkZXNjcz86IHN0cmluZztcclxuICAgICAgICBbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZztcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy5nZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHx8IHt9O1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmoocGFnaW5hdGlvbikpIHtcclxuICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgW3BhZ2luZy5jdXJyZW50S2V5IHx8IFwiY3VycmVudFwiXTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgW3BhZ2luZy5wYWdlU2l6ZUtleSB8fCBcInNpemVcIl06IHBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgcCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFzY1BhcmFtcyA9IHRoaXMuZ2V0U29ydFBhcmFtKHNvcnRlciwgdHJ1ZSk7XHJcbiAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlciB9KTtcclxuICAgICAgfSBlbHNlIGlmICghaXNNdWx0aXBsZSAmJiAhaXNFbXB0eU9iaihzb3J0ZXIpKSB7XHJcbiAgICAgICAgc29ydGVyLmNvbHVtbiAmJlxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW3NvcnRlcl0sIGRlZmF1bHRTb3J0OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgIGV4dHJhLFxyXG4gICAgICB9KTtcclxuICAgICAgcGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMsIC4uLnBhcmFtcywgLi4uYXNjUGFyYW1zIH07XHJcbiAgICAgIGF1dG9Tb3J0ICYmIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbkNoYW5nZUZuID0gdGhpcy5wcm9wcy5vbkNoYW5nZTtcclxuXHJcbiAgICBhdXRvUGFnaW5hdGlvbiAmJiBoYW5kbGVQYWdpbmF0aW9uKCk7XHJcbiAgICAvLyDnlKjmiLfkvKDkuoZvbkNoYW5nZeS/neeVmeeUqOaIt+iHquS4u+WkhOeQhuihqOagvOWPmOWMlueahOadg+WKm1xyXG4gICAgaWYgKG9uQ2hhbmdlRm4pIHtcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DaGFuZ2VGbiwgdGhpcywgW3BhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmFdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0b3JlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5bmlbDmja7mqKHlnovlr7nosaFcclxuICAgKi9cclxuICBnZXRNb2RlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE1vZGVsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDoj5zljZXmkJzntKLov4fmu6TmmL7npLpcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgaGFuZGxlU2VhcmNoKHZhbCwgZmllbGRPcHRpb24sIHNlYXJjaENvbG9yKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VhcmNoVGV4dDogdmFsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogZmllbGRPcHRpb24sXHJcbiAgICAgIHNlYXJjaENvbG9yOiBzZWFyY2hDb2xvcixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qih5Z2X5YiX6KGo56e75Yqo5o6S5bqPXHJcbiAgICovXHJcbiAgbW92ZVJvdyA9IChkcmFnSW5kZXgsIGhvdmVySW5kZXgsIGRyYWcsIHRhcmdldCkgPT4ge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGRyYWdOb2RlID0gZHJhZy5yZWNvcmQ7XHJcbiAgICBsZXQgdGFyZ2V0Tm9kZSA9IHRhcmdldC5yZWNvcmQ7XHJcbiAgICBkcmFnTm9kZS5tb3ZlQXJyYXkoZHJhZ05vZGUsIHRhcmdldE5vZGUpO1xyXG4gICAgbGV0IGlkcyA9IGRyYWdOb2RlLnBhcmVudE5vZGUuZ2V0Q2hpbGROb2RlSWRzKCk7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogZHJhZ05vZGUuaWQsXHJcbiAgICAgIHBhcmVudElkOiBkcmFnTm9kZS5hdHRyaWJ1dGUucGFyZW50SWQsXHJcbiAgICAgIGlkczogaWRzLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5tb3ZlUm93KSB7XHJcbiAgICAgIHRoaXMucHJvcHMubW92ZVJvdyhwYXJhbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWx0ZXJDb2x1bW4oY2hlY2tlZFZhbHVlKSB7XHJcbiAgICBpZiAoY2hlY2tlZFZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuiHs+WwkeaYvuekuuS4gOWIl++8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+IHtcclxuICAgICAgY29uc3QgbmV3Q29sID0geyAuLi5jb2wgfSBhcyBDb2x1bW5UeXBlPHt9PiAmIHsgaW5pdFNob3c6IGJvb2xlYW4gfTtcclxuICAgICAgaWYgKGNoZWNrZWRWYWx1ZS5pbmNsdWRlcyhjb2wuZGF0YUluZGV4KSkge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld0NvbDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2x1bW5zOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2xzOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFNvcnRQYXJhbShzb3J0ZXIsIHNvcnRTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgY29uc3QgeyBzb3J0U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghc29ydFNlYXJjaCkge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgICBsZXQgc29ydEluZm8gPSB7fTtcclxuICAgIGxldCBvcmRlckl0ZW1zID0gW107XHJcbiAgICBpZiAoIWlzRW1wdHlPYmooc29ydGVyKSAmJiAhaXNNdWx0aXBsZSAmJiBzb3J0ZXIuY29sdW1uKSB7XHJcbiAgICAgIG9yZGVySXRlbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29sdW1uOiBzb3J0ZXIuY29sdW1uLmZpZWxkIHx8IHNvcnRlci5jb2x1bW4uZGF0YUluZGV4LFxyXG4gICAgICAgICAgYXNjOiBzb3J0ZXIub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICBpZiAoc29ydGVyLmNvbHVtbikgc29ydEluZm9bc29ydGVyLmNvbHVtbi5kYXRhSW5kZXhdID0gc29ydGVyLm9yZGVyO1xyXG4gICAgfSBlbHNlIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgIHNvcnRlci5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgc29ydEluZm9bdi5jb2x1bW4uZGF0YUluZGV4XSA9IHYub3JkZXI7XHJcbiAgICAgICAgbGV0IGZpZWxkID0gdi5jb2x1bW4uZmllbGQgfHwgdi5jb2x1bW4uZGF0YUluZGV4O1xyXG4gICAgICAgIG9yZGVySXRlbXMucHVzaCh7XHJcbiAgICAgICAgICBjb2x1bW46IGZpZWxkLFxyXG4gICAgICAgICAgYXNjOiB2Lm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHNvcnRTdGF0ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBzb3J0SW5mbzogc29ydEluZm8sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgb3JkZXJJdGVtczogSlNPTi5zdHJpbmdpZnkob3JkZXJJdGVtcykgfTtcclxuICB9XHJcbiAgaXNCZXlvbmQoZSkge1xyXG4gICAgY29uc3QgZXYgPSB3aW5kb3cuZXZlbnQgfHwgZTsgLy8g5rWP6KeI5Zmo5YW85a6577yM5pyA5aW95YaZ5LiA5LiLXHJcbiAgICBjb25zdCB0ZXh0UmFuZ2UgPSAoZWwpID0+IHtcclxuICAgICAgY29uc3QgdGV4dENvbnRlbnQgPSBlbDtcclxuICAgICAgY29uc3QgdGFyZ2V0VyA9IHRleHRDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcbiAgICAgIHJhbmdlLnNldFN0YXJ0KHRleHRDb250ZW50LCAwKTtcclxuICAgICAgcmFuZ2Uuc2V0RW5kKHRleHRDb250ZW50LCB0ZXh0Q29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCk7XHJcbiAgICAgIGNvbnN0IHJhbmdlV2lkdGggPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgcmV0dXJuIHJhbmdlV2lkdGggPiB0YXJnZXRXO1xyXG4gICAgfTtcclxuICAgIHJldHVybiAhdGV4dFJhbmdlKGV2LnRhcmdldCk7IC8vIHRhcmdldOWPr+S7peS/neivgeW9k+WJjeWIkui/h+eahGRvbeiKgueCueS4gOebtOS/neaMgeaYrzplbC10b29sdGlwX190cmlnZ2VyXHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Q29sdW1ucygpIHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgc29ydFR5cGUsIHNvcnRJbmZvIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzb3J0RmllbGRzID0gW10gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG4gICAgY29uc3QgY29scyA9IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGNvbC5lbGxpcHNpcyAmJiAhY29sLnJlbmRlcikge1xyXG4gICAgICAgIGNvbC5lbGxpcHNpcyA9IHtcclxuICAgICAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2wucmVuZGVyID0gKHRleHQpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICB0aXRsZT17dGV4dH1cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS10ZXh0XCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggfHwgXCIxMDAlXCIgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNvcnRGaWVsZHMuaW5kZXhPZihjb2wuZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKHNvcnRUeXBlID09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0geyBtdWx0aXBsZTogaW5kZXggfTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG4gICAgY29scy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihpdGVtLmZpbHRlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzZWFyY2hLZXkgfSA9IGl0ZW0uZmlsdGVyUHJvcHM7XHJcbiAgICAgICAgbGV0IERpdiA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRleHQgPSBpdGVtLnRpdGxlO1xyXG4gICAgICAgIERpdiA9IGdldE5vZGUodHlwZSwge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDmkJzntKIke3RleHR9YCxcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgcmVmOiB0aGlzLnRhYmxlU2VhcmNoUmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgIGZpbHRlckRyb3Bkb3duOiAoe1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgY29uZmlybSxcclxuICAgICAgICAgICAgY2xlYXJGaWx0ZXJzLFxyXG4gICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLXNwYWNlXCIpfT5cclxuICAgICAgICAgICAgICAgICAge0Rpdn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFNwYWNlPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaXRlbS5maWVsZCB8fCBpdGVtLmRhdGFJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbHRlclBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlYXJjaFJlZi5jdXJyZW50Py5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydFBhcmFtID0gdGhpcy5nZXRTb3J0UGFyYW0odGhpcy5zdGF0ZS5zb3J0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcywgLi4uc29ydFBhcmFtIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLWJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgIDogdG9vbHM7XHJcbiAgICAgIHRvb2xzQ2xpY2sgPSB0b29sYmFyLm9uVG9vbENsaWNrID8gdG9vbGJhci5vblRvb2xDbGljayA6IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2l6ZUl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5a695p2+XCIsIGtleTogXCJkZWZhdWx0XCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLkuK3nrYlcIiwga2V5OiBcIm1pZGRsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi57Sn5YeRXCIsIGtleTogXCJzbWFsbFwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydEl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5Y2V5a2X5q615o6S5bqPXCIsIGtleTogXCJzaW5nbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuWkmuWtl+auteaOkuW6j1wiLCBrZXk6IFwibXVsdGlwbGVcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY290ZW50LXRpdGxlXCIpfT5cclxuICAgICAgICAgIOihqOagvOWvhuW6plxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4gJiB7IGZpbHRlckNvbHVtbjogYm9vbGVhbjsgZGF0YUluZGV4OiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbC5kYXRhSW5kZXgpIHtcclxuICAgICAgICAgICAgICBjb2wuZGF0YUluZGV4ID0gY29sLnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogY29sLmZpbHRlckNvbHVtbiA9PT0gZmFsc2UsXHJcbiAgICAgICAgICAgIH0gYXMgQ2hlY2tib3hPcHRpb25UeXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgLy8gZGVmYXVsdFZhbHVlPXtkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpfVxyXG4gICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgIHRoaXMuc3RhdGUuZGVmYXVsdENoZWNrXHJcbiAgICAgICAgICAgID8gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuY2hlY2tDb2x1bW5cclxuICAgICAgICB9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS10aC1hcHAtc3RvcmUtaWNvblwiKX1cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic29ydFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c29ydENvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNpemVcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NpemVDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8Q29sdW1uSGVpZ2h0T3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInJlZnJlc2hcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQsIGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICBpZiAodG9vbHNDbGljay5vblJlZnJlc2gpIHtcclxuICAgICAgICAgICAgICAgIHRvb2xzQ2xpY2sub25SZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxSZWRvT3V0bGluZWQgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dEYXRhcztcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkW3Jvd0tleV1dO1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLm5ld1NlbGVjdGVkUm93RGF0YXMsIHJlY29yZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbVtyb3dLZXldID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IG5ld1NlbGVjdGVkUm93RGF0YXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG5ld2RhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bcm93S2V5XSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXMsIC4uLmNoYW5nZUlkc107XHJcbiAgICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhcywgLi4uY2hhbmdlUm93c107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3aWRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW1bcm93S2V5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3ZGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogWy4uLm5ld2lkc10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFsuLi5uZXdkYXRhc10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgICAgXCJzb3J0U2VhcmNoXCIsXHJcbiAgICAgICAgICBcInNob3dSb3dTZWxlY3Rpb25cIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShfdGhpcy5zdGF0ZS5wYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlc1tcIm5zYy10YWJsZS1jbGlja1Jvd1N0eWxlXCJdfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZVwiKX0+XHJcbiAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJhcigpfVxyXG4gICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lPVwiY2hpbGROb2Rlc1wiXHJcbiAgICAgICAgICBzaGVpdGVtXHJcbiAgICAgICAgICBkYXRhU291cmNlPXtuZXdEYXRhU291cmNlfVxyXG4gICAgICAgICAgY29sdW1ucz17dGhpcy5nZXRDb2x1bW5zKCl9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnRcIiksIHByb3BzLmNsYXNzTmFtZSl9XHJcbiAgICAgICAgICBsb2NhbGU9e3tcclxuICAgICAgICAgICAgZW1wdHlUZXh0OiAoXHJcbiAgICAgICAgICAgICAgPE5vRGF0YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1ub2RhdGFcIil9IC8+XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgc2Nyb2xsPXt7IHg6IFwibWF4LWNvbnRlbnRcIiB9fVxyXG4gICAgICAgICAgey4uLnJlc2l6ZVByb3BzfVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgey4uLmRyYWdhYmxlUHJvcHN9XHJcbiAgICAgICAgICBzaXplPXt0YWJsZVNpemV9XHJcbiAgICAgICAgICBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgIC8vIHN0eWxlPXt7IGhlaWdodDogNjAwIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgICB7cHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1wYWdpbmF0aW9uXCIpfT5cclxuICAgICAgICAgICAgPFBhZ2luYXRpb25cclxuICAgICAgICAgICAgICB7Li4ucHJvcHMucGFnaW5hdGlvbn1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2UsIHBhZ2VTaXplKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMuc3RhdGUuZXh0cmE7XHJcbiAgICAgICAgICAgICAgICBleHRyYS5hY3Rpb24gPSBcInBhZ2luYXRlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogeyBjdXJyZW50OiBwYWdlLCBwYWdlU2l6ZSB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKFxyXG4gICAgICAgICAgICAgICAgICB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNvcnRlcixcclxuICAgICAgICAgICAgICAgICAgZXh0cmFcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsY0FBYyxFQUNkQyxxQkFBcUIsRUFDckJDLHNCQUFzQixFQUN0QkMsWUFBWSxRQUNQLG1CQUFtQjtBQUMxQixTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssSUFBSUMsU0FBUyxRQUFvQixhQUFhO0FBQzFELFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFlN0MsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxPQUFPQyxPQUFPLElBQUlDLGNBQWMsRUFBRUMsYUFBYSxRQUFRLG1CQUFtQjtBQUMxRSxPQUFPQyxTQUFTLE1BQU0saUJBQWlCO0FBQ3ZDLE9BQU8scUJBQXFCO0FBQzVCLE1BQU07RUFBRUMsZ0JBQWdCO0VBQUVDO0FBQWEsQ0FBQyxHQUFHTCxPQUFPO0FBQ2xELE9BQU9NLFlBQVksTUFBTSx3QkFBd0I7QUFDakQsU0FBU0MsU0FBUyxRQUFRLGlCQUFpQjtBQUMzQyxPQUFPLHNCQUFzQjtBQUM3QixTQUFT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
|