nsc-react-component 4.2.5 → 4.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.
@@ -133,8 +133,8 @@ class BasePage extends PureComponent {
133
133
  initData && initData();
134
134
  }
135
135
  componentDidUpdate(prevProps) {
136
- var _this$pageRef$current;
137
- const elementHeight = (_this$pageRef$current = this.pageRef.current) === null || _this$pageRef$current === void 0 ? void 0 : _this$pageRef$current.clientHeight;
136
+ var _this$pageContentRef$2;
137
+ const elementHeight = (_this$pageContentRef$2 = this.pageContentRef.current) === null || _this$pageContentRef$2 === void 0 ? void 0 : _this$pageContentRef$2.clientHeight;
138
138
  if (elementHeight > this.state.elementHeight) {
139
139
  this.setState({
140
140
  elementHeight
@@ -1074,7 +1074,7 @@ class BasePage extends PureComponent {
1074
1074
  let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0; //头部搜索栏高度
1075
1075
  let toolHeight = tableTitle || toolFlag ? 50 : 0;
1076
1076
  let paddingHeight = 20 * 2; //上下间距
1077
- let tableContentHeight = elementHeight - toolHeight - paddingHeight - headerHeight;
1077
+ let tableContentHeight = elementHeight - paddingHeight;
1078
1078
  let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距
1079
1079
  let tableHeight = tableContentHeight - PaginationHeight;
1080
1080
  let tableSrollHeight = tableContentHeight - (this.state.tableHeaderHeight > 0 ? this.state.tableHeaderHeight : 55) - PaginationHeight;
@@ -1236,4 +1236,4 @@ class BasePage extends PureComponent {
1236
1236
  }
1237
1237
  _defineProperty(BasePage, "convertColumns", convertColumns);
1238
1238
  export default BasePage;
1239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJidXR0b25zTG9hZGluZyIsInRyZWVXaWR0aCIsInNob3dMZWZ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VDb250ZW50UmVmIiwiY2xpZW50SGVpZ2h0Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJzZXRUaW1lb3V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwicGFnZVJlZiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJHByb3BzJGZvcm1QYWdlUCIsImVkaXRvcmZsYWciLCJmb3JtUGFnZVByb3BzIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQMiIsImZ1bmNzIiwicGF0aG5hbWUiLCJjb25jYXQiLCJ0YWJsZUNvZGUiLCJpZCIsImhpc3RvcnkiLCJzZXJ2aWNlTmFtZSIsInNlcnZpY2VQYXRoIiwiRGF0ZSIsImdldFRpbWUiLCJ0aXRsZSIsIl90aGlzJGVkaXRvclJlZiIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVQb3NpdGlvbiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyb3dSZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2ZW50T3B0aW9uIiwiVWl0bHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJwdXNoIiwiZSIsImV2YWwiLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjExIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50MiIsImNvbnZlclBhcmFtcyIsImhhbmRsZU1vdXNlRG93biIsInByZXZlbnREZWZhdWx0IiwibWFzayIsImRvY3VtZW50IiwiY3NzVGV4dCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImhhbmRsZU1vdXNlTW92ZSIsIm5ld1dpZHRoIiwic2NyZWVuWCIsInRocm90dGxlZE1vdXNlTW92ZSIsImhhbmRsZU1vdXNlVXAiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZUNoaWxkIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQMyIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInBlcm1pc3Npb24iLCJoYXMiLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ3IiwibmV3VGFibGVTdG9yZSIsIl9uZXdUYWJsZVN0b3JlJHJlcXVlcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkOCIsInRhYmxlUGFyYW1zIiwibGlzdGVuZXJzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJ0YWJsZUxvYWRDYWxsQmFjayIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiZm9ybUJ1dHRvbiIsImJ1dHRvbk1hcCIsImVkaXRvciIsImRlbGV0ZSIsInNlYXJjaCIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsImRlZmF1bHRQcm9wcyIsIm9uRWRpdG9yIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhMiIsIm9uRWRpdG9yQ2FsbEJhY2siLCJvblNlYXJjaENhbGxCYWNrIiwiY2hlY2tQZXJzc2lvbiIsImluZGV4T2YiLCJvbkFkZCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25BZGRDYWxsQmFjayIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2NoaWxkJHByb3BzNCIsIl9jaGlsZCRwcm9wczUiLCJfY2hpbGQkcHJvcHM2IiwiX2NoaWxkJHByb3BzNyIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsIl9pdGVtJHByb3BzOCIsIl9pdGVtJHByb3BzOSIsImRhdGFJbmRleCIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwiUGFnaW5hdGlvbkhlaWdodCIsInBhZ2luYXRpb24iLCJ0YWJsZUhlaWdodCIsInRhYmxlU3JvbGxIZWlnaHQiLCJzY3JvbGwiLCJ4IiwieSIsInJlZiIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJvbk1vdXNlRG93biIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzExIiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xyXG5pbXBvcnQgQ29tcG91bmRlZFNwYWNlIGZyb20gXCJhbnRkL2VzL3NwYWNlXCI7XHJcbnR5cGUgQnV0dG9uSXRlbSA9XHJcbiAgfCBzdHJpbmdcclxuICB8IHtcclxuICAgICAgY29kZTogc3RyaW5nO1xyXG4gICAgICByZWNvcmRTaG93Pzogc3RyaW5nIHwgRnVuY3Rpb247XHJcbiAgICAgIHByb3BzPzogYW55O1xyXG4gICAgfTtcclxuXHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIEZvcm1QYWdlUHJvcHMge31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zPzogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBCdXR0b25JdGVtW107IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvcicsJ2RlbGV0ZV9iYXRjaCddXHJcbiAgb25TaG93Rm9ybT86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkhpZGVGb3JtPzogKCkgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkZvcm1DaGFuZ2U/OiAoY2hhbmdlZFZhbHVlcz86IGFueSwgYWxsVmFsdWVzPzogYW55KSA9PiB2b2lkOyAvL+ihqOWNlW9uQ2hhbmdl5Zue6LCDXHJcbiAgZm9ybVR5cGU/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiIHwgXCJwYWdlXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICB0YWJsZUxvYWRDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6Llm57osIMtLWxvYWRcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxuICBmb3JtUGFnZVByb3BzPzogRm9ybVBhZ2VQcm9wcztcclxuICBidXR0b25DbGljaz86IHtcclxuICAgIG9uQWRkPzogKCkgPT4gdm9pZDtcclxuICAgIG9uRWRpdG9yPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvbkRlbGV0ZT86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICB9O1xyXG4gIHBlcm1pc3Npb24/OiB7XHJcbiAgICBoYXM/OiBib29sZWFuO1xyXG4gICAgbWVudUNvZGU/OiBzdHJpbmc7XHJcbiAgfTtcclxuICByZXF1ZXN0UGFyYW1zPzoge1xyXG4gICAgLy/pnIDopoHpop3lpJbkvKDnmoTlm7rlrpror7fmsYLlj4LmlbBcclxuICAgIGFkZFBhcmFtcz86IE9iamVjdDsgLy/mlrDlop7lm7rlrprlj4LmlbBcclxuICAgIGVkaXRvclBhcmFtcz86IE9iamVjdDsgLy/nvJbovpHlm7rlrprlj4LmlbBcclxuICAgIHF1ZXJ5UGFyYW1zPzogT2JqZWN0OyAvL+afpeivouWbuuWumuWPguaVsFxyXG4gICAgZGVsZXRlUGFyYW1zPzogT2JqZWN0OyAvL+WIoOmZpOWbuuWumuWPguaVsFxyXG4gIH07XHJcbiAgcmVxdWVzdFVybHM/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmc7IC8v5paw5aKedXJsXHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmc7IC8v57yW6L6RdXJsXHJcbiAgICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgfTtcclxuICBmdW5jcz86IGFueTtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZUNvbnRlbnRSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgdGFibGVXcmFwcGVyUmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIHN0YXRpYyBjb252ZXJ0Q29sdW1ucyA9IGNvbnZlcnRDb2x1bW5zO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7IHN0b3JlUHJlZml4IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0eXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJmb3JtVHlwZVwiIDogXCJmb3JtVHlwZVwiXHJcbiAgICApO1xyXG4gICAgdHlwZSA9IHR5cGU/LmNvbnRlbnQ7XHJcbiAgICBsZXQgc2l6ZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgc2l6ZSA9IHNpemU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICBmb3JtVHlwZTogdHlwZSB8fCBcIm1vZGFsXCIsXHJcbiAgICAgIHRhYmxlU2l6ZTogc2l6ZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zOiBbXSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZUhlYWRlckhlaWdodDogMCwgLy8g5re75Yqg6KGo5aS06auY5bqm5Yiwc3RhdGVcclxuICAgICAgYnV0dG9uc0xvYWRpbmc6IHt9LFxyXG4gICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgLy8g5re75Yqg56qX5Y+jcmVzaXpl55uR5ZCsXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLnRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQpO1xyXG5cclxuICAgIC8vIOWIneWni+iuoeeul+ihqOWktOmrmOW6plxyXG4gICAgc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0LCAwKTtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlbWVudEhlaWdodCA+IHRoaXMuc3RhdGUuZWxlbWVudEhlaWdodCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMuc2hvd0xlZnQgIT09IHRoaXMucHJvcHMuc2hvd0xlZnQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVdpZHRoOiB0aGlzLnByb3BzLnNob3dMZWZ0ID8gMjYwIDogMCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgLy8g56e76ZmkcmVzaXpl55uR5ZCsXHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJyZXNpemVcIixcclxuICAgICAgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0XHJcbiAgICApO1xyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy5mb3JtVHlwZSA9PSBcInBhZ2VcIikge1xyXG4gICAgICBjb25zdCB7IGZ1bmNzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGxldCBwYXRobmFtZSA9IGAvZm9ybXBhZ2UvJHtlZGl0b3JmbGFnID8gZWRpdG9yZmxhZyA6IFwiYWRkXCJ9LyR7XHJcbiAgICAgICAgdGhpcy5wcm9wcy50YWJsZUNvZGVcclxuICAgICAgfWA7XHJcbiAgICAgIGlmIChlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIgfHwgZWRpdG9yZmxhZyA9PSBcInNlYXJjaFwiKSB7XHJcbiAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSArIFwiP2lkPVwiICsgdmFsdWUuaWQ7XHJcbiAgICAgIH1cclxuICAgICAgZnVuY3M/Lmhpc3RvcnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGF0aG5hbWU6IHBhdGhuYW1lLFxyXG4gICAgICAgICAgc2VydmljZU5hbWU6IFwic2V0dGluZy13ZWJcIixcclxuICAgICAgICAgIHNlcnZpY2VQYXRoOiBcIi9zZXR0aW5nXCIsXHJcbiAgICAgICAgICBpZDogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAodmFsdWU/LmlkIHx8IFwiX1wiKSArIGVkaXRvcmZsYWcsXHJcbiAgICAgICAgICB0aXRsZTpcclxuICAgICAgICAgICAgYOOAkCR7XHJcbiAgICAgICAgICAgICAgZWRpdG9yZmxhZyA9PSBcImFkZFwiXHJcbiAgICAgICAgICAgICAgICA/IFwi5paw5aKeXCJcclxuICAgICAgICAgICAgICAgIDogZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICA/IFwi57yW6L6RXCJcclxuICAgICAgICAgICAgICAgIDogXCLmn6XnnItcIlxyXG4gICAgICAgICAgICB944CRYCArIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8udGl0bGUgfHwgXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiYWRkVGFiXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnksIGRlbGV0ZVBvc2l0aW9uID0gXCJyb3dcIikge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG5cclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSA9IHt9IH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSB0cnVlIHx8IGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IHRydWUpXHJcbiAgICAgIHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJvd1JlY29yZCxcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH07XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkO1xyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vIOiuoeeul+ihqOWktOmrmOW6pueahOaWueazlVxyXG4gIGNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgdGFibGVIZWFkZXIgPVxyXG4gICAgICAgIHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgIFwiYW50LXRhYmxlLXRoZWFkXCJcclxuICAgICAgICApWzBdO1xyXG4gICAgICBpZiAodGFibGVIZWFkZXIpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0YWJsZUhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlYWRlckhlaWdodCAhPT0gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiBoZWFkZXJIZWlnaHQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIHRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSB0aHJvdHRsZShcclxuICAgIHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsXHJcbiAgICA1MDBcclxuICApO1xyXG5cclxuICAvLyDkvJjljJbmi5bmi73nm7jlhbPmlrnms5VcclxuICBoYW5kbGVNb3VzZURvd24oZTogUmVhY3QuTW91c2VFdmVudCkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIC8vIOWIm+W7uumBrue9qeWxguS7peWkhOeQhmlmcmFtZeWcuuaZr1xyXG4gICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBtYXNrLnN0eWxlLmNzc1RleHQgPSBgXHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgei1pbmRleDogOTk5OTtcclxuICAgICAgY3Vyc29yOiBjb2wtcmVzaXplO1xyXG4gICAgYDtcclxuICAgIG1hc2suaWQgPSBcImRyYWctbWFza1wiO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtYXNrKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZU1vdmUgPSAoZTogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdXaWR0aCA9IGUuc2NyZWVuWDtcclxuICAgICAgLy8g6ZmQ5Yi25pyA5bCPMTAwcHjvvIzmnIDlpKc1MDBweFxyXG4gICAgICBpZiAobmV3V2lkdGggPj0gNTAgJiYgbmV3V2lkdGggPD0gODAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRyZWVXaWR0aDogbmV3V2lkdGggfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdGhyb3R0bGVkTW91c2VNb3ZlID0gdGhyb3R0bGUoaGFuZGxlTW91c2VNb3ZlLCAxNik7XHJcblxyXG4gICAgY29uc3QgaGFuZGxlTW91c2VVcCA9ICgpID0+IHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aHJvdHRsZWRNb3VzZU1vdmUpO1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBoYW5kbGVNb3VzZVVwKTtcclxuICAgICAgLy8g56e76Zmk6YGu572p5bGCXHJcbiAgICAgIGNvbnN0IG1hc2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRyYWctbWFza1wiKTtcclxuICAgICAgaWYgKG1hc2spIHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG1hc2spO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhyb3R0bGVkTW91c2VNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH07XHJcbiAgICBpZiAocmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcykge1xyXG4gICAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXM/LmRhdGEgfHwgcXVlcnlQYXJhbXM/LnBhcmFtcyB8fCB7fTtcclxuICAgICAgbmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgIHBhcmFtczogeyAuLi5kYXRhLCAuLi5uZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICB0aXRsZTogdHJlZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICBmaWx0ZXJDb2x1bW4sXHJcbiAgICAgIHN0b3JlOiB7XHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBsb2FkOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udGFibGVMb2FkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udGFibGVMb2FkQ2FsbEJhY2soZGF0YSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4ubmV3VGFibGVTdG9yZSxcclxuICAgICAgfSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtcyxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHBlcm1pc3Npb25CdXR0b25zID0gW107XHJcbiAgICBpZiAocGVybWlzc2lvbi5oYXMgJiYgcGVybWlzc2lvbi5tZW51Q29kZSkge1xyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9ucyA9XHJcbiAgICAgICAgZ2V0QnV0dG9uUGVybWlzc29ucyhwZXJtaXNzaW9uLm1lbnVDb2RlKS5wZXJtaXNzb25zIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2JqID0gY29udmVydENvbHVtbnMoY29sdW1ucywge30pO1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IGdldE5ld0NvbHVtbnMoY29sdW1ucywgdGhpcy5wcm9wcyk7XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtcyA9IG9iai5zZWFyY2hGb3JtcyB8fCBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zID0gb2JqLmVkaXRvckZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgdG9vbEJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZm9ybUJ1dHRvbjogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb25zdCBidXR0b25NYXAgPSB7XHJcbiAgICAgIGVkaXRvcjogeyBuYW1lOiBcIue8lui+kVwiLCBjb2RlOiBcImVkaXRvclwiLCBpY29uOiA8RWRpdE91dGxpbmVkIC8+IH0sXHJcbiAgICAgIGRlbGV0ZTogeyBuYW1lOiBcIuWIoOmZpFwiLCBjb2RlOiBcImRlbGV0ZVwiLCBpY29uOiA8RGVsZXRlT3V0bGluZWQgLz4gfSxcclxuICAgICAgc2VhcmNoOiB7IG5hbWU6IFwi5p+l55yLXCIsIGNvZGU6IFwic2VhcmNoXCIsIGljb246IDxFeWVPdXRsaW5lZCAvPiB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJldHVybkJ1dHRvbiA9IChjb2RlLCBzaG93ID0gXCJcIiwgZGVmYXVsdFByb3BzID0ge30pID0+IHtcclxuICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgIGljb246IHNob3dJY29uID8gYnV0dG9uTWFwW2NvZGVdLmljb24gOiBudWxsLFxyXG4gICAgICAgIHR5cGU6IFwibGlua1wiLFxyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgfSBhcyBhbnk7XHJcblxyXG4gICAgICBpZiAoc2hvdykge1xyXG4gICAgICAgIHByb3BzID0geyAuLi5wcm9wcywgcmVjb3JkU2hvdzogc2hvdyB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJlZGl0b3JcIiAmJiBidXR0b25DbGljay5vbkVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRWRpdG9yLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFwic2VhcmNoXCIgJiYgYnV0dG9uQ2xpY2sub25TZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vblNlYXJjaCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FsbEJhY2sgPVxyXG4gICAgICAgICAgICAgICAgICBjb2RlID09IFwiZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2tcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2s7XHJcbiAgICAgICAgICAgICAgICBjYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICBjYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2J1dHRvbk1hcFtjb2RlXT8ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjaGVja1BlcnNzaW9uID0gKGNvZGUpID0+IHtcclxuICAgICAgaWYgKCFwZXJtaXNzaW9uLmhhcykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uQnV0dG9ucy5pbmRleE9mKGNvZGUpID4gLTE7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBidXR0b25zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmICgoaXRlbSA9PSBcImFkZFwiIHx8IGl0ZW0uY29kZSA9PSBcImFkZFwiKSAmJiBjaGVja1BlcnNzaW9uKFwiYWRkXCIpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0sIGJ1dHRvbkNsaWNrID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgICAgaWYgKGJ1dHRvbkNsaWNrPy5vbkFkZCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uQWRkLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShudWxsLCBudWxsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZV9iYXRjaFwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZV9iYXRjaFwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVfYmF0Y2hcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzLCBudWxsLCBcInRvb2xiYXJcIil9XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOaJuemHj+WIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oXHJcbiAgICAgICAgICAgICAgaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSxcclxuICAgICAgICAgICAgICBpdGVtLnJlY29yZFNob3csXHJcbiAgICAgICAgICAgICAgaXRlbS5wcm9wcyB8fCB7fVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGZvcm1CdXR0b24ucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgIHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDsgLy/lpLTpg6jmkJzntKLmoI/pq5jluqZcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodCAtIGhlYWRlckhlaWdodDtcclxuICAgIGxldCBQYWdpbmF0aW9uSGVpZ2h0ID0gdGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSA/IDMyICsgMTYgOiAwOyAvLzMyIOS4uuWIhumhteWZqOmrmOW6piwxNuS4um1hcmdpbumXtOi3nVxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID1cclxuICAgICAgdGFibGVDb250ZW50SGVpZ2h0IC1cclxuICAgICAgKHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgPiAwID8gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCA6IDU1KSAtXHJcbiAgICAgIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICAvLyBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZVNyb2xsSGVpZ2h0LCAuLi5zY3JvbGwgfSxcclxuICAgIH07XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogdGhpcy5zdGF0ZS50cmVlV2lkdGggfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidHJlZS1kcmFnXCJcclxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e3RoaXMuaGFuZGxlTW91c2VEb3duLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRyZWVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IGBjYWxjKDEwMCUgLSAke3RoaXMuc3RhdGUudHJlZVdpZHRofXB4IC0gJHtcclxuICAgICAgICAgICAgICAgIHNob3dMZWZ0ID8gMTUgOiAwXHJcbiAgICAgICAgICAgICAgfXB4KWAsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHt9KTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5wYWdlQ29udGVudFJlZn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnModG9vbEJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVXcmFwcGVyUmVmfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiB0aGlzLnByb3BzLmZvcm1QYWdlUHJvcHM/LmZvcm1UeXBlICE9PSBcInBhZ2VcIiAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybXM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgVXRpbHM9e3RoaXMucHJvcHMuVXRpbHN9XHJcbiAgICAgICAgICAgICAgcmVxdWVzdE9iamVjdD17e1xyXG4gICAgICAgICAgICAgICAgYWRkVXJsOiByZXF1ZXN0VXJscy5hZGRVcmwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JVcmw6IHJlcXVlc3RVcmxzLmVkaXRvclVybCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogcmVxdWVzdFBhcmFtcy5hZGRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHJlcXVlc3RQYXJhbXMuZWRpdG9yUGFyYW1zLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZnVuY3M9e3RoaXMucHJvcHMuZnVuY3N9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1QYWdlUHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7Zm9ybUJ1dHRvbn1cclxuICAgICAgICAgICAgPC9FZGl0b3JGb3JtPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoi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
1239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJidXR0b25zTG9hZGluZyIsInRyZWVXaWR0aCIsInNob3dMZWZ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VDb250ZW50UmVmIiwiY2xpZW50SGVpZ2h0Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJzZXRUaW1lb3V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkMiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJHByb3BzJGZvcm1QYWdlUCIsImVkaXRvcmZsYWciLCJmb3JtUGFnZVByb3BzIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQMiIsImZ1bmNzIiwicGF0aG5hbWUiLCJjb25jYXQiLCJ0YWJsZUNvZGUiLCJpZCIsImhpc3RvcnkiLCJzZXJ2aWNlTmFtZSIsInNlcnZpY2VQYXRoIiwiRGF0ZSIsImdldFRpbWUiLCJ0aXRsZSIsIl90aGlzJGVkaXRvclJlZiIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVQb3NpdGlvbiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicGFnZVJlZiIsInJlY29yZCIsImlkcyIsIlV0aWxzIiwiRXJyb3IiLCJkYXRhUGFyYW1zIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiYXV0b1ByZWZpeCIsImpvaW4iLCJmaW5hbFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjMiLCJkZWZhdWx0UmVxdWVzdENvbmZpZyIsInRhYmxlUHJvcHMiLCJzdG9yZSIsInRhYmxlU3RvcmUiLCJjb252ZXJ0UXVlcnlQYXJhbXMiLCJyZXF1ZXN0Q29uaWciLCJzdG9yZUNvbmZpZyIsInN0b3JlUGFyYW1zIiwib3RoZXJTdG9yZUNvbmZpZyIsIl9leGNsdWRlZDIiLCJsb2FkIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvMiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJvblF1ZXJ5Q2FsbEJhY2siLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjQiLCJhdXRvTG9hZCIsInJlbG9hZCIsImNhbGxiYWNrIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsInRyZWVMb2FkIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMCIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9leGNsdWRlZDMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInBsYWNlbWVudCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicm93UmVjb3JkIiwiYWN0aW9uUHJvcHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDQiLCJldmVudE9wdGlvbiIsIlVpdGxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwicHVzaCIsImUiLCJldmFsIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkNSIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDYiLCJ0cmlnZ2VyIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNSIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMSIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudDIiLCJjb252ZXJQYXJhbXMiLCJoYW5kbGVNb3VzZURvd24iLCJwcmV2ZW50RGVmYXVsdCIsIm1hc2siLCJkb2N1bWVudCIsImNzc1RleHQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJoYW5kbGVNb3VzZU1vdmUiLCJuZXdXaWR0aCIsInNjcmVlblgiLCJ0aHJvdHRsZWRNb3VzZU1vdmUiLCJoYW5kbGVNb3VzZVVwIiwiZ2V0RWxlbWVudEJ5SWQiLCJyZW1vdmVDaGlsZCIsInJlbmRlciIsIl90aGlzMiIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsIl90aGlzJHByb3BzJGZvcm1QYWdlUDMiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJwZXJtaXNzaW9uIiwiaGFzIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNyIsIm5ld1RhYmxlU3RvcmUiLCJfbmV3VGFibGVTdG9yZSRyZXF1ZXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDgiLCJ0YWJsZVBhcmFtcyIsImxpc3RlbmVycyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM3IiwidGFibGVMb2FkQ2FsbEJhY2siLCJkZWZhdWx0VmFsdWUiLCJtZW51Q29kZSIsInBlcm1pc3NvbnMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJ0b29sQnV0dG9ucyIsImZvcm1CdXR0b24iLCJidXR0b25NYXAiLCJlZGl0b3IiLCJkZWxldGUiLCJzZWFyY2giLCJyZXR1cm5CdXR0b24iLCJfYnV0dG9uTWFwJGNvZGUiLCJkZWZhdWx0UHJvcHMiLCJvbkVkaXRvciIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYSIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYTIiLCJvbkVkaXRvckNhbGxCYWNrIiwib25TZWFyY2hDYWxsQmFjayIsImNoZWNrUGVyc3Npb24iLCJpbmRleE9mIiwib25BZGQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM4IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOSIsIm9uQWRkQ2FsbEJhY2siLCJiaW5kIiwiZGFuZ2VyIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGQiLCJfY2hpbGQkcHJvcHMiLCJfY2hpbGQkcHJvcHMyIiwiX2NoaWxkJHByb3BzMyIsIl9jaGlsZCRwcm9wczQiLCJfY2hpbGQkcHJvcHM1IiwiX2NoaWxkJHByb3BzNiIsIl9jaGlsZCRwcm9wczciLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJfaXRlbSRwcm9wczciLCJfaXRlbSRwcm9wczgiLCJfaXRlbSRwcm9wczkiLCJkYXRhSW5kZXgiLCJhbGlnbiIsInRleHRBbGlnbiIsIndpZHRoIiwiZml4ZWQiLCJyZWFjb3JkIiwiRnJhZ21lbnQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyIiwidG9vbHMiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5Iiwib25Nb3VzZURvd24iLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0IiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMyIsInNlYXJjaEZvcm1Qcm9wcyIsImV4cGFuZEljb24iLCJfcmVmIiwiX3JlY29yZCRjaGlsZE5vZGVzIiwiX3JlY29yZCRjaGlsZE5vZGVzMiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJvbkNoYW5nZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMTAiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMSIsIm9uU3VtYml0Q2FsbEJhY2siLCJmb3JtcyIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwicmVxdWVzdE9iamVjdCIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSwgeyBGb3JtUGFnZVByb3BzIH0gZnJvbSBcIi4uL0Zvcm1QYWdlL2luZGV4XCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24sIGdldExlc3MsIGdldE5vZGUsIHNpbXBsaWZ5Q29sdW1ucyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcclxuaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG50eXBlIEJ1dHRvbkl0ZW0gPVxyXG4gIHwgc3RyaW5nXHJcbiAgfCB7XHJcbiAgICAgIGNvZGU6IHN0cmluZztcclxuICAgICAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG4gICAgICBwcm9wcz86IGFueTtcclxuICAgIH07XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1ucz86IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InLCdkZWxldGVfYmF0Y2gnXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwicGFnZVwiO1xyXG4gIGZvcm1DaGFuZ2VWYWxpZD86IGJvb2xlYW47IC8v6KGo5Y2V5qCh6aqMXHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIHRvb2xCdXR0b25Qb3NpdGlvbj86IFwicmlnaHRcIiB8IFwiYnV0dG9tXCI7XHJcbiAgcGFnZVRpdGxlPzogc3RyaW5nIHwgUmVhY3ROb2RlO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgdGFibGVMb2FkQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5Zue6LCDLS1sb2FkXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IEZvcm1QYWdlUHJvcHM7XHJcbiAgYnV0dG9uQ2xpY2s/OiB7XHJcbiAgICBvbkFkZD86ICgpID0+IHZvaWQ7XHJcbiAgICBvbkVkaXRvcj86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25EZWxldGU/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgfTtcclxuICBwZXJtaXNzaW9uPzoge1xyXG4gICAgaGFzPzogYm9vbGVhbjtcclxuICAgIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIH07XHJcbiAgcmVxdWVzdFBhcmFtcz86IHtcclxuICAgIC8v6ZyA6KaB6aKd5aSW5Lyg55qE5Zu65a6a6K+35rGC5Y+C5pWwXHJcbiAgICBhZGRQYXJhbXM/OiBPYmplY3Q7IC8v5paw5aKe5Zu65a6a5Y+C5pWwXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBPYmplY3Q7IC8v57yW6L6R5Zu65a6a5Y+C5pWwXHJcbiAgICBxdWVyeVBhcmFtcz86IE9iamVjdDsgLy/mn6Xor6Llm7rlrprlj4LmlbBcclxuICAgIGRlbGV0ZVBhcmFtcz86IE9iamVjdDsgLy/liKDpmaTlm7rlrprlj4LmlbBcclxuICB9O1xyXG4gIHJlcXVlc3RVcmxzPzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nOyAvL+aWsOWinnVybFxyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nOyAvL+e8lui+kXVybFxyXG4gICAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIH07XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VDb250ZW50UmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIHRhYmxlV3JhcHBlclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICBzdGF0aWMgY29udmVydENvbHVtbnMgPSBjb252ZXJ0Q29sdW1ucztcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IDAsIC8vIOa3u+WKoOihqOWktOmrmOW6puWIsHN0YXRlXHJcbiAgICAgIGJ1dHRvbnNMb2FkaW5nOiB7fSxcclxuICAgICAgdHJlZVdpZHRoOiB0aGlzLnByb3BzLnNob3dMZWZ0ID8gMjYwIDogMCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEsIHBlcm1pc3NvbiA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIC8vIOa3u+WKoOeql+WPo3Jlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0KTtcclxuXHJcbiAgICAvLyDliJ3lp4vorqHnrpfooajlpLTpq5jluqZcclxuICAgIHNldFRpbWVvdXQodGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCwgMCk7XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICB9KTtcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VDb250ZW50UmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5zaG93TGVmdCAhPT0gdGhpcy5wcm9wcy5zaG93TGVmdCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAvLyDnp7vpmaRyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxyXG4gICAgICBcInJlc2l6ZVwiLFxyXG4gICAgICB0aGlzLnRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHRcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZvcm1QYWdlUHJvcHM/LmZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgZnVuY3MgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgbGV0IHBhdGhuYW1lID0gYC9mb3JtcGFnZS8ke2VkaXRvcmZsYWcgPyBlZGl0b3JmbGFnIDogXCJhZGRcIn0vJHtcclxuICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZVxyXG4gICAgICB9YDtcclxuICAgICAgaWYgKGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpIHtcclxuICAgICAgICBwYXRobmFtZSA9IHBhdGhuYW1lICsgXCI/aWQ9XCIgKyB2YWx1ZS5pZDtcclxuICAgICAgfVxyXG4gICAgICBmdW5jcz8uaGlzdG9yeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUsXHJcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogXCJzZXR0aW5nLXdlYlwiLFxyXG4gICAgICAgICAgc2VydmljZVBhdGg6IFwiL3NldHRpbmdcIixcclxuICAgICAgICAgIGlkOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArICh2YWx1ZT8uaWQgfHwgXCJfXCIpICsgZWRpdG9yZmxhZyxcclxuICAgICAgICAgIHRpdGxlOlxyXG4gICAgICAgICAgICBg44CQJHtcclxuICAgICAgICAgICAgICBlZGl0b3JmbGFnID09IFwiYWRkXCJcclxuICAgICAgICAgICAgICAgID8gXCLmlrDlop5cIlxyXG4gICAgICAgICAgICAgICAgOiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgID8gXCLnvJbovpFcIlxyXG4gICAgICAgICAgICAgICAgOiBcIuafpeeci1wiXHJcbiAgICAgICAgICAgIH3jgJFgICsgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy50aXRsZSB8fCBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJhZGRUYWJcIlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSwgZGVsZXRlUG9zaXRpb24gPSBcInJvd1wiKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcblxyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmlnOiBzdG9yZUNvbmZpZyA9IHt9IH0gPSB0YWJsZVN0b3JlO1xyXG4gICAgY29uc3QgeyBwYXJhbXM6IHN0b3JlUGFyYW1zID0ge30sIC4uLm90aGVyU3RvcmVDb25maWcgfSA9IHN0b3JlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGtleSA9IHJvd0tleShyb3dSZWNvcmQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAga2V5ID0gcm93UmVjb3JkW3Jvd0tleV07XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IHRydWUgfHwgYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gdHJ1ZSlcclxuICAgICAgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHJlY29yZDogcm93UmVjb3JkLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfTtcclxuICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvbixVdGlsc1wiLCByZWNvcmRTaG93KTtcclxuICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSByb3dSZWNvcmQ7XHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBzZWxlY3RlZEtleXM6IHNlbGVjdGVkS2V5cywgb2JqOiBvYmogfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgICAvLyB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgIC8vICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgLy8gICBvYmosXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRRdWVyeVBhcmFtcygpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X6KGo5aS06auY5bqm55qE5pa55rOVXHJcbiAgY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCB0YWJsZUhlYWRlciA9XHJcbiAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgXCJhbnQtdGFibGUtdGhlYWRcIlxyXG4gICAgICAgIClbMF07XHJcbiAgICAgIGlmICh0YWJsZUhlYWRlcikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRhYmxlSGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICBpZiAoaGVhZGVySGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9IHRocm90dGxlKFxyXG4gICAgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCxcclxuICAgIDUwMFxyXG4gICk7XHJcblxyXG4gIC8vIOS8mOWMluaLluaLveebuOWFs+aWueazlVxyXG4gIGhhbmRsZU1vdXNlRG93bihlOiBSZWFjdC5Nb3VzZUV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8g5Yib5bu66YGu572p5bGC5Lul5aSE55CGaWZyYW1l5Zy65pmvXHJcbiAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIG1hc2suc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XHJcbiAgICBgO1xyXG4gICAgbWFzay5pZCA9IFwiZHJhZy1tYXNrXCI7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hc2spO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gZS5zY3JlZW5YO1xyXG4gICAgICAvLyDpmZDliLbmnIDlsI8xMDBweO+8jOacgOWkpzUwMHB4XHJcbiAgICAgIGlmIChuZXdXaWR0aCA+PSA1MCAmJiBuZXdXaWR0aCA8PSA4MDApIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdHJlZVdpZHRoOiBuZXdXaWR0aCB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0aHJvdHRsZWRNb3VzZU1vdmUgPSB0aHJvdHRsZShoYW5kbGVNb3VzZU1vdmUsIDE2KTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAvLyDnp7vpmaTpga7nvanlsYJcclxuICAgICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZHJhZy1tYXNrXCIpO1xyXG4gICAgICBpZiAobWFzaykge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFzayk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aHJvdHRsZWRNb3VzZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfTtcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHtcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIGxvYWQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayhkYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5uZXdUYWJsZVN0b3JlLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zID0gb2JqLnNlYXJjaEZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBmb3JtQnV0dG9uOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiLCBkZWZhdWx0UHJvcHMgPSB7fSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgaWNvbjogc2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGwsXHJcbiAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IC4uLnByb3BzLCByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9XHJcbiAgICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlX2JhdGNoXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlX2JhdGNoXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZV9iYXRjaFwiKVxyXG4gICAgICApIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMsIG51bGwsIFwidG9vbGJhclwiKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5om56YeP5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihcclxuICAgICAgICAgICAgICBpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLFxyXG4gICAgICAgICAgICAgIGl0ZW0ucmVjb3JkU2hvdyxcclxuICAgICAgICAgICAgICBpdGVtLnByb3BzIHx8IHt9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZm9ybUJ1dHRvbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJiBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgcHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHRvb2xCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGxldCBoZWFkZXJIZWlnaHQgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgPyAxMDQgOiAwOyAvL+WktOmDqOaQnOe0ouagj+mrmOW6plxyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID0gZWxlbWVudEhlaWdodCAtIHBhZGRpbmdIZWlnaHQ7XHJcbiAgICBsZXQgUGFnaW5hdGlvbkhlaWdodCA9IHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAzMiArIDE2IDogMDsgLy8zMiDkuLrliIbpobXlmajpq5jluqYsMTbkuLptYXJnaW7pl7Tot51cclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9XHJcbiAgICAgIHRhYmxlQ29udGVudEhlaWdodCAtXHJcbiAgICAgICh0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0ID4gMCA/IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgOiA1NSkgLVxyXG4gICAgICBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgLy8gaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IHRoaXMuc3RhdGUudHJlZVdpZHRoIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRyZWUtZHJhZ1wiXHJcbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgIHdpZHRoOiBgY2FsYygxMDAlIC0gJHt0aGlzLnN0YXRlLnRyZWVXaWR0aH1weCAtICR7XHJcbiAgICAgICAgICAgICAgICBzaG93TGVmdCA/IDE1IDogMFxyXG4gICAgICAgICAgICAgIH1weClgLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUGFnZVByb3BzfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge2Zvcm1CdXR0b259XHJcbiAgICAgICAgICAgIDwvRWRpdG9yRm9ybT5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtB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