nsc-react-component 2.14.26 → 2.14.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/base/table/index.js +2 -2
- package/lib/base/table/index.js.map +1 -1
- package/lib/page/BasePage/index.d.ts +2 -0
- package/lib/page/BasePage/index.js +1 -1
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/HeaderSearch/index.d.ts +1 -0
- package/lib/page/HeaderSearch/index.js +4 -3
- package/lib/page/HeaderSearch/index.js.map +1 -1
- package/package.json +1 -1
package/lib/base/table/index.js
CHANGED
|
@@ -458,7 +458,7 @@ class NSCTable extends React.Component {
|
|
|
458
458
|
title: text,
|
|
459
459
|
className: getLess(styles, "text"),
|
|
460
460
|
style: {
|
|
461
|
-
width: col.width
|
|
461
|
+
width: col.width - 32
|
|
462
462
|
}
|
|
463
463
|
}, text);
|
|
464
464
|
};
|
|
@@ -959,4 +959,4 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
959
959
|
}
|
|
960
960
|
});
|
|
961
961
|
export default withZhLocale(NSCTable);
|
|
962
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiZ2V0Q29sdW1ucyIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJ0aXRsZSIsImNsYXNzTmFtZSIsInN0eWxlIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgLy8gdGFibGVTaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbiAgLy8gc2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHRpdGxlPXt0ZXh0fSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9IHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggfX0+XHJcbiAgICAgICAgICAgICAge3RleHR9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc29ydEZpZWxkcy5pbmRleE9mKGNvbC5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgICBpZiAoc29ydFR5cGUgPT0gXCJzaW5nbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHRydWU7XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB7IG11bHRpcGxlOiBpbmRleCB9O1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcbiAgICBjb2xzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKGl0ZW0uZmlsdGVyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNlYXJjaEtleSB9ID0gaXRlbS5maWx0ZXJQcm9wcztcclxuICAgICAgICBsZXQgRGl2ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGV4dCA9IGl0ZW0udGl0bGU7XHJcbiAgICAgICAgRGl2ID0gZ2V0Tm9kZSh0eXBlLCB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOaQnOe0oiR7dGV4dH1gLFxyXG4gICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICByZWY6IHRoaXMudGFibGVTZWFyY2hSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgZmlsdGVyRHJvcGRvd246ICh7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBjb25maXJtLFxyXG4gICAgICAgICAgICBjbGVhckZpbHRlcnMsXHJcbiAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic3BhY2VcIil9PntEaXZ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8U3BhY2U+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RmlsdGVyUGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLmZpZWxkIHx8IGl0ZW0uZGF0YUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VhcmNoUmVmLmN1cnJlbnQ/LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0UGFyYW0gPSB0aGlzLmdldFNvcnRQYXJhbSh0aGlzLnN0YXRlLnNvcnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zLCAuLi5zb3J0UGFyYW0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgIDogdG9vbHM7XHJcbiAgICAgIHRvb2xzQ2xpY2sgPSB0b29sYmFyLm9uVG9vbENsaWNrID8gdG9vbGJhci5vblRvb2xDbGljayA6IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2l6ZUl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5a695p2+XCIsIGtleTogXCJkZWZhdWx0XCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLkuK3nrYlcIiwga2V5OiBcIm1pZGRsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi57Sn5YeRXCIsIGtleTogXCJzbWFsbFwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydEl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5Y2V5a2X5q615o6S5bqPXCIsIGtleTogXCJzaW5nbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuWkmuWtl+auteaOkuW6j1wiLCBrZXk6IFwibXVsdGlwbGVcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgY3Vyc29yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ICYmIFwicmdiYSgwLDAsMCwuNDUpXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0U29ydCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSwgc29ydEluZm86IHt9LCBkZWZhdWx0U29ydDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5oGi5aSN6buY6K6k5o6S5bqPXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NvcnRJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBzb3J0ZXI6IFtdLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRUeXBlOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IFwicmdiYSgwLDAsMCwuNDUpXCIgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOW9k+WJjeaOkuW6j1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLm9yZGVyID09IFwiYXNjZW5kXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0RGVzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLmNvbHVtbi50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2l6ZUNvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX0+6KGo5qC85a+G5bqmPC9kaXY+XHJcbiAgICAgICAge3NpemVJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICB0YWJsZVNpemU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4gJiB7IGZpbHRlckNvbHVtbjogYm9vbGVhbjsgZGF0YUluZGV4OiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbC5kYXRhSW5kZXgpIHtcclxuICAgICAgICAgICAgICBjb2wuZGF0YUluZGV4ID0gY29sLnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogY29sLmZpbHRlckNvbHVtbiA9PT0gZmFsc2UsXHJcbiAgICAgICAgICAgIH0gYXMgQ2hlY2tib3hPcHRpb25UeXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgLy8gZGVmYXVsdFZhbHVlPXtkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpfVxyXG4gICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgIHRoaXMuc3RhdGUuZGVmYXVsdENoZWNrXHJcbiAgICAgICAgICAgID8gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuY2hlY2tDb2x1bW5cclxuICAgICAgICB9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b29sLWJhclwiKX0+XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJjb2x1bW5cIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICB0aXRsZT1cIumAieaLqeaYvuekuueahOWIl1wiXHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcclxuICAgICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICAgIC8vIGdldFBvcHVwQ29udGFpbmVyPXsoKSA9PiB0aGlzLnRoSWNvblJlZi5jdXJyZW50fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWQgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhcHAtc3RvcmUtaWNvblwiKX0gLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkW3Jvd0tleV1dO1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLm5ld1NlbGVjdGVkUm93RGF0YXMsIHJlY29yZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbVtyb3dLZXldID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IG5ld1NlbGVjdGVkUm93RGF0YXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG5ld2RhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bcm93S2V5XSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXMsIC4uLmNoYW5nZUlkc107XHJcbiAgICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhcywgLi4uY2hhbmdlUm93c107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3aWRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW1bcm93S2V5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3ZGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogWy4uLm5ld2lkc10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFsuLi5uZXdkYXRhc10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgICAgXCJzb3J0U2VhcmNoXCIsXHJcbiAgICAgICAgICBcInNob3dSb3dTZWxlY3Rpb25cIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlcy5jbGlja1Jvd1N0eWxlfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPD5cclxuICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIHNoZWl0ZW1cclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17e1xyXG4gICAgICAgICAgICBlbXB0eVRleHQ6IDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS1ub2RhdGFcIil9IC8+LFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
962
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiZ2V0Q29sdW1ucyIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJ0aXRsZSIsImNsYXNzTmFtZSIsInN0eWxlIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgLy8gdGFibGVTaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbiAgLy8gc2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHRpdGxlPXt0ZXh0fSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9IHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggLSAzMiB9fT5cclxuICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzcGFjZVwiKX0+e0Rpdn08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYnV0dG9uXCIpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9TcGFjZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmaWx0ZXJJY29uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8U2VhcmNoT3V0bGluZWQgLz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ub2JqLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sc1tpbmRleF0gPSBvYmo7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHM7XHJcbiAgfVxyXG4gIHJlbmRlclRvb2xCYXIoKSB7XHJcbiAgICBsZXQgeyB0YWJsZVNpemUsIGNvbHVtbnMsIHNvcnRUeXBlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgZmlsdGVyQ29sdW1uLCBjb2x1bW5zOiBjb2xMaXN0cywgdG9vbGJhciB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdGFibGVUb29sLCBzdG9yZVJlcXVlc3RDb25maWcgPSB7fSB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbHMgPSBbXCJyZWZyZXNoXCIsIFwic2l6ZVwiLCBcInNvcnRcIiwgXCJjb2x1bW5cIl07XHJcbiAgICBsZXQgdG9vbHNDbGljayA9IHt9IGFzIGFueTtcclxuICAgIGlmICh0b29sYmFyID09IHRydWUpIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLm9uVG9vbENsaWNrXHJcbiAgICAgICAgPyB0b29sYmFyLm9uVG9vbENsaWNrXHJcbiAgICAgICAgOiBbXCJyZWZyZXNoXCIsIFwic2l6ZVwiLCBcInNvcnRcIiwgXCJjb2x1bW5cIl07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIudG9vbHNcclxuICAgICAgICA/IHRvb2xiYXIudG9vbHNcclxuICAgICAgICA6IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgID8gdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgOiB0b29scztcclxuICAgICAgdG9vbHNDbGljayA9IHRvb2xiYXIub25Ub29sQ2xpY2sgPyB0b29sYmFyLm9uVG9vbENsaWNrIDoge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBzaXplSXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLlrr3mnb5cIiwga2V5OiBcImRlZmF1bHRcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuS4reetiVwiLCBrZXk6IFwibWlkZGxlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLntKflh5FcIiwga2V5OiBcInNtYWxsXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0SXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLljZXlrZfmrrXmjpLluo9cIiwga2V5OiBcInNpbmdsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5aSa5a2X5q615o6S5bqPXCIsIGtleTogXCJtdWx0aXBsZVwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydENvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfT7ooajmoLzlr4bluqY8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PiAmIHsgZmlsdGVyQ29sdW1uOiBib29sZWFuOyBkYXRhSW5kZXg6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmRhdGFJbmRleCkge1xyXG4gICAgICAgICAgICAgIGNvbC5kYXRhSW5kZXggPSBjb2wudGl0bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBjb2wuZmlsdGVyQ29sdW1uID09PSBmYWxzZSxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgICAgICAvLyBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdWx0Q2hlY2tcclxuICAgICAgICAgICAgPyBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5jaGVja0NvbHVtblxyXG4gICAgICAgIH1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcImNvbHVtblwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgICAgLy8gZ2V0UG9wdXBDb250YWluZXI9eygpID0+IHRoaXMudGhJY29uUmVmLmN1cnJlbnR9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZCBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFwcC1zdG9yZS1pY29uXCIpfSAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic29ydFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c29ydENvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNpemVcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NpemVDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8Q29sdW1uSGVpZ2h0T3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInJlZnJlc2hcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQsIGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICBpZiAodG9vbHNDbGljay5vblJlZnJlc2gpIHtcclxuICAgICAgICAgICAgICAgIHRvb2xzQ2xpY2sub25SZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxSZWRvT3V0bGluZWQgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dEYXRhcztcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdChyZWNvcmQ6IGFueSwgc2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dLZXlzLCByZWNvcmRbcm93S2V5XV07XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dEYXRhcywgcmVjb3JkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtW3Jvd0tleV0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IG5ld1NlbGVjdGVkUm93S2V5cyxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogbmV3U2VsZWN0ZWRSb3dEYXRhcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdEFsbChzZWxlY3RlZDogYW55LCBzZWxlY3RlZFJvd3M6IGFueSwgY2hhbmdlUm93czogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld2lkczogYW55ID0gW107XHJcbiAgICBsZXQgbmV3ZGF0YXM6IGFueSA9IFtdO1xyXG4gICAgaWYgKGNoYW5nZVJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgY2hhbmdlSWRzID0gY2hhbmdlUm93cy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtyb3dLZXldKTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5cywgLi4uY2hhbmdlSWRzXTtcclxuICAgICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzLCAuLi5jaGFuZ2VSb3dzXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdpZHMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbVtyb3dLZXldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdkYXRhcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbLi4ubmV3aWRzXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogWy4uLm5ld2RhdGFzXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICAgIHRhYmxlU2l6ZSxcclxuICAgICAgfSA9IHRoaXMuc3RhdGUsXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIixcclxuICAgICAgICAgIFwic2hvd1Jvd1NlbGVjdGlvblwiLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChwcm9wcy5zaG93VG90YWwgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHByb3BzLnBhZ2luYXRpb24uc2hvd1RvdGFsID0gZnVuY3Rpb24gKHRvdGFsLCBbZnJvbSwgdG9dKSB7XHJcbiAgICAgICAgICAvLyByZXR1cm4gXCLmmL7npLogXCIgKyBmcm9tICsgXCIgLSBcIiArIHRvICsgXCLmnaHvvIzlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwi5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm9wcy5vbkNoYW5nZSA9IGZ1bmN0aW9uIChwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICAgIF90aGlzLm9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5jbGlja0NoYW5nZUNvbG9yKSB7XHJcbiAgICAgIGNvbnN0IG9uUm93Rm4gPSBwcm9wcy5vblJvdztcclxuICAgICAgcHJvcHMub25Sb3cgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHZhciBjdXN0b20gPSBvblJvd0ZuID8gb25Sb3dGbihyZWNvcmQsIGluZGV4KSA6IHt9O1xyXG4gICAgICAgIGNvbnN0IG9uQ2xpY2tGbiA9IGN1c3RvbS5vbkNsaWNrO1xyXG4gICAgICAgIGN1c3RvbS5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBpbmRleCwgLy/ojrflj5bngrnlh7vooYznmoTntKLlvJVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXRpbHMuY2FsbGJhY2sob25DbGlja0ZuLCBfdGhpcywgW2V2ZW50XSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tO1xyXG4gICAgICB9O1xyXG4gICAgICBwcm9wcy5yb3dDbGFzc05hbWUgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gX3RoaXMuc3RhdGUuYWN0aXZlSW5kZXhcclxuICAgICAgICAgID8gYCR7c3R5bGVzLmNsaWNrUm93U3R5bGV9YFxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IEJvZHlSb3dDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgbGV0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZVByb3BzID1cclxuICAgICAgcmVzaXplQ29sdW1uID09PSB0cnVlID8geyBjb21wb25lbnRzOiB0aGlzLmNvbXBvbmVudHMgfSA6IG51bGw7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IHRvb2xwcm9wcyA9XHJcbiAgICAgIHRoaXMucHJvcHMudG9vbGJhciA9PT0gZmFsc2UgfHwgdGhpcy5wcm9wcy50b29sYmFyPy5zaG93ID09PSBmYWxzZVxyXG4gICAgICAgID8gZmFsc2VcclxuICAgICAgICA6IHRydWU7XHJcbiAgICBpZiAoIXRvb2xwcm9wcykge1xyXG4gICAgICB0b29sRmxhZyA9IHRvb2xwcm9wcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdGFibGVUb29sLnNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd1Jvd1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCB7IHJvd1NlbGVjdGlvbiA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBwcm9wcyA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICByb3dTZWxlY3Rpb246IHtcclxuICAgICAgICAgIHNlbGVjdGVkUm93S2V5czogdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgICAgICBvblNlbGVjdDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgb25TZWxlY3RBbGw6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3RBbGwuYmluZCh0aGlzKSxcclxuICAgICAgICAgIGNvbHVtbldpZHRoOiA0MCxcclxuICAgICAgICAgIC4uLnJvd1NlbGVjdGlvbixcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgRGVmYXVsdFRhYmxlID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wibnNjLXRhYmxlXCJdfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogPE5vRGF0YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRhYmxlLW5vZGF0YVwiKX0gLz4sXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgc2Nyb2xsPXt7IHg6IFwibWF4LWNvbnRlbnRcIiB9fVxyXG4gICAgICAgICAgey4uLnJlc2l6ZVByb3BzfVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgey4uLmRyYWdhYmxlUHJvcHN9XHJcbiAgICAgICAgICBzaXplPXt0YWJsZVNpemV9XHJcbiAgICAgICAgLz5cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBkcmFnYWJsZSA9PT0gdHJ1ZSA/IChcclxuICAgICAgPERuZFByb3ZpZGVyIGJhY2tlbmQ9e0hUTUw1QmFja2VuZH0+e0RlZmF1bHRUYWJsZX08L0RuZFByb3ZpZGVyPlxyXG4gICAgKSA6IChcclxuICAgICAgRGVmYXVsdFRhYmxlXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5TQ1RhYmxlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7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
|