nodeconfigloder 1.0.0 → 1.0.1

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.
@@ -393,4 +393,4 @@ __webpack_exports__ = __webpack_exports__["default"];
393
393
  /******/ })()
394
394
  ;
395
395
  });
396
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFHLEtBQUssUUFBUSxDQUFDO2FBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSyxLQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2pFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxVQUFVLENBQUMsUUFBaUI7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBQy9FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxhQUFhLENBQUMsUUFBaUI7UUFDN0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRCxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vY29uZmlnbG9kZXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImNyeXB0b1wiIiwid2VicGFjazovL2NvbmZpZ2xvZGVyL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJldmVudHNcIiIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vY29uZmlnbG9kZXIvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2NvbmZpZ2xvZGVyLy4vY29uZmlnbG9kZXIvRmluZERpZmZlcmVuY2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImNvbmZpZ2xvZGVyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImNvbmZpZ2xvZGVyXCJdID0gZmFjdG9yeSgpO1xufSkoZ2xvYmFsLCAoKSA9PiB7XG5yZXR1cm4gIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY3J5cHRvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBleGlzdHMgKGRldmVsb3BtZW50IG9ubHkpXG5cdGlmIChfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgbW9kdWxlSWQgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xyXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcclxuXHJcbi8qKlxyXG4gKiDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7zjga7jg47jg7zjg4nlnotcclxuICovXHJcbmludGVyZmFjZSBIYXNoVHJlZU5vZGUge1xyXG4gIF9faGFzaDogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDlt67liIbjgqTjg5njg7Pjg4jjga7lnotcclxuICovXHJcbmludGVyZmFjZSBEaWZmZXJlbmNlRXZlbnQge1xyXG4gIHR5cGU6ICdhZGRlZCcgfCAncmVtb3ZlZCcgfCAnbW9kaWZpZWQnO1xyXG4gIHBhdGg6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIOWHpueQhuWQjTog5beu5YiG5qSc5Ye644Ko44Oz44K444OzXHJcbiAqXHJcbiAqIOWHpueQhuamguimgTpcclxuICog44OP44OD44K344Ol44OE44Oq44O844KS5L2/55So44GX44GmMuOBpOOBrkpTT07mp4vpgKDjga7lt67liIbjgpLlirnnjofnmoTjgavmpJzlh7rjgZnjgovjgIJcclxuICogRXZlbnRFbWl0dGVy44KS57aZ5om/44GX44CB5beu5YiG44KSJ2RpZmZlcmVuY2Un44Kk44OZ44Oz44OI44Gn6YCa55+lXHJcbiAqXHJcbiAqIOWun+ijheeQhueUsTpcclxuICog5aSn6KaP5qih44Gq6Kit5a6a44OV44Kh44Kk44Or44Gu5aSJ5pu05qSc5Ye644Gr44GK44GE44Gm44CB5YWo5L2T5q+U6LyD44Gn44Gv44Gq44GPXHJcbiAqIOODj+ODg+OCt+ODpeODhOODquODvOOBrua0u+eUqOOBp+ioiOeul+mHj+OCkuacgOWwj+WMluOBmeOCi+OBn+OCgVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZpbmREaWZmZXJlbmNlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgcHJpdmF0ZSBwcmV2aW91c0hhc2hUcmVlOiBIYXNoVHJlZU5vZGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWHpueQhuWQjTog44Kz44Oz44K544OI44Op44Kv44K/XHJcbiAgICpcclxuICAgKiDlh6bnkIbmpoLopoE6XHJcbiAgICogRmluZERpZmZlcmVuY2Vz44Kk44Oz44K544K/44Oz44K544KS5Yid5pyf5YyW44GX44CB5YmN5Zue44Gu44OP44OD44K344Ol44OE44Oq44O844KS56m644Gu54q25oWL44Gn5L+d5oyBXHJcbiAgICpcclxuICAgKiDlrp/oo4XnkIbnlLE6XHJcbiAgICogRXZlbnRFbWl0dGVy44Gu5Yid5pyf5YyW44Go44CB5beu5YiG5qSc5Ye644Gu44Gf44KB44Gu54q25oWL44KS5L+d5oyB44GZ44KL44Gf44KBXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5wcmV2aW91c0hhc2hUcmVlID0geyBfX2hhc2g6ICcnIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlh6bnkIblkI06IOODj+ODg+OCt+ODpeWApOioiOeul1xyXG4gICAqXHJcbiAgICog5Yem55CG5qaC6KaBOlxyXG4gICAqIOS4juOBiOOCieOCjOOBn+WApOOBrlNIQTI1NuODj+ODg+OCt+ODpeOCkuioiOeul+OBmeOCi1xyXG4gICAqXHJcbiAgICog5a6f6KOF55CG55SxOlxyXG4gICAqIOOCquODluOCuOOCp+OCr+ODiOOBruWGheWuueOCkuOCs+ODs+ODkeOCr+ODiOOBq+ihqOePvuOBl+OAgeWkieabtOaknOWHuuOBruWfuuebpOOBqOOBmeOCi+OBn+OCgVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSDjg4/jg4Pjgrfjg6Xlr77osaHjga7lgKRcclxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSDjg4/jg4Pjgrfjg6XmloflrZfliJdcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2FsY3VsYXRlSGFzaCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yem55CG5ZCNOiDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7zmp4vnr4lcclxuICAgKlxyXG4gICAqIOWHpueQhuamguimgTpcclxuICAgKiBKU09O44OH44O844K/44GL44KJ5YaN5biw55qE44Gr44OP44OD44K344Ol44OE44Oq44O844KS5qeL56+J44GZ44KL44CCXHJcbiAgICog5ZCE44OO44O844OJ44Gr44GvX19oYXNo44Kt44O844Gn5b2T6Kmy44OO44O844OJ5Lul5LiL44Gu5aSJ5pu044KS56S644GZ44OP44OD44K344Ol44KS5L+d5oyBXHJcbiAgICpcclxuICAgKiDlrp/oo4XnkIbnlLE6XHJcbiAgICog5beu5YiG5qSc5Ye65pmC44GrX19oYXNo44Gu5q+U6LyD44Gg44GR44Gn5LiL5bGk44Gu5o6i57Si44KS55+t57iu44GZ44KL44Gf44KBXHJcbiAgICogQHBhcmFtIHt1bmtub3dufSBkYXRhIOani+evieWvvuixoeOBruODh+ODvOOCv1xyXG4gICAqIEByZXR1cm5zIHtIYXNoVHJlZU5vZGV9IOODj+ODg+OCt+ODpeODhOODquODvFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZEhhc2hUcmVlKGRhdGE6IHVua25vd24pOiBIYXNoVHJlZU5vZGUge1xyXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fCBkYXRhID09PSBudWxsKSB7XHJcbiAgICAgIC8vIOODl+ODquODn+ODhuOCo+ODluWApOOBruWgtOWQiOOAgeOBneOBruOBvuOBvuODj+ODg+OCt+ODpeWMllxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIF9faGFzaDogdGhpcy5jYWxjdWxhdGVIYXNoKEpTT04uc3RyaW5naWZ5KGRhdGEpKSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAvLyDphY3liJfjga7loLTlkIjjgIHlkITopoHntKDjga7jg4/jg4Pjgrfjg6XlgKTjgpLntZDlkIjjgZfjgabjg4/jg4Pjgrfjg6XljJZcclxuICAgICAgY29uc3QgY2hpbGRIYXNoZXMgPSBkYXRhLm1hcCgoaXRlbSkgPT4gdGhpcy5idWlsZEhhc2hUcmVlKGl0ZW0pKTtcclxuICAgICAgY29uc3QgY29tYmluZWRIYXNoID0gdGhpcy5jYWxjdWxhdGVIYXNoKGNoaWxkSGFzaGVzLm1hcCgoaCkgPT4gaC5fX2hhc2gpLmpvaW4oJycpKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBfX2hhc2g6IGNvbWJpbmVkSGFzaCxcclxuICAgICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoY2hpbGRIYXNoZXMubWFwKChoLCBpKSA9PiBbaS50b1N0cmluZygpLCBoXSkpLFxyXG4gICAgICB9IGFzIEhhc2hUcmVlTm9kZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIChkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS50eXBlKSB7XHJcbiAgICAgIC8vIHR5cGXlgKTjgpLmjIHjgaPjgabjgYTjgotvYmplY3Tjga7loLTlkIjjgIHjgZ3jga7jgb7jgb7jg4/jg4Pjgrfjg6XljJZcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBfX2hhc2g6IHRoaXMuY2FsY3VsYXRlSGFzaChKU09OLnN0cmluZ2lmeShkYXRhKSksXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8g44Kq44OW44K444Kn44Kv44OI44Gu5aC05ZCI44CB44Kt44O844Go5YCk44KS44K944O844OI44GX44Gm44OP44OD44K344Ol5YyWXHJcbiAgICBjb25zdCBjaGlsZEhhc2hlcyA9IE9iamVjdC5rZXlzKGRhdGEpXHJcbiAgICAgIC5zb3J0KClcclxuICAgICAgLnJlZHVjZSgodHJlZTogUmVjb3JkPHN0cmluZywgSGFzaFRyZWVOb2RlPiwga2V5KSA9PiB7XHJcbiAgICAgICAgdHJlZVtrZXldID0gdGhpcy5idWlsZEhhc2hUcmVlKChkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldKTtcclxuICAgICAgICByZXR1cm4gdHJlZTtcclxuICAgICAgfSwge30pO1xyXG5cclxuICAgIGNvbnN0IGNvbWJpbmVkSGFzaCA9IHRoaXMuY2FsY3VsYXRlSGFzaChcclxuICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRIYXNoZXMpXHJcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7dmFsdWUuX19oYXNofWApXHJcbiAgICAgICAgLmpvaW4oJycpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHsgX19oYXNoOiBjb21iaW5lZEhhc2gsIC4uLmNoaWxkSGFzaGVzIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlh6bnkIblkI06IOWJiumZpOODu+abtOaWsOOCreODvOOBruWHpueQhlxyXG4gICAqIEBwYXJhbSB7SGFzaFRyZWVOb2RlfSBoYXNoVHJlZSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcclxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBqc29uRGF0YSBKU09OIOODh+ODvOOCv1xyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIOODkeOCuVxyXG4gICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwcm9jZXNzRXhpc3RpbmdLZXlzKFxyXG4gICAgaGFzaFRyZWU6IEhhc2hUcmVlTm9kZSxcclxuICAgIGpzb25EYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcclxuICAgIHBhdGg6IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaGFzaFRyZWUpIHtcclxuICAgICAgaWYgKGtleSA9PT0gJ19faGFzaCcpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGggPyBgJHtwYXRofS4ke2tleX1gIDoga2V5O1xyXG5cclxuICAgICAgaWYgKCEoa2V5IGluIGpzb25EYXRhKSkge1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZGlmZmVyZW5jZScsIHtcclxuICAgICAgICAgIHR5cGU6ICdyZW1vdmVkJyxcclxuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxyXG4gICAgICAgIH0gYXMgRGlmZmVyZW5jZUV2ZW50KTtcclxuICAgICAgICBkZWxldGUgaGFzaFRyZWVba2V5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByb2Nlc3NLZXlWYWx1ZShoYXNoVHJlZSwganNvbkRhdGEsIGtleSwgY3VycmVudFBhdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlh6bnkIblkI06IOOCreODvOWApOOBruWHpueQhlxyXG4gICAqIEBwYXJhbSB7SGFzaFRyZWVOb2RlfSBoYXNoVHJlZSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcclxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBqc29uRGF0YSBKU09OIOODh+ODvOOCv1xyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkg44Kt44O8XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRQYXRoIOePvuWcqOOBruODkeOCuVxyXG4gICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwcm9jZXNzS2V5VmFsdWUoXHJcbiAgICBoYXNoVHJlZTogSGFzaFRyZWVOb2RlLFxyXG4gICAganNvbkRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxyXG4gICAga2V5OiBzdHJpbmcsXHJcbiAgICBjdXJyZW50UGF0aDogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBqc29uVmFsdWUgPSBqc29uRGF0YVtrZXldO1xyXG4gICAgaWYgKHR5cGVvZiBqc29uVmFsdWUgPT09ICdvYmplY3QnICYmIGpzb25WYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NPYmplY3RWYWx1ZShoYXNoVHJlZSwganNvblZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXksIGN1cnJlbnRQYXRoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc1ByaW1pdGl2ZVZhbHVlKGhhc2hUcmVlLCBqc29uVmFsdWUsIGtleSwgY3VycmVudFBhdGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yem55CG5ZCNOiDjgqrjg5bjgrjjgqfjgq/jg4jlgKTjga7lh6bnkIZcclxuICAgKiBAcGFyYW0ge0hhc2hUcmVlTm9kZX0gaGFzaFRyZWUg44OP44OD44K344Ol44OE44Oq44O8XHJcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0ganNvblZhbHVlIEpTT04g5YCkXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSDjgq3jg7xcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudFBhdGgg54++5Zyo44Gu44OR44K5XHJcbiAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHByb2Nlc3NPYmplY3RWYWx1ZShcclxuICAgIGhhc2hUcmVlOiBIYXNoVHJlZU5vZGUsXHJcbiAgICBqc29uVmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxyXG4gICAga2V5OiBzdHJpbmcsXHJcbiAgICBjdXJyZW50UGF0aDogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoanNvblZhbHVlLnR5cGUpIHtcclxuICAgICAgY29uc3QgbmV3UHJpbWl0aXZlSGFzaCA9IHRoaXMuY2FsY3VsYXRlSGFzaChKU09OLnN0cmluZ2lmeShqc29uVmFsdWUpKTtcclxuICAgICAgaWYgKChoYXNoVHJlZVtrZXldIGFzIEhhc2hUcmVlTm9kZSkuX19oYXNoICE9PSBuZXdQcmltaXRpdmVIYXNoKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdkaWZmZXJlbmNlJywge1xyXG4gICAgICAgICAgdHlwZTogJ21vZGlmaWVkJyxcclxuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxyXG4gICAgICAgIH0gYXMgRGlmZmVyZW5jZUV2ZW50KTtcclxuICAgICAgICAoaGFzaFRyZWVba2V5XSBhcyBIYXNoVHJlZU5vZGUpLl9faGFzaCA9IG5ld1ByaW1pdGl2ZUhhc2g7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghaGFzaFRyZWVba2V5XSB8fCB0eXBlb2YgaGFzaFRyZWVba2V5XSAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgICBoYXNoVHJlZVtrZXldID0geyBfX2hhc2g6ICcnIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maW5kRGlmZmVyZW5jZXNBbmRVcGRhdGUoXHJcbiAgICAgICAgaGFzaFRyZWVba2V5XSBhcyBIYXNoVHJlZU5vZGUsXHJcbiAgICAgICAganNvblZhbHVlLFxyXG4gICAgICAgIGN1cnJlbnRQYXRoXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlh6bnkIblkI06IOODl+ODquODn+ODhuOCo+ODluWApOOBruWHpueQhlxyXG4gICAqIEBwYXJhbSB7SGFzaFRyZWVOb2RlfSBoYXNoVHJlZSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcclxuICAgKiBAcGFyYW0ge3Vua25vd259IGpzb25WYWx1ZSBKU09OIOWApFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkg44Kt44O8XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRQYXRoIOePvuWcqOOBruODkeOCuVxyXG4gICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUHJpbWl0aXZlVmFsdWUoXHJcbiAgICBoYXNoVHJlZTogSGFzaFRyZWVOb2RlLFxyXG4gICAganNvblZhbHVlOiB1bmtub3duLFxyXG4gICAga2V5OiBzdHJpbmcsXHJcbiAgICBjdXJyZW50UGF0aDogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdQcmltaXRpdmVIYXNoID0gdGhpcy5jYWxjdWxhdGVIYXNoKEpTT04uc3RyaW5naWZ5KGpzb25WYWx1ZSkpO1xyXG4gICAgaWYgKChoYXNoVHJlZVtrZXldIGFzIEhhc2hUcmVlTm9kZSkuX19oYXNoICE9PSBuZXdQcmltaXRpdmVIYXNoKSB7XHJcbiAgICAgIHRoaXMuZW1pdCgnZGlmZmVyZW5jZScsIHtcclxuICAgICAgICB0eXBlOiAnbW9kaWZpZWQnLFxyXG4gICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxyXG4gICAgICB9IGFzIERpZmZlcmVuY2VFdmVudCk7XHJcbiAgICAgIChoYXNoVHJlZVtrZXldIGFzIEhhc2hUcmVlTm9kZSkuX19oYXNoID0gbmV3UHJpbWl0aXZlSGFzaDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWHpueQhuWQjTog6L+95Yqg44GV44KM44Gf44Kt44O844Gu5Yem55CGXHJcbiAgICogQHBhcmFtIHtIYXNoVHJlZU5vZGV9IGhhc2hUcmVlIOODj+ODg+OCt+ODpeODhOODquODvFxyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IGpzb25EYXRhIEpTT04g44OH44O844K/XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgg44OR44K5XHJcbiAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHByb2Nlc3NBZGRlZEtleXMoXHJcbiAgICBoYXNoVHJlZTogSGFzaFRyZWVOb2RlLFxyXG4gICAganNvbkRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxyXG4gICAgcGF0aDogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBqc29uRGF0YSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGggPyBgJHtwYXRofS4ke2tleX1gIDoga2V5O1xyXG4gICAgICBpZiAoIShrZXkgaW4gaGFzaFRyZWUpKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdkaWZmZXJlbmNlJywge1xyXG4gICAgICAgICAgdHlwZTogJ2FkZGVkJyxcclxuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxyXG4gICAgICAgIH0gYXMgRGlmZmVyZW5jZUV2ZW50KTtcclxuICAgICAgICBjb25zdCBqc29uVmFsdWUgPSBqc29uRGF0YVtrZXldO1xyXG4gICAgICAgIGhhc2hUcmVlW2tleV0gPVxyXG4gICAgICAgICAgdHlwZW9mIGpzb25WYWx1ZSA9PT0gJ29iamVjdCcgJiYganNvblZhbHVlICE9PSBudWxsXHJcbiAgICAgICAgICAgID8gdGhpcy5idWlsZEhhc2hUcmVlKGpzb25WYWx1ZSlcclxuICAgICAgICAgICAgOiB7IF9faGFzaDogdGhpcy5jYWxjdWxhdGVIYXNoKEpTT04uc3RyaW5naWZ5KGpzb25WYWx1ZSkpIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWHpueQhuWQjTog5beu5YiG5qSc5Ye644Go5pu05pawXHJcbiAgICpcclxuICAgKiDlh6bnkIbmpoLopoE6XHJcbiAgICog5YmN5Zue44Gu44OP44OD44K344Ol44OE44Oq44O844Go5paw44GX44GESlNPTuODh+ODvOOCv+OCkuavlOi8g+OBl+OAgVxyXG4gICAqIOi/veWKoOODu+WJiumZpOODu+abtOaWsOOBleOCjOOBn+ODkeOCueOCkidkaWZmZXJlbmNlJ+OCpOODmeODs+ODiOOBp+mAmuefpVxyXG4gICAqXHJcbiAgICog5a6f6KOF55CG55SxOlxyXG4gICAqIOODj+ODg+OCt+ODpeWApOOBruavlOi8g+OBp+S4jeimgeOBquWGjeW4sOOCkumBv+OBkeOAgeWkieabtOeuh+aJgOOBruOBv+OCkuaknOWHuuOBmeOCi+OBn+OCgVxyXG4gICAqIEBwYXJhbSB7SGFzaFRyZWVOb2RlfSBoYXNoVHJlZSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcclxuICAgKiBAcGFyYW0ge3Vua25vd259IGpzb25EYXRhIEpTT04g44OH44O844K/XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgg44OR44K5XHJcbiAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGZpbmREaWZmZXJlbmNlc0FuZFVwZGF0ZShcclxuICAgIGhhc2hUcmVlOiBIYXNoVHJlZU5vZGUsXHJcbiAgICBqc29uRGF0YTogdW5rbm93bixcclxuICAgIHBhdGggPSAnJ1xyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SGFzaCA9IHRoaXMuY2FsY3VsYXRlSGFzaChKU09OLnN0cmluZ2lmeShqc29uRGF0YSkpO1xyXG4gICAgaWYgKGhhc2hUcmVlLl9faGFzaCA9PT0gbmV3SGFzaCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGpzb25EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG4gICAgdGhpcy5wcm9jZXNzRXhpc3RpbmdLZXlzKGhhc2hUcmVlLCBkYXRhLCBwYXRoKTtcclxuICAgIHRoaXMucHJvY2Vzc0FkZGVkS2V5cyhoYXNoVHJlZSwgZGF0YSwgcGF0aCk7XHJcblxyXG4gICAgKGhhc2hUcmVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5fX2hhc2ggPSB0aGlzLmNhbGN1bGF0ZUhhc2goXHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKGhhc2hUcmVlKVxyXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09ICdfX2hhc2gnKVxyXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fTokeyh2YWx1ZSBhcyBIYXNoVHJlZU5vZGUpLl9faGFzaH1gKVxyXG4gICAgICAgIC5qb2luKCcnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWHpueQhuWQjTog44OP44OD44K344Ol44OE44Oq44O85Yid5pyf5YyWXHJcbiAgICpcclxuICAgKiDlh6bnkIbmpoLopoE6XHJcbiAgICog5Yid5Zue6Kqt44G/6L6844G/5pmC44Gr44OP44OD44K344Ol44OE44Oq44O844KS5qeL56+J44GX44CB5YmN5Zue54q25oWL44Go44GX44Gm5L+d5oyBXHJcbiAgICpcclxuICAgKiDlrp/oo4XnkIbnlLE6XHJcbiAgICog5qyh5Zue44Gu5beu5YiG5qSc5Ye644Gu5Z+65rqW44Go44Gq44KL44OZ44O844K544Op44Kk44Oz44KS5L2c5oiQ44GZ44KL44Gf44KBXHJcbiAgICogQHBhcmFtIHt1bmtub3dufSBqc29uRGF0YSDliJ3lm57jga5KU09O44OH44O844K/XHJcbiAgICogQHJldHVybnMge0hhc2hUcmVlTm9kZX0g5qeL56+J44GV44KM44Gf44OP44OD44K344Ol44OE44Oq44O8XHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShqc29uRGF0YTogdW5rbm93bik6IEhhc2hUcmVlTm9kZSB7XHJcbiAgICByZXR1cm4gKHRoaXMucHJldmlvdXNIYXNoVHJlZSA9IHRoaXMuYnVpbGRIYXNoVHJlZShqc29uRGF0YSkpOyAvLyDliJ3mnJ/jg4/jg4Pjgrfjg6Xjg4Tjg6rjg7zmp4vnr4lcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWHpueQhuWQjTog5beu5YiG5qSc5Ye6XHJcbiAgICpcclxuICAgKiDlh6bnkIbmpoLopoE6XHJcbiAgICog5paw44GX44GESlNPTuODh+ODvOOCv+OBqOWJjeWbnuOBruODj+ODg+OCt+ODpeODhOODquODvOOCkuavlOi8g+OBl+OAgVxyXG4gICAqIOW3ruWIhuOCkuaknOWHuuOBl+OBpidkaWZmZXJlbmNlJ+OCpOODmeODs+ODiOOBp+mAmuefpeOAglxyXG4gICAqIOWGhemDqOeahOOBq+ODj+ODg+OCt+ODpeODhOODquODvOOCkuabtOaWsOOBl+OBpuasoeWbnuaknOWHuuOBq+WCmeOBiOOCi1xyXG4gICAqXHJcbiAgICog5a6f6KOF55CG55SxOlxyXG4gICAqIOODleOCoeOCpOODq+ebo+imluOChOODquOCouODq+OCv+OCpOODoOWkieabtOaknOWHuuOBruOBn+OCgeOAgee2mee2mueahOOBq+W3ruWIhuOCkuaknOWHuuOBmeOCi+OBn+OCgVxyXG4gICAqIEBwYXJhbSB7dW5rbm93bn0ganNvbkRhdGEg5paw44GX44GESlNPTuODh+ODvOOCv1xyXG4gICAqIEByZXR1cm5zIHtIYXNoVHJlZU5vZGV9IOabtOaWsOS4iuOBruODj+ODg+OCt+ODpeODhOODquODvFxyXG4gICAqL1xyXG4gIGRldGVjdENoYW5nZXMoanNvbkRhdGE6IHVua25vd24pOiBIYXNoVHJlZU5vZGUge1xyXG4gICAgdGhpcy5maW5kRGlmZmVyZW5jZXNBbmRVcGRhdGUodGhpcy5wcmV2aW91c0hhc2hUcmVlLCBqc29uRGF0YSk7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aW91c0hhc2hUcmVlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRmluZERpZmZlcmVuY2VzO1xyXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
396
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFHLEtBQUssUUFBUSxDQUFDO2FBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSyxLQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2pFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxVQUFVLENBQUMsUUFBaUI7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBQy9FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxhQUFhLENBQUMsUUFBaUI7UUFDN0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRCxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vY29uZmlnbG9kZXIvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImNyeXB0b1wiIiwid2VicGFjazovL2NvbmZpZ2xvZGVyL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJldmVudHNcIiIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vY29uZmlnbG9kZXIvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9jb25maWdsb2Rlci93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2NvbmZpZ2xvZGVyLy4vY29uZmlnbG9kZXIvRmluZERpZmZlcmVuY2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImNvbmZpZ2xvZGVyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImNvbmZpZ2xvZGVyXCJdID0gZmFjdG9yeSgpO1xufSkoZ2xvYmFsLCAoKSA9PiB7XG5yZXR1cm4gIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY3J5cHRvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBleGlzdHMgKGRldmVsb3BtZW50IG9ubHkpXG5cdGlmIChfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgbW9kdWxlSWQgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbi8qKlxuICog44OP44OD44K344Ol44OE44Oq44O844Gu44OO44O844OJ5Z6LXG4gKi9cbmludGVyZmFjZSBIYXNoVHJlZU5vZGUge1xuICBfX2hhc2g6IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiDlt67liIbjgqTjg5njg7Pjg4jjga7lnotcbiAqL1xuaW50ZXJmYWNlIERpZmZlcmVuY2VFdmVudCB7XG4gIHR5cGU6ICdhZGRlZCcgfCAncmVtb3ZlZCcgfCAnbW9kaWZpZWQnO1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICog5Yem55CG5ZCNOiDlt67liIbmpJzlh7rjgqjjg7Pjgrjjg7NcbiAqXG4gKiDlh6bnkIbmpoLopoE6XG4gKiDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7zjgpLkvb/nlKjjgZfjgaYy44Gk44GuSlNPTuani+mAoOOBruW3ruWIhuOCkuWKueeOh+eahOOBq+aknOWHuuOBmeOCi+OAglxuICogRXZlbnRFbWl0dGVy44KS57aZ5om/44GX44CB5beu5YiG44KSJ2RpZmZlcmVuY2Un44Kk44OZ44Oz44OI44Gn6YCa55+lXG4gKlxuICog5a6f6KOF55CG55SxOlxuICog5aSn6KaP5qih44Gq6Kit5a6a44OV44Kh44Kk44Or44Gu5aSJ5pu05qSc5Ye644Gr44GK44GE44Gm44CB5YWo5L2T5q+U6LyD44Gn44Gv44Gq44GPXG4gKiDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7zjga7mtLvnlKjjgafoqIjnrpfph4/jgpLmnIDlsI/ljJbjgZnjgovjgZ/jgoFcbiAqL1xuZXhwb3J0IGNsYXNzIEZpbmREaWZmZXJlbmNlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHByaXZhdGUgcHJldmlvdXNIYXNoVHJlZTogSGFzaFRyZWVOb2RlO1xuXG4gIC8qKlxuICAgKiDlh6bnkIblkI06IOOCs+ODs+OCueODiOODqeOCr+OCv1xuICAgKlxuICAgKiDlh6bnkIbmpoLopoE6XG4gICAqIEZpbmREaWZmZXJlbmNlc+OCpOODs+OCueOCv+ODs+OCueOCkuWIneacn+WMluOBl+OAgeWJjeWbnuOBruODj+ODg+OCt+ODpeODhOODquODvOOCkuepuuOBrueKtuaFi+OBp+S/neaMgVxuICAgKlxuICAgKiDlrp/oo4XnkIbnlLE6XG4gICAqIEV2ZW50RW1pdHRlcuOBruWIneacn+WMluOBqOOAgeW3ruWIhuaknOWHuuOBruOBn+OCgeOBrueKtuaFi+OCkuS/neaMgeOBmeOCi+OBn+OCgVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnByZXZpb3VzSGFzaFRyZWUgPSB7IF9faGFzaDogJycgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlh6bnkIblkI06IOODj+ODg+OCt+ODpeWApOioiOeul1xuICAgKlxuICAgKiDlh6bnkIbmpoLopoE6XG4gICAqIOS4juOBiOOCieOCjOOBn+WApOOBrlNIQTI1NuODj+ODg+OCt+ODpeOCkuioiOeul+OBmeOCi1xuICAgKlxuICAgKiDlrp/oo4XnkIbnlLE6XG4gICAqIOOCquODluOCuOOCp+OCr+ODiOOBruWGheWuueOCkuOCs+ODs+ODkeOCr+ODiOOBq+ihqOePvuOBl+OAgeWkieabtOaknOWHuuOBruWfuuebpOOBqOOBmeOCi+OBn+OCgVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg44OP44OD44K344Ol5a++6LGh44Gu5YCkXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IOODj+ODg+OCt+ODpeaWh+Wtl+WIl1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVIYXNoKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWHpueQhuWQjTog44OP44OD44K344Ol44OE44Oq44O85qeL56+JXG4gICAqXG4gICAqIOWHpueQhuamguimgTpcbiAgICogSlNPTuODh+ODvOOCv+OBi+OCieWGjeW4sOeahOOBq+ODj+ODg+OCt+ODpeODhOODquODvOOCkuani+evieOBmeOCi+OAglxuICAgKiDlkITjg47jg7zjg4njgavjga9fX2hhc2jjgq3jg7zjgaflvZPoqbLjg47jg7zjg4nku6XkuIvjga7lpInmm7TjgpLnpLrjgZnjg4/jg4Pjgrfjg6XjgpLkv53mjIFcbiAgICpcbiAgICog5a6f6KOF55CG55SxOlxuICAgKiDlt67liIbmpJzlh7rmmYLjgatfX2hhc2jjga7mr5TovIPjgaDjgZHjgafkuIvlsaTjga7mjqLntKLjgpLnn63nuK7jgZnjgovjgZ/jgoFcbiAgICogQHBhcmFtIHt1bmtub3dufSBkYXRhIOani+evieWvvuixoeOBruODh+ODvOOCv1xuICAgKiBAcmV0dXJucyB7SGFzaFRyZWVOb2RlfSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRIYXNoVHJlZShkYXRhOiB1bmtub3duKTogSGFzaFRyZWVOb2RlIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IGRhdGEgPT09IG51bGwpIHtcbiAgICAgIC8vIOODl+ODquODn+ODhuOCo+ODluWApOOBruWgtOWQiOOAgeOBneOBruOBvuOBvuODj+ODg+OCt+ODpeWMllxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX19oYXNoOiB0aGlzLmNhbGN1bGF0ZUhhc2goSlNPTi5zdHJpbmdpZnkoZGF0YSkpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgLy8g6YWN5YiX44Gu5aC05ZCI44CB5ZCE6KaB57Sg44Gu44OP44OD44K344Ol5YCk44KS57WQ5ZCI44GX44Gm44OP44OD44K344Ol5YyWXG4gICAgICBjb25zdCBjaGlsZEhhc2hlcyA9IGRhdGEubWFwKChpdGVtKSA9PiB0aGlzLmJ1aWxkSGFzaFRyZWUoaXRlbSkpO1xuICAgICAgY29uc3QgY29tYmluZWRIYXNoID0gdGhpcy5jYWxjdWxhdGVIYXNoKGNoaWxkSGFzaGVzLm1hcCgoaCkgPT4gaC5fX2hhc2gpLmpvaW4oJycpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9faGFzaDogY29tYmluZWRIYXNoLFxuICAgICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoY2hpbGRIYXNoZXMubWFwKChoLCBpKSA9PiBbaS50b1N0cmluZygpLCBoXSkpLFxuICAgICAgfSBhcyBIYXNoVHJlZU5vZGU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikudHlwZSkge1xuICAgICAgLy8gdHlwZeWApOOCkuaMgeOBo+OBpuOBhOOCi29iamVjdOOBruWgtOWQiOOAgeOBneOBruOBvuOBvuODj+ODg+OCt+ODpeWMllxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX19oYXNoOiB0aGlzLmNhbGN1bGF0ZUhhc2goSlNPTi5zdHJpbmdpZnkoZGF0YSkpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyDjgqrjg5bjgrjjgqfjgq/jg4jjga7loLTlkIjjgIHjgq3jg7zjgajlgKTjgpLjgr3jg7zjg4jjgZfjgabjg4/jg4Pjgrfjg6XljJZcbiAgICBjb25zdCBjaGlsZEhhc2hlcyA9IE9iamVjdC5rZXlzKGRhdGEpXG4gICAgICAuc29ydCgpXG4gICAgICAucmVkdWNlKCh0cmVlOiBSZWNvcmQ8c3RyaW5nLCBIYXNoVHJlZU5vZGU+LCBrZXkpID0+IHtcbiAgICAgICAgdHJlZVtrZXldID0gdGhpcy5idWlsZEhhc2hUcmVlKChkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldKTtcbiAgICAgICAgcmV0dXJuIHRyZWU7XG4gICAgICB9LCB7fSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEhhc2ggPSB0aGlzLmNhbGN1bGF0ZUhhc2goXG4gICAgICBPYmplY3QuZW50cmllcyhjaGlsZEhhc2hlcylcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7dmFsdWUuX19oYXNofWApXG4gICAgICAgIC5qb2luKCcnKVxuICAgICk7XG4gICAgcmV0dXJuIHsgX19oYXNoOiBjb21iaW5lZEhhc2gsIC4uLmNoaWxkSGFzaGVzIH07XG4gIH1cblxuICAvKipcbiAgICog5Yem55CG5ZCNOiDliYrpmaTjg7vmm7TmlrDjgq3jg7zjga7lh6bnkIZcbiAgICogQHBhcmFtIHtIYXNoVHJlZU5vZGV9IGhhc2hUcmVlIOODj+ODg+OCt+ODpeODhOODquODvFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBqc29uRGF0YSBKU09OIOODh+ODvOOCv1xuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCDjg5HjgrlcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NFeGlzdGluZ0tleXMoXG4gICAgaGFzaFRyZWU6IEhhc2hUcmVlTm9kZSxcbiAgICBqc29uRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgcGF0aDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGhhc2hUcmVlKSB7XG4gICAgICBpZiAoa2V5ID09PSAnX19oYXNoJykgY29udGludWU7XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGggPyBgJHtwYXRofS4ke2tleX1gIDoga2V5O1xuXG4gICAgICBpZiAoIShrZXkgaW4ganNvbkRhdGEpKSB7XG4gICAgICAgIHRoaXMuZW1pdCgnZGlmZmVyZW5jZScsIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3ZlZCcsXG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGgsXG4gICAgICAgIH0gYXMgRGlmZmVyZW5jZUV2ZW50KTtcbiAgICAgICAgZGVsZXRlIGhhc2hUcmVlW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2Nlc3NLZXlWYWx1ZShoYXNoVHJlZSwganNvbkRhdGEsIGtleSwgY3VycmVudFBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDlh6bnkIblkI06IOOCreODvOWApOOBruWHpueQhlxuICAgKiBAcGFyYW0ge0hhc2hUcmVlTm9kZX0gaGFzaFRyZWUg44OP44OD44K344Ol44OE44Oq44O8XG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IGpzb25EYXRhIEpTT04g44OH44O844K/XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkg44Kt44O8XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50UGF0aCDnj77lnKjjga7jg5HjgrlcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NLZXlWYWx1ZShcbiAgICBoYXNoVHJlZTogSGFzaFRyZWVOb2RlLFxuICAgIGpzb25EYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjdXJyZW50UGF0aDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGpzb25WYWx1ZSA9IGpzb25EYXRhW2tleV07XG4gICAgaWYgKHR5cGVvZiBqc29uVmFsdWUgPT09ICdvYmplY3QnICYmIGpzb25WYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5wcm9jZXNzT2JqZWN0VmFsdWUoaGFzaFRyZWUsIGpzb25WYWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5LCBjdXJyZW50UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2Vzc1ByaW1pdGl2ZVZhbHVlKGhhc2hUcmVlLCBqc29uVmFsdWUsIGtleSwgY3VycmVudFBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDlh6bnkIblkI06IOOCquODluOCuOOCp+OCr+ODiOWApOOBruWHpueQhlxuICAgKiBAcGFyYW0ge0hhc2hUcmVlTm9kZX0gaGFzaFRyZWUg44OP44OD44K344Ol44OE44Oq44O8XG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IGpzb25WYWx1ZSBKU09OIOWApFxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IOOCreODvFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudFBhdGgg54++5Zyo44Gu44OR44K5XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzT2JqZWN0VmFsdWUoXG4gICAgaGFzaFRyZWU6IEhhc2hUcmVlTm9kZSxcbiAgICBqc29uVmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGtleTogc3RyaW5nLFxuICAgIGN1cnJlbnRQYXRoOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgaWYgKGpzb25WYWx1ZS50eXBlKSB7XG4gICAgICBjb25zdCBuZXdQcmltaXRpdmVIYXNoID0gdGhpcy5jYWxjdWxhdGVIYXNoKEpTT04uc3RyaW5naWZ5KGpzb25WYWx1ZSkpO1xuICAgICAgaWYgKChoYXNoVHJlZVtrZXldIGFzIEhhc2hUcmVlTm9kZSkuX19oYXNoICE9PSBuZXdQcmltaXRpdmVIYXNoKSB7XG4gICAgICAgIHRoaXMuZW1pdCgnZGlmZmVyZW5jZScsIHtcbiAgICAgICAgICB0eXBlOiAnbW9kaWZpZWQnLFxuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxuICAgICAgICB9IGFzIERpZmZlcmVuY2VFdmVudCk7XG4gICAgICAgIChoYXNoVHJlZVtrZXldIGFzIEhhc2hUcmVlTm9kZSkuX19oYXNoID0gbmV3UHJpbWl0aXZlSGFzaDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFoYXNoVHJlZVtrZXldIHx8IHR5cGVvZiBoYXNoVHJlZVtrZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBoYXNoVHJlZVtrZXldID0geyBfX2hhc2g6ICcnIH07XG4gICAgICB9XG4gICAgICB0aGlzLmZpbmREaWZmZXJlbmNlc0FuZFVwZGF0ZShcbiAgICAgICAgaGFzaFRyZWVba2V5XSBhcyBIYXNoVHJlZU5vZGUsXG4gICAgICAgIGpzb25WYWx1ZSxcbiAgICAgICAgY3VycmVudFBhdGhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWHpueQhuWQjTog44OX44Oq44Of44OG44Kj44OW5YCk44Gu5Yem55CGXG4gICAqIEBwYXJhbSB7SGFzaFRyZWVOb2RlfSBoYXNoVHJlZSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcbiAgICogQHBhcmFtIHt1bmtub3dufSBqc29uVmFsdWUgSlNPTiDlgKRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSDjgq3jg7xcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRQYXRoIOePvuWcqOOBruODkeOCuVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1ByaW1pdGl2ZVZhbHVlKFxuICAgIGhhc2hUcmVlOiBIYXNoVHJlZU5vZGUsXG4gICAganNvblZhbHVlOiB1bmtub3duLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGN1cnJlbnRQYXRoOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbmV3UHJpbWl0aXZlSGFzaCA9IHRoaXMuY2FsY3VsYXRlSGFzaChKU09OLnN0cmluZ2lmeShqc29uVmFsdWUpKTtcbiAgICBpZiAoKGhhc2hUcmVlW2tleV0gYXMgSGFzaFRyZWVOb2RlKS5fX2hhc2ggIT09IG5ld1ByaW1pdGl2ZUhhc2gpIHtcbiAgICAgIHRoaXMuZW1pdCgnZGlmZmVyZW5jZScsIHtcbiAgICAgICAgdHlwZTogJ21vZGlmaWVkJyxcbiAgICAgICAgcGF0aDogY3VycmVudFBhdGgsXG4gICAgICB9IGFzIERpZmZlcmVuY2VFdmVudCk7XG4gICAgICAoaGFzaFRyZWVba2V5XSBhcyBIYXNoVHJlZU5vZGUpLl9faGFzaCA9IG5ld1ByaW1pdGl2ZUhhc2g7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWHpueQhuWQjTog6L+95Yqg44GV44KM44Gf44Kt44O844Gu5Yem55CGXG4gICAqIEBwYXJhbSB7SGFzaFRyZWVOb2RlfSBoYXNoVHJlZSDjg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0ganNvbkRhdGEgSlNPTiDjg4fjg7zjgr9cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgg44OR44K5XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzQWRkZWRLZXlzKFxuICAgIGhhc2hUcmVlOiBIYXNoVHJlZU5vZGUsXG4gICAganNvbkRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHBhdGg6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBqc29uRGF0YSkge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmICghKGtleSBpbiBoYXNoVHJlZSkpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdkaWZmZXJlbmNlJywge1xuICAgICAgICAgIHR5cGU6ICdhZGRlZCcsXG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGgsXG4gICAgICAgIH0gYXMgRGlmZmVyZW5jZUV2ZW50KTtcbiAgICAgICAgY29uc3QganNvblZhbHVlID0ganNvbkRhdGFba2V5XTtcbiAgICAgICAgaGFzaFRyZWVba2V5XSA9XG4gICAgICAgICAgdHlwZW9mIGpzb25WYWx1ZSA9PT0gJ29iamVjdCcgJiYganNvblZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICA/IHRoaXMuYnVpbGRIYXNoVHJlZShqc29uVmFsdWUpXG4gICAgICAgICAgICA6IHsgX19oYXNoOiB0aGlzLmNhbGN1bGF0ZUhhc2goSlNPTi5zdHJpbmdpZnkoanNvblZhbHVlKSkgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Yem55CG5ZCNOiDlt67liIbmpJzlh7rjgajmm7TmlrBcbiAgICpcbiAgICog5Yem55CG5qaC6KaBOlxuICAgKiDliY3lm57jga7jg4/jg4Pjgrfjg6Xjg4Tjg6rjg7zjgajmlrDjgZfjgYRKU09O44OH44O844K/44KS5q+U6LyD44GX44CBXG4gICAqIOi/veWKoOODu+WJiumZpOODu+abtOaWsOOBleOCjOOBn+ODkeOCueOCkidkaWZmZXJlbmNlJ+OCpOODmeODs+ODiOOBp+mAmuefpVxuICAgKlxuICAgKiDlrp/oo4XnkIbnlLE6XG4gICAqIOODj+ODg+OCt+ODpeWApOOBruavlOi8g+OBp+S4jeimgeOBquWGjeW4sOOCkumBv+OBkeOAgeWkieabtOeuh+aJgOOBruOBv+OCkuaknOWHuuOBmeOCi+OBn+OCgVxuICAgKiBAcGFyYW0ge0hhc2hUcmVlTm9kZX0gaGFzaFRyZWUg44OP44OD44K344Ol44OE44Oq44O8XG4gICAqIEBwYXJhbSB7dW5rbm93bn0ganNvbkRhdGEgSlNPTiDjg4fjg7zjgr9cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgg44OR44K5XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kRGlmZmVyZW5jZXNBbmRVcGRhdGUoXG4gICAgaGFzaFRyZWU6IEhhc2hUcmVlTm9kZSxcbiAgICBqc29uRGF0YTogdW5rbm93bixcbiAgICBwYXRoID0gJydcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbmV3SGFzaCA9IHRoaXMuY2FsY3VsYXRlSGFzaChKU09OLnN0cmluZ2lmeShqc29uRGF0YSkpO1xuICAgIGlmIChoYXNoVHJlZS5fX2hhc2ggPT09IG5ld0hhc2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0ganNvbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgdGhpcy5wcm9jZXNzRXhpc3RpbmdLZXlzKGhhc2hUcmVlLCBkYXRhLCBwYXRoKTtcbiAgICB0aGlzLnByb2Nlc3NBZGRlZEtleXMoaGFzaFRyZWUsIGRhdGEsIHBhdGgpO1xuXG4gICAgKGhhc2hUcmVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5fX2hhc2ggPSB0aGlzLmNhbGN1bGF0ZUhhc2goXG4gICAgICBPYmplY3QuZW50cmllcyhoYXNoVHJlZSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+IGtleSAhPT0gJ19faGFzaCcpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fTokeyh2YWx1ZSBhcyBIYXNoVHJlZU5vZGUpLl9faGFzaH1gKVxuICAgICAgICAuam9pbignJylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOWHpueQhuWQjTog44OP44OD44K344Ol44OE44Oq44O85Yid5pyf5YyWXG4gICAqXG4gICAqIOWHpueQhuamguimgTpcbiAgICog5Yid5Zue6Kqt44G/6L6844G/5pmC44Gr44OP44OD44K344Ol44OE44Oq44O844KS5qeL56+J44GX44CB5YmN5Zue54q25oWL44Go44GX44Gm5L+d5oyBXG4gICAqXG4gICAqIOWun+ijheeQhueUsTpcbiAgICog5qyh5Zue44Gu5beu5YiG5qSc5Ye644Gu5Z+65rqW44Go44Gq44KL44OZ44O844K544Op44Kk44Oz44KS5L2c5oiQ44GZ44KL44Gf44KBXG4gICAqIEBwYXJhbSB7dW5rbm93bn0ganNvbkRhdGEg5Yid5Zue44GuSlNPTuODh+ODvOOCv1xuICAgKiBAcmV0dXJucyB7SGFzaFRyZWVOb2RlfSDmp4vnr4njgZXjgozjgZ/jg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcbiAgICovXG4gIGluaXRpYWxpemUoanNvbkRhdGE6IHVua25vd24pOiBIYXNoVHJlZU5vZGUge1xuICAgIHJldHVybiAodGhpcy5wcmV2aW91c0hhc2hUcmVlID0gdGhpcy5idWlsZEhhc2hUcmVlKGpzb25EYXRhKSk7IC8vIOWIneacn+ODj+ODg+OCt+ODpeODhOODquODvOani+eviVxuICB9XG5cbiAgLyoqXG4gICAqIOWHpueQhuWQjTog5beu5YiG5qSc5Ye6XG4gICAqXG4gICAqIOWHpueQhuamguimgTpcbiAgICog5paw44GX44GESlNPTuODh+ODvOOCv+OBqOWJjeWbnuOBruODj+ODg+OCt+ODpeODhOODquODvOOCkuavlOi8g+OBl+OAgVxuICAgKiDlt67liIbjgpLmpJzlh7rjgZfjgaYnZGlmZmVyZW5jZSfjgqTjg5njg7Pjg4jjgafpgJrnn6XjgIJcbiAgICog5YaF6YOo55qE44Gr44OP44OD44K344Ol44OE44Oq44O844KS5pu05paw44GX44Gm5qyh5Zue5qSc5Ye644Gr5YKZ44GI44KLXG4gICAqXG4gICAqIOWun+ijheeQhueUsTpcbiAgICog44OV44Kh44Kk44Or55uj6KaW44KE44Oq44Ki44Or44K/44Kk44Og5aSJ5pu05qSc5Ye644Gu44Gf44KB44CB57aZ57aa55qE44Gr5beu5YiG44KS5qSc5Ye644GZ44KL44Gf44KBXG4gICAqIEBwYXJhbSB7dW5rbm93bn0ganNvbkRhdGEg5paw44GX44GESlNPTuODh+ODvOOCv1xuICAgKiBAcmV0dXJucyB7SGFzaFRyZWVOb2RlfSDmm7TmlrDkuIrjga7jg4/jg4Pjgrfjg6Xjg4Tjg6rjg7xcbiAgICovXG4gIGRldGVjdENoYW5nZXMoanNvbkRhdGE6IHVua25vd24pOiBIYXNoVHJlZU5vZGUge1xuICAgIHRoaXMuZmluZERpZmZlcmVuY2VzQW5kVXBkYXRlKHRoaXMucHJldmlvdXNIYXNoVHJlZSwganNvbkRhdGEpO1xuICAgIHJldHVybiB0aGlzLnByZXZpb3VzSGFzaFRyZWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmluZERpZmZlcmVuY2VzO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==